#gradle #junit #localhost #wiremock
#gradle #junit #localhost #wiremock
Вопрос:
Попытка выполнить ./gradlew clean build
для проекта, который использует gradle-3.5
.
Вывод версии Java;
fuat@fuatk ~$ java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~20.04-b01)
OpenJDK 64-Bit Server VM (build 25.275-b01, mixed mode)
К сожалению, gradle IntegrationTest завершается с ошибкой;
Connect to localhost:8080 [localhost/173.231.189.26] failed: Connection timed out (Connection timed out)
org.apache.http.conn.HttpHostConnectException: Connect to localhost:8080 [localhost/173.231.189.26] failed: Connection timed out (Connection timed out)
И проверьте порты;
fuat@fuatk ~$ netstat -antlp | grep 8080
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::8080 :::* LISTEN 1951584/java
tcp6 0 1 192.168.1.52:34828 173.231.189.26:8080 SYN_SENT 1951584/java
При проверке PID
fuat 1951584 18.2 1.7 7264112 290640 ? Sl 17:48 0:09 /usr/lib/jvm/java-8-openjdk-amd64/bin/java -Djava.security.manager=worker.org.gradle.process.internal.worker.child.BootstrapSecurityManager -javaagent:build/tmp/expandedArchives/org.jacoco.agent-0.7.8.jar_d3iqxhtsa3la0meo6vii2mvcc/jacocoagent.jar=destfile=build/jacoco/integrationTest.exec,append=true,inclnolocationclasses=false,dumponexit=true,output=file,jmx=false -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -ea -cp /home/fuat/.gradle/caches/3.5-rc-2/workerMain/gradle-worker.jar worker.org.gradle.process.internal.worker.GradleWorkerMain 'Gradle Test Executor 2'
И тестовый класс;
@RunWith(MockitoJUnitRunner.class)
public class PublicHolidayServiceGatewayTest {
@Rule
public final WireMockRule wireMockRule = new WireMockRule();
@Mock
private Configuration configuration;
@Before
public void setup() {
final Collaborator collaborator = new Collaborator();
collaborator.setUri("http://localhost:8080");
when(configuration.getCollaborator()).thenReturn(collaborator);
}
@Test
public void calculateWorkadaysShouldReturnWorkDaysCount_WhenServiceCallSucceeded() {
final LocalDate from = LocalDate.of(2018, Month.SEPTEMBER, 29);
final LocalDate to = LocalDate.of(2018, Month.NOVEMBER, 5);
final String responseBody = "{"count":69}";
stubFor(get(urlMatching("/publicholidays/2018-09-29/2018-11-05"))
.willReturn(aResponse())
.withStatus(200).withBody(responseBody)));
final PublicHolidayService publicHolidayService = new PublicHolidayServiceGateway(new DefaultAsyncHttpClient(), configuration);
final Either<GatewayException, WorkDaysCountDto> workDaysCountDto = publicHolidayService.calculateWorkDays(from, to);
assertThat(workDaysCountDto.isLeft(), is(Boolean.FALSE));
}
}
Использование Wiremock 2.1.6
amp; Junit 4.12
.
Также вывод файла hosts;
fuat@fuatk ~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 fuatk
18.213.137.78 registry-1.docker.io
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Вопрос в том, почему я это вижу Connect to localhost:8080 [localhost/173.231.189.26] failed
?
Разве это не должно быть похоже Connect to localhost:8080 [localhost/127.0.0.1] failed
?
Комментарии:
1. Что произойдет, если вы это сделаете
ping localhost
? Какие-либо признаки этого 173… IP-адрес в/etc/hosts
?2. Когда
ping localhost
он возвращается, этоPING localhost.domains (173.231.189.26) 56(84) bytes of data.
и зависает. Но нет никакого IP-адреса, начинающегося с 173… в/etc/hosts
.3. Это может помочь: askubuntu.com/questions/347152 /… Я бы предположил, что ваша машина сначала переходит к DNS, а
/etc/hosts
не , и добавляет.domains
к неквалифицированному имени хостаlocalhost
. (IP-адрес дляlocalhost.domains
«в Интернете» — 173.231.189.26.)4. Да, это решило мою проблему. Большое спасибо. Я разрабатываю микросервисы, и мне пришлось бороться со всеми URL-адресами локального хостинга. Если вы ответите на вопрос, я согласен.
5. На самом деле, теперь я кое-что заметил, я подключаюсь к VPN с помощью SNX, и это изменяет настройки локального DNS.