|
|
|
failsave + cargo + интеграционный тест
|
|||
|---|---|---|---|
|
#18+
Всем привет! Была задача написать интеграционный для главноего метода контроллера веб-сервиса. Изощраться не стал, в 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 и тест проходил на зелёнку. То есть дело в порте.... Буду признателен за помощь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 13:07 |
|
||
|
failsave + cargo + интеграционный тест
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 13:13 |
|
||
|
failsave + cargo + интеграционный тест
|
|||
|---|---|---|---|
|
#18+
спасибо за ответ! выяснил что порт по умолчанию 8080 уже обрадовался пару раз тест не падал, после очередного раза опять упал на 404 статусе, в логах томката когда происходил его стоп было что тушится именно порт 8080... теперь уже не ясно а в порте ли дело вообще( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2014, 15:38 |
|
||
|
failsave + cargo + интеграционный тест
|
|||
|---|---|---|---|
|
#18+
для лучшего контроля над ситуацией переписал тест таким образом 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, деуйствительно поднимаются нужные те что заменил в конфиге контейнера, ставил на дебаг когда локальный томкат уже стартанул и отправлял через браузер тестовый запрос - наблюдался белый фон ответа не приходило просто висяк. Как будто чтото лочит ответ от веб-приложения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 17:22 |
|
||
|
failsave + cargo + интеграционный тест
|
|||
|---|---|---|---|
|
#18+
проблема решилась, вернул мавеновский плагины дописал пару настроек портов <configuration> <properties> <cargo.servlet.port>8088</cargo.servlet.port> <cargo.rmi.port>8109</cargo.rmi.port> </properties> </configuration> и всё заработало) правда теперь встала проблема с настройками конеекта к базе, которые вынесли в сервер.кфг томката, и приложение на локальном томкате не деплоится изза того что не создаются бины датасоурса в контексте, теперь осталось придумать как подсовывать нужный конфиг локальному томкату при каждой его загрузке, потому что он имеет свойство перезаписывать сам себя после каждого 2-3 запуска теста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2014, 18:16 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38817240&tid=2126184]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 196ms |
| total: | 448ms |

| 0 / 0 |
