This queue is for tickets about the Test-Smoke CPAN distribution.

Report information
The Basics
Id:
132642
Status:
stalled
Priority:
Low/Low
Queue:

People
Owner:
Nobody in particular
Requestors:
jkeenan [...] pobox.com
Cc:
AdminCc:

BugTracker
Severity:
(no value)
Broken in:
(no value)
Fixed in:
(no value)



CC: skaji@cpan.org, Olaf Alders <olaf.alders@gmail.com>, Slaven Rezic <slaven@rezic.de>
Subject: t/poster-post.t breaks when HTTP::Daemon 6.05 or 6.06 is installed
Date: Sat, 16 May 2020 17:01:39 -0400
To: bug-Test-Smoke@rt.cpan.org
From: James E Keenan <jkeenan@pobox.com>
Please be aware of the following github issues and pull requests which have an impact on Test-Smoke's test suite. https://github.com/libwww-perl/HTTP-Daemon/issues/37 https://github.com/libwww-perl/HTTP-Daemon/issues/38 https://github.com/libwww-perl/HTTP-Daemon/pull/40 The presenting problem: If HTTP::Daemon version 6.05 or 6.06 is installed on a machine, and if I then go to a recent (e.g., 1.74) version of Test-Smoke's test suite, t/poster-post.t FAILs as described in the first URL above and also as being reported at http://matrix.cpantesters.org/?dist=Test-Smoke. This was debugged by Slaven Rezic, Olaf Anders and myself as appearing at a point in HTTP-Daemon's development history where its dependency on IO::Socket::INET was swapped out in favor of IO::Socket::IP (https://github.com/libwww-perl/HTTP-Daemon/commit/2d396b841e6d6b754d6563f7091fecef947bd249). Some comments in t/poster-post.t suggest that this problem was encountered at some point in the creation of that test file and that a workaround was implemented. With HTTP::Daemon now depending on IO::Socket::IP, that workaround no longer works. In the second URL above, Shoichi Kaji investigated the problem and provided test scripts to diagnose the bug better. In the third URL above he has initiated a pull request which so far appears to correct the problem in HTTP::Daemon. However, I have not yet had the opportunity to re-run Test-Smoke's test suite with this patch. Test-Smoke maintainers should follow these tickets and anticipate a new CPAN release of HTTP::Daemon. I ask that you then revise t/poster-post.t as needed. Thank you very much. Jim Keenan
On Sat May 16 17:01:49 2020, jkeenan@pobox.com wrote:
Show quoted text
> Please be aware of the following github issues and pull requests which > have an impact on Test-Smoke's test suite.
Show quoted text
> [snip] > > Test-Smoke maintainers should follow these tickets and anticipate a > new > CPAN release of HTTP::Daemon. I ask that you then revise > t/poster-post.t as needed. >
At https://github.com/jkeenan/Test-Smoke/tree/adapt-t-poster-post, you will find a branch of Test-Smoke which is rebased on Test-Smoke-1.77 and which eliminates the "workaround" in t/poster-post.t. I then built Test-Smoke against bleadperl. I then ran t/poster-post.t using the patched version of HTTP::Daemon proposed by skaji in https://github.com/libwww-perl/HTTP-Daemon/pull/40. I got different results on different operating systems. On FreeBSD-11, I got: ##### $ bleadprove -I/usr/home/jkeenan/learn/perl/HTTP-Daemon-6.07-patched/lib -vb t/poster-post.t t/poster-post.t .. # HTTP::Daemon 6.07_001 # HTTP::Response 6.22 # Temporary daemon at: http://[::1]:36990/ # LWP::UserAgent 6.44 ok 1 - An object of class 'Test::Smoke::Poster::LWP_UserAgent' isa 'Test::Smoke::Poster::LWP_UserAgent' ok 2 - write_json ok 3 - Got id ok 4 - An object of class 'Test::Smoke::Poster::Curl' isa 'Test::Smoke::Poster::Curl' ok 5 - write_json ok 6 - Got id # HTTP::Tiny 0.076 ok 7 - An object of class 'Test::Smoke::Poster::HTTP_Tiny' isa 'Test::Smoke::Poster::HTTP_Tiny' ok 8 - write_json ok 9 - Got id # HTTP::Lite 2.44 ok 10 - An object of class 'Test::Smoke::Poster::HTTP_Lite' isa 'Test::Smoke::Poster::HTTP_Lite' ok 11 - write_json not ok 12 - Got id # Failed test 'Got id' # at t/poster-post.t line 171. # got: '[]: CoreSmokeDB: at t/poster-post.t line 169. # at /usr/home/jkeenan/gitwork/zzzothers/Test-Smoke/blib/lib/Test/Smoke/Poster/Base.pm line 147. # Test::Smoke::Poster::Base::post(Test::Smoke::Poster::HTTP_Lite=HASH(0x801c61be8)) called at t/poster-post.t line 169 # eval {...} called at t/poster-post.t line 169 # ' # expected: '42' not ok 13 - no warnings # Failed test 'no warnings' # at t/poster-post.t line 176. # There were 1 warning(s) # Previous test 11 'write_json' # Use of uninitialized value $response_body in concatenation (.) or string at /usr/home/jkeenan/gitwork/zzzothers/Test-Smoke/blib/lib/Test/Smoke/Poster/Base.pm line 147. # at /usr/home/jkeenan/gitwork/zzzothers/Test-Smoke/blib/lib/Test/Smoke/Poster/Base.pm line 147. # Test::Smoke::Poster::Base::post(Test::Smoke::Poster::HTTP_Lite=HASH(0x801c61be8)) called at t/poster-post.t line 169 # eval {...} called at t/poster-post.t line 169 # 1..13 # tear down: 97685 # Looks like you failed 2 tests of 13. Dubious, test returned 2 (wstat 512, 0x200) Failed 2/13 subtests Test Summary Report ------------------- t/poster-post.t (Wstat: 512 Tests: 13 Failed: 2) Failed tests: 12-13 Non-zero exit status: 2 Files=1, Tests=13, 0 wallclock secs ( 0.05 usr 0.02 sys + 0.30 cusr 0.05 csys = 0.42 CPU) Result: FAIL ##### Note the URL for the temporary daemon, which I believe indicates IPV6 is being used. Note that all of the test blocks in t/poster-post.t now PASS *except* those based on HTTP::Lite. I got the same results on Linux. However, when I followed the same approach on OpenBSD -- where, I must stress, I am using a VM rather than bare-metal and where I have not tempered any of the VM author's default settings -- I got (a) a different output for the temporary daemon -- one suggesting IPV4; but (b) no test failures in any block. ##### [openbsd66: Test-Smoke] $ bleadprove -I/home/jkeenan/learn/perl/HTTP-Daemon-6.07-patched/lib -vb t/> t/poster-post.t .. # HTTP::Daemon 6.07_001 # HTTP::Response 6.24 # Temporary daemon at: http://127.0.0.1:9845/ # LWP::UserAgent 6.44 ok 1 - An object of class 'Test::Smoke::Poster::LWP_UserAgent' isa 'Test::Smoke::Poster::LWP_UserAgent' ok 2 - write_json ok 3 - Got id ok 4 - An object of class 'Test::Smoke::Poster::Curl' isa 'Test::Smoke::Poster::Curl' ok 5 - write_json ok 6 - Got id # HTTP::Tiny 0.076 ok 7 - An object of class 'Test::Smoke::Poster::HTTP_Tiny' isa 'Test::Smoke::Poster::HTTP_Tiny' ok 8 - write_json ok 9 - Got id # HTTP::Lite 2.44 ok 10 - An object of class 'Test::Smoke::Poster::HTTP_Lite' isa 'Test::Smoke::Poster::HTTP_Lite' ok 11 - write_json ok 12 - Got id ok 13 - no warnings 1..13 # tear down: 55710 ok All tests successful. Files=1, Tests=13, 1 wallclock secs ( 0.05 usr 0.02 sys + 0.39 cusr 0.23 csys = 0.69 CPU) Result: PASS ##### I have never used HTTP::Lite outside the context of its use in Test-Smoke's test suite, so I cannot say why it appears to "work" on OpenBSD and not on Linux or FreeBSD or why it appears to "work" with IPV4 but not IPV6. Thank you very much. Jim Keenan
Thanks for reporting this Jim! I have changed my work-around for HTTP::Daemon <= 6.07 and hope $daemon->url is usable from 6.08 on... I am considering dropping support for HTTP::Lite all together, it's not a very good module and the bug we're experiencing with IPv6 was reported 6 years ago, so I don't think that will be fixed. And we have HTTP::Tiny in core now, so there is actually no need to support multiple HTTP-clients anymore. I will put out a beta-release and see how the smokers are doing. Again, many thanks for championing this issue + good luck, on behalf of the CoreSmokeTeam, -- Abe.
RT-Send-CC: slaven@rezic.de, skaji@cpan.org, olaf.alders@gmail.com
On Mon May 18 11:11:18 2020, ABELTJE wrote:
Show quoted text
> Thanks for reporting this Jim! >
CC-ing other relevant parties. changed my work-around for HTTP::Daemon <= 6.07 and hope
Show quoted text
> $daemon->url is usable from 6.08 on... > > I am considering dropping support for HTTP::Lite all together, it's > not a very good module and the bug we're experiencing with IPv6 was > reported 6 years ago, so I don't think that will be fixed. And we have > HTTP::Tiny in core now, so there is actually no need to support > multiple HTTP-clients anymore. >
Yes, I think that you should definitely drop support for HTTP::Lite ASAP, then seriously consider dropping support for the other non-core modules. After all, everyone who uses or will use Test::Smoke by definition is familiar with the Perl 5 core distribution.
Show quoted text
> I will put out a beta-release and see how the smokers are doing. > > Again, many thanks for championing this issue + > good luck, > > on behalf of the CoreSmokeTeam, > > -- Abe.
Thanks for your attention to this. Jim Keenan
Hi Jim, Support for HTTP::Lite is dropped, I will leave support for LWP and curl as HTTP::Tiny is 5.14 and the Test::Smoke minimal perl version is 5.10. I see some issues with my fix, but cannot figure them out, more diagnostics in the next dev-release 1.77_02 Awaiting the results from the cpan-smokers... Thanks again for following up on this issue + good luck, On behalf of the TestSmokeTeam, -- Abe.


This service runs on Request Tracker, is sponsored by The Perl Foundation, and maintained by Best Practical Solutions.

Please report any issues with rt.cpan.org to rt-cpan-admin@bestpractical.com.