[
https://issues.apache.org/jira/browse/NUTCH-3066?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17881598#comment-17881598
]
ASF GitHub Bot commented on NUTCH-3066:
---------------------------------------
sebastian-nagel merged PR #824:
URL: https://github.com/apache/nutch/pull/824
> Protocol plugin unit tests fail randomly
> ----------------------------------------
>
> Key: NUTCH-3066
> URL: https://issues.apache.org/jira/browse/NUTCH-3066
> Project: Nutch
> Issue Type: Bug
> Components: plugin, protocol, test
> Affects Versions: 1.20
> Reporter: Sebastian Nagel
> Assignee: Sebastian Nagel
> Priority: Major
> Fix For: 1.21
>
>
> The HTTP protocol plugin unit tests may fail at random. The reasons are:
> - the unit tests run the test web server delivering test pages using the same
> port (inherited from AbstractHttpProtocolPluginTest)
> - the plugin unit tests are executed in parallel (two concurrent threads)
> From time to time two tests try to launch a web server listening on the same
> port. This consequently causes a failure, e.g. in a [GitHub
> workflow|https://github.com/apache/nutch/actions/runs/10728348673/job/29752702091?pr=823#step:4:7667]:
> {noformat}
> [junit] Tests run: 14, Failures: 1, Errors: 0, Skipped: 4, Time elapsed:
> 4.735 sec
> [junit] Test org.apache.nutch.protocol.okhttp.TestBadServerResponses FAILED
> {noformat}
> The error message in
> (TEST-org.apache.nutch.protocol.http.TestBadServerResponses.txt, from a local
> test run):
> {noformat}
> 2024-09-06 08:36:32,549 INFO o.a.n.p.AbstractHttpProtocolPluginTest
> [Thread-3] Socket on port 47505 closed: Address already in use (Bind failed)
> 2024-09-06 08:36:32,550 INFO o.a.n.p.AbstractHttpProtocolPluginTest
> [Thread-2] Socket on port 47505 closed: Socket closed
> 2024-09-06 08:36:32,599 INFO o.a.n.p.AbstractHttpProtocolPluginTest [main]
> Fetching http://127.0.0.1:47505/
> 2024-09-06 08:36:32,600 ERROR o.a.n.p.h.Http [main] Failed to get protocol
> output
> java.net.ConnectException: Connection refused (Connection refused)
> {noformat}
> Possible solutions:
> 1. do not run plugin unit tests in parallel.
> -- Note: the parallelism does not save a lot of time. A test run on my
> laptop: 6'19'' (2 threads, failed) vs. 6'55'' (1 thread, success)
> 2. override the port in each unit test and
> -- ensure that a unique port number is used. Note: manually assigning
> unique numbers is difficult to maintain when new tests are added.
> -- or choose a random port number (making collisions unlikely)
> 3. try another port if one is already in use
--
This message was sent by Atlassian Jira
(v8.20.10#820010)