powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / failsave + cargo + интеграционный тест
5 сообщений из 5, страница 1 из 1
failsave + cargo + интеграционный тест
    #38817240
jjackass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Была задача написать интеграционный для главноего метода контроллера веб-сервиса. Изощраться не стал, в pom.xml подключил плагины failsafe и cargo с такими настройками:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.12</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.codehaus.cargo</groupId>
<artifactId>cargo-maven2-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<container>
<containerId>tomcat7x</containerId>
<zipUrlInstaller>
<url> http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.zip
</url>
<downloadDir>${project.build.directory}/downloads</downloadDir>
<extractDir>${project.build.directory}/extracts</extractDir>
</zipUrlInstaller>
</container>
</configuration>
<executions>
<execution>
<id>start-tomcat</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop-tomcat</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>

То есть всё просто на первый взгляд и кое как работало. В самом тесте я просто кидаю GET-запрос на свой же локальный томкат и ожидаю получить в ответ статус ОК. Когда с командной строки прописываю mvn verify наблюдаю процесс деплоя локального томката cargo - никаких проблем но тест проваливается по таймауту. И тут возникает вопрос: родной томкат у меня имеет порт 8084, какой тогда порт у cargo-tomcat, как и где это можно посмотреть? получается я ломлюсь скорее всего на свой потушенный томкат. Эксперимента ради поднимал боевой, запускал verify и тест проходил на зелёнку. То есть дело в порте.... Буду признателен за помощь
...
Рейтинг: 0 / 0
failsave + cargo + интеграционный тест
    #38817248
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
failsave + cargo + интеграционный тест
    #38817483
jjackass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за ответ! выяснил что порт по умолчанию 8080 уже обрадовался пару раз тест не падал, после очередного раза опять упал на 404 статусе, в логах томката когда происходил его стоп было что тушится именно порт 8080... теперь уже не ясно а в порте ли дело вообще(
...
Рейтинг: 0 / 0
failsave + cargo + интеграционный тест
    #38818626
jjackass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для лучшего контроля над ситуацией переписал тест таким образом

public class ControllerTestIT {

InstalledLocalContainer container;

@Before
public void setUp() throws MalformedURLException {


Installer installer = new ZipURLInstaller(
new URL(" http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.52/bin/apache-tomcat-7.0.52.zip"));
installer.install();


LocalConfiguration configuration = (LocalConfiguration) new DefaultConfigurationFactory().createConfiguration(
"tomcat7x", ContainerType.INSTALLED, ConfigurationType.STANDALONE);
configuration.getProperties().remove(ServletPropertySet.PORT);

configuration.getProperties().put(ServletPropertySet.PORT, "8088");
configuration.getProperties().remove(GeneralPropertySet.RMI_PORT);
configuration.getProperties().put(GeneralPropertySet.RMI_PORT, "8109");

InstalledLocalContainer container =
(InstalledLocalContainer) new DefaultContainerFactory().createContainer(
"tomcat7x", ContainerType.INSTALLED, configuration);
container.setHome(installer.getHome());

configuration.addDeployable(new WAR("./target/BLWS_v1-0.22-SNAPSHOT.war"));


// (4) Start the container
try {
container.start();
} catch (Exception ex) {
System.out.println(ex);
}
}

@After
public void tearDown() {
container.stop();
}
private static final String URL = " http://localhost:8088/blws_v1/bl/test";

@Test
public void testIfAppIsUp() throws IOException {

RestTemplate template = new RestTemplate();
template.setRequestFactory(new SimpleClientHttpRequestFactory());
assertEquals(HttpStatus.OK, template.getForEntity(URL, null).getStatusCode());
}
}

Мониторил порты с помощью TCPview, деуйствительно поднимаются нужные те что заменил в конфиге контейнера, ставил на дебаг когда локальный томкат уже стартанул и отправлял через браузер тестовый запрос - наблюдался белый фон ответа не приходило просто висяк. Как будто чтото лочит ответ от веб-приложения
...
Рейтинг: 0 / 0
failsave + cargo + интеграционный тест
    #38818706
jjackass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема решилась, вернул мавеновский плагины дописал пару настроек портов
<configuration>
<properties>
<cargo.servlet.port>8088</cargo.servlet.port>
<cargo.rmi.port>8109</cargo.rmi.port>
</properties>
</configuration>

и всё заработало)

правда теперь встала проблема с настройками конеекта к базе, которые вынесли в сервер.кфг томката, и приложение на локальном томкате не деплоится изза того что не создаются бины датасоурса в контексте, теперь осталось придумать как подсовывать нужный конфиг локальному томкату при каждой его загрузке, потому что он имеет свойство перезаписывать сам себя после каждого 2-3 запуска теста...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / failsave + cargo + интеграционный тест
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]