Teamcity counts the same test twice and more times

Hello!

I'm using Teamcity 5.0 build 10181.

I have Maven 2 build configuration which run following goals: clean integration-test emma:emma. During project building some tests executes 2 times, but all Surefire reports in target/surefire-reports directory are correct.
But on Projects page after build configuration Run Teamcity shows 2-3 times more tests than actually exists in surefire-reports. Tests page contains 2-3 copies of the same test, sometimes with different Durations.
I've tried to adjust XML Report Processing section of Maven 2 build configuration page by choosing:
Import data from: Surefire
Report paths: target/surefire-reports/*.xml
but nothing changed.

How fix this?

Thank you,
Bulat Nigmatullin

24 comments
Comment actions Permalink

If you are using Maven runner do not use data import from the Surefire, because runner will do it itself. Import should only be used if runner failed to determine tests at all.

0
Comment actions Permalink

No.
This is the data from TeamCity dedicated machine.

$ mvn --version
Maven version: 2.0.8
Java version: 1.6.0_06
OS name: "linux" version: "2.6.24-16-server" arch: "i386" Family: "unix"


$ ls .m2/repository/org/apache/maven/plugins/maven-surefire-plugin
2.4.3  maven-metadata-central.xml  maven-metadata-central.xml.sha1


As you can see, the latest 2.4.3 version of Maven Surefire plugin used.
0
Comment actions Permalink

I don't use data import, but problem is the same.

0
Comment actions Permalink

Is it the full build log or a snippet? If the latter please provide the full one.

0
Comment actions Permalink

Sorry. Disregard the previous message. I've seen that this is really a full log

0
Comment actions Permalink

According to your log, your tests were executed twice: the first time during running the intergration-test goal and the second time during the emma:emma goal.
So they were reported twice as they should.

So what do you think is wrong with that?

0
Comment actions Permalink

Surefire reports in target/surefire-reports directory are correct and contains no duplicates. I want to see them.

0
Comment actions Permalink

Is it possible to configure Teamcity look only to surefire-reports for tests results.

0
Comment actions Permalink

TeamCity looks right into surefire reports for test result. And it looks into there each time a test suite is executed. Since you run the tests twice TeamCity looked into surefire reports twice. You see no duplicates because the first-run reports are overwritten with the second execution.

0
Comment actions Permalink

1. Do you think this is right usecase for TeamCity. Maybe it should be switched just to one lookup to surefire-reports after Maven execution ends?
2. I'm trying to create workaround by choosing Command Line Build runner and configuring XML Report Processing. But TeamCity complains "Cannot run process: Cannot run program "/usr/bin/mvn clean integration-test emma:emma" (in directory "/home/bulatnig/agent/work/e0d7ab60bbc5d9d8"): java.io.IOException: error=2, No such file or directory"


P.S. Can you speak russian? It'll be more convenient for me.



Attachment(s):
jabber_Core_Trunk_Build_49.log.zip
0
Comment actions Permalink

Sure, I can.

1. Do you think this is right usecase for TeamCity. Maybe it should be switched just to one lookup to surefire-reports after Maven execution ends?

Мы полагаем правильным сообщать о каждом факте выполнения какого-либо теста хотя бы из тех соображений что один тест может выполниться дважды с разными результатами.

У меня, собственно, ответный вопрос: зачем Вы запускаете тесты два раза? Не достаточно ли было бы запустить просто mvn clean compile emma:emma, например?

2. I'm trying to create workaround by choosing Command Line Build runner and configuring XML Report Processing. But TeamCity complains "Cannot run process: Cannot run program "/usr/bin/mvn clean integration-test emma:emma" (in directory "/home/bulatnig/agent/work/e0d7ab60bbc5d9d8"): java.io.IOException: error=2, No such file or directory"

По всей видимости это означает что агент не смог найти файл /usr/bin/mvn. Убедитесь, что он там присутствует и доступен для пользователя, под которым запущен агент.

0
Comment actions Permalink

1. В модуле у нас присутствует 2 вида тестов: JUnit и JUnit4OSGi (интеграционные) . Последние выполняются при вызове integration-test. При этом подгружаются все зависимости модуля, OSGi runtime и он запускается в практически полностью рабочем серверном окружении.
emma:emma - это Code Coverage Reporter, она инструментирует тесты и потом генерирует отчет по покрытию кода тестами. Думаю, Вы и так это прекрасно знаете.
Проблема в том, что integration-test по Maven Build Lifecycle находится далеко после compile, поэтому приходится прогонять тесты два раза.

2. Этим же пользователем захожу в указанную work директорию - все работает.
TeamCity же жалуется: Cannot run process: Cannot run program "/usr/share/maven22/bin/mvn clean integration-test emma:emma" (in directory "/home/bulatnig/agent/work/e0d7ab60bbc5d9d8"): java.io.IOException: error=2, No such file or directory

0
Comment actions Permalink

Я хочу сразу оговориться, что мы у себя Maven не используем. Поэтому не удивляйтесь моим вопросам. Я легко могу и не знать о каких-то особенностях его работы.

А что если попробовать запустить junit4osgi напрямую, что-то типа mvn test-compile junit4osgi:test emma:emma? Насколько я понимаю это не приведет к автоматическому запуску юнит-тестов.
Таким образом у Вас сначала пройдут только OSGI тесты, а потом emma запустит обычные.


Что касается пункта 2, попробуйте написать /bin/sh -c "/usr/share/maven22/bin/mvn ..."

0
Comment actions Permalink

1. Попробовал mvn clean compile emma:emma org.apache.felix:maven-junit4osgi-plugin:test
Жалуется на то, что ему нужен jar. Т.е. проект должен предварительно собраться как минимум на уровне package и выдать результирующий jar, только потом можно будет вызвать junit4osgi. Но если изменить на "mvn clean package emma:emma ...", то получим, что junit'ы выполняются два раза.

Можно ли добавить такой usecase:
Я указываю Build runner: Maven2. И если указываю XML Report Processing, то TeamCity смотрит результаты тестов только после выполнения Maven.

2.

Build errors

[18:12:29]: Cannot run process: Cannot run program "/bin/sh -c "/usr/share/maven22/bin/mvn clean integration-test emma:emma"" (in directory "/home/bulatnig/agent/work/e0d7ab60bbc5d9d8"): java.io.IOException: error=2, No such file or directory
0
Comment actions Permalink

1. Ну если дело только в jar-e, то можно всю эту солянку дополнить вызовом jar:jar после compile.

Для Maven2 runner использование XML Report Processing вообще бессмысленно, поскольку во-первых runner делает все сам (и это не отключить), а во вторых XML Report Processing ведет себя абсолютно так же, так как он слушает файловую систему. То есть он выдаст и первый результат прохождения тестов сразу же, как только онаружит отчеты.

2. Здесь я, право, теряюсь в догадках. Попробуйте в качестве эксперимента вызвать еще какую-нибудь команду (типа ls или чего-угодно). Посмотрим что получится.

0
Comment actions Permalink

1. Сделал следующие изменения:
Goals: clean emma:emma org.apache.felix:maven-scr-plugin:scr org.apache.felix:maven-bundle-plugin:bundle org.apache.felix:maven-junit4osgi-plugin:test

Все выполняет верно, но результаты, сгенеренные junit4osgi, не видит, хотя они находятся рядом с остальными, жалуется "No surefire report found for suites: [My OSGi test suite]":

$ ls agent/work/e0d7ab60bbc5d9d8/target/surefire-reports/
ru.rambler.xmpp.server.core.cluster.ExternalizableUtilTest.txt
ru.rambler.xmpp.server.core.cm.JDBCPgPersistenceManagerImplTest.txt
ru.rambler.xmpp.server.core.packet.JIDTest.txt
ru.rambler.xmpp.server.core.sasl.impl.SaslServiceImplTest.txt
ru.rambler.xmpp.server.core.sasl.SaslStatusTest.txt
ru.rambler.xmpp.server.util.jid.EscapingTest.txt
ru.rambler.xmpp.server.util.xml.impl.PiccoloXMPPPacketReaderTest.txt
TEST-My_OSGi_test_suite.xml
TEST-ru.rambler.xmpp.server.core.cluster.ExternalizableUtilTest.xml
TEST-ru.rambler.xmpp.server.core.cm.JDBCPgPersistenceManagerImplTest.xml
TEST-ru.rambler.xmpp.server.core.packet.JIDTest.xml
TEST-ru.rambler.xmpp.server.core.sasl.impl.SaslServiceImplTest.xml
TEST-ru.rambler.xmpp.server.core.sasl.SaslStatusTest.xml
TEST-ru.rambler.xmpp.server.util.jid.EscapingTest.xml
TEST-ru.rambler.xmpp.server.util.xml.impl.PiccoloXMPPPacketReaderTest.xml


Добавил полный лог сборки.


2. Я сглупил, там ясно все написано, работает так:
Command executable: mvn
Command parameters: clean integration-test emma:emma

Настроил XML Report Processing, видит и обычные JUnit и JUnit4OSGi тесты, но не видит пропущенные (@Ignore) тесты. Отображает, будто все тесты завершились ок, хотя в reports написано:
...
<testcase time="0.026" classname="ru.rambler.xmpp.server.core.cm.JDBCPgPersistenceManagerImplTest" name="ru.rambler.xmpp.server.core.cm.JDBCPgPersistenceManagerImplTest">
    <skipped/>
  </testcase>
...
Это то как он отображает тесты на вкладке Tests. 4-я строчка "cm (..." выглядит какой-то кашей. Похоже на багу.







P.S. Вообще второй вариант мне видится предпочтительнее, так как он вроде попроще. Сама задача немного изменилась, мне необходимо начать новую тему?


Attachment(s):
jabber_Core_Trunk_Build_60.log.zip
0
Comment actions Permalink

Можем продолжить здесь.

То, что TeamCity не видит My OSGi test suite это просто баг в Maven2 runner. Его не научили заменять пробелы на подчеркивание при попытке посмотреть отчет. Это я исправлю.
А вот проблема с @Ignore это уже баг в XML Report Processing .


В общем, завтра я смогу прислать патч, где первая проблема будет устранена.
Тогда XML Report Processing можно будет отключить.

Годится?

0
Comment actions Permalink

Да!

А есть ли какая-нибудь возможность отследить, когда будет пофиксен XML Report Processing?

0
Comment actions Permalink

Да!

Пришлите письмо на teamcity-feedback@jetbrains.com, я вышлю патч не обратный адрес.

А есть ли какая-нибудь возможность отследить, когда будет пофиксен XML Report Processing?

http://www.jetbrains.net/tracker/issue/TW-9343
Надо завести аккаунт и стать watcher'ом.

0
Comment actions Permalink

Bulat,

could you, please, attach full XML report, which brought about results given in the table.

0
Comment actions Permalink

Yes, it is. Thanks!
Please see http://www.jetbrains.net/tracker/issue/TW-9343 , it seems to be fixed.

0

Please sign in to leave a comment.