2015-10-16 2 views
1

Я пытаюсь получить видимость flaky тестов, работающих в Jenkins.Jenkins, Junit и Flaky Test Handler плагин

Для этого я установил https://wiki.jenkins-ci.org/display/JENKINS/Flaky+Test+Handler+Plugin, который, похоже, имеет эту цель.

Все требования, указанные на странице плагина выполняются с помощью моей установки (Jenkins версии, Junit плагин, и т.д ...)

После установки плагина, то предлагаю

check on “Publish JUnit flaky test reports” under “Additional test report features.

и их скриншот показывает

enter image description here

Мой Maven проекта конф iguration не дает мне возможность указать на Test Report XMLs, и выглядит как это вместо:

enter image description here

Хотя, когда я бегу Дженкинс построить для сконфигурированной проекта, все это я получаю пустой таблица:

enter image description here

Построить раздел конфигурации проекта используется параметр -Dsurefire.rerunFailingTestsCount=3.

Я немного смущен, не работает ли плагин с моей установкой Jenkins или что-то не хватает.

EDIT: Я пытался версию 1.0.3, которая содержит исправления, упомянутые в одном из ответов, и в конце выполнения задания я получаю следующую ошибку:

ERROR: Publisher 'Publish JUnit test result report' aborted due to exception: 
java.io.IOException: Unable to serialize [email protected]e9 
    at hudson.remoting.UserRequest.serialize(UserRequest.java:169) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:129) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:49) 
    at hudson.remoting.Request$2.run(Request.java:326) 
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at ......remote call to some.slave.com(Native Method) 
    at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1413) 
    at hudson.remoting.UserResponse.retrieve(UserRequest.java:221) 
    at hudson.remoting.Channel.call(Channel.java:778) 
    at com.google.jenkins.flakyTestHandler.plugin.JUnitFlakyTestDataPublisher.getTestData(JUnitFlakyTestDataPublisher.java:49) 
    at hudson.tasks.junit.TestDataPublisher.contributeTestData(TestDataPublisher.java:62) 
    at hudson.tasks.junit.JUnitResultArchiver.perform(JUnitResultArchiver.java:166) 
    at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:75) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:726) 
    at hudson.model.Build$BuildExecution.post2(Build.java:185) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:671) 
    at hudson.model.Run.execute(Run.java:1766) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:98) 
    at hudson.model.Executor.run(Executor.java:408) 
Caused by: java.io.NotSerializableException: com.google.jenkins.flakyTestHandler.junit.FlakyCaseResult$FlakyRunInformation 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
    at java.util.ArrayList.writeObject(ArrayList.java:762) 
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
    at java.util.ArrayList.writeObject(ArrayList.java:762) 
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
    at java.util.ArrayList.writeObject(ArrayList.java:762) 
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) 
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) 
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) 
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) 
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) 
    at hudson.remoting.UserRequest._serialize(UserRequest.java:158) 
    at hudson.remoting.UserRequest.serialize(UserRequest.java:167) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:129) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:49) 
    at hudson.remoting.Request$2.run(Request.java:326) 
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

Кажется, что это происходит только тогда, когда задание выполняется на подчиненном устройстве, оно, похоже, отлично работает на главном компьютере.

EDIT 2: 1.0.4 исправил проблему выше.

EDIT 3: Даже если 1.0.4 исправили проблему сериализации, отчетность плагин до сих пор, кажется, сломана. В следующей ситуации, например:

wrong reporting

  • работа # 21 побежал успешно
  • работа # 22 RAN и имел один слоеное испытания, которые прошли на второй заход
  • работа # 23 проходила успешно

В отчете о проекте говорится, что есть один пробный тест с одним хлопком, 0 неудач и 0 проходов. Я ожидал бы 2 прохода, 0 неудач и 1 хлопья вместо.

Я что-то упустил?

ответ

2

У меня была та же проблема. При просмотре мастер-журналов оказалось, что плагин не ожидает выполнения строкой на ведомых устройствах. Там же тянуть запрос, который устраняет проблему для меня - https://github.com/jenkinsci/flaky-test-handler-plugin/pull/2

+0

Пожалуйста, вы можете принести решение здесь? – manetsus

+0

@bezda, я пробовал 1.0.3, который должен включать ваш запрос на тяну, и теперь я получаю новую ошибку, описанную в нижней части моего первоначального сообщения. Любая идея, что это может быть вызвано? – supercalifragilistichespirali

+0

@bezda, 1.0.4 исправления, которые вызывают вопрос – supercalifragilistichespirali

2

Если я правильно помню, мы определяем слоеного теста быть:

Для той же ревизии кода, это и не удается, и проходит.

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

Если вы внесли некоторые изменения и представили другую версию, а затем опираясь на нее, то это будет новый номер.

Я считаю, что если вы нажмете тест, вы увидите подробные пропуски/сбои, что вы хотите?

см https://wiki.jenkins-ci.org/display/JENKINS/Flaky+Test+Handler+Plugin «Агрегирование Тесты Статистика над редакциями»

+0

Спасибо за объяснение. – supercalifragilistichespirali