reports generation defect - infinite execution

77 views
Skip to first unread message

Dmitriy Grablyov

unread,
Nov 4, 2015, 10:07:53 AM11/4/15
to Serenity BDD Users Group
Hi, John.

I've noticed that sometimes during report generation one of the test outcomes fail with error and this causes infinite process execution.
My current serenity core version is 1.1.5 though I noticed on github that the last code base contains the same logic.

Typically next error occurs:
Exception in thread "pool-2-thread-1" net.thucydides.core.reports.ReportGenerationFailedError: Failed to generate reports using net.thucydides.core.reports.html.HtmlAcceptanceTestReporter@2d691f3d
        at net
.thucydides.core.reports.ReportService.generateReportFor(ReportService.java:183)
        at net
.thucydides.core.reports.ReportService.access$100(ReportService.java:23)
        at net
.thucydides.core.reports.ReportService$1.run(ReportService.java:114)
        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)
Caused by: java.io.IOException: Unsupported image type
        at net
.thucydides.core.images.SimpleImageInfo.processStream(SimpleImageInfo.java:63)
        at net
.thucydides.core.images.SimpleImageInfo.<init>(SimpleImageInfo.java:44)
        at net
.thucydides.core.images.ResizableImage.<init>(ResizableImage.java:33)
        at net
.thucydides.core.images.ResizableImage.loadFrom(ResizableImage.java:37)
        at net
.thucydides.core.reports.html.HtmlAcceptanceTestReporter.maxHeightOf(HtmlAcceptanceTestReporter.java:233)
        at net
.thucydides.core.reports.html.HtmlAcceptanceTestReporter.maxScreenshotHeightIn(HtmlAcceptanceTestReporter.java:226)
        at net
.thucydides.core.reports.html.HtmlAcceptanceTestReporter.expandScreenshots(HtmlAcceptanceTestReporter.java:193)
        at net
.thucydides.core.reports.html.HtmlAcceptanceTestReporter.generateScreenshotReportsFor(HtmlAcceptanceTestReporter.java:178)
        at net
.thucydides.core.reports.html.HtmlAcceptanceTestReporter.generateReportFor(HtmlAcceptanceTestReporter.java:88)
        at net
.thucydides.core.reports.ReportService.generateReportFor(ReportService.java:181)

From the source code of https://github.com/serenity-bdd/serenity-core/blob/dc6c68e81a9031efb416658a0d355c48819aed4c/serenity-core/src/main/java/net/thucydides/core/reports/ReportService.java

I see that method generateReportFor(final TestOutcome testOutcome, final TestOutcomes allTestOutcomes, final AcceptanceTestReporter reporter) rethrows new exception after catchin IO exception
That means that Runnable fails to finish at line 113 
generateReportFor(outcome, testOutcomes, reporter);
and for the current test outcome line 114
remainingReportCount.decrementAndGet();
is not executed.

Finally this leads to the fact that waitForReportGenerationToFinish method goes to an infinite loop since after failure described above reportCount variable never decrements to zero.

I hope that this info is sufficient for determining and fixing the problem, nevertheless please feel free to ask me for any additional info which may be helpful for investigation.

Best Regards,
Dmytro Grablov

Reply all
Reply to author
Forward
0 new messages