[ 
https://issues.apache.org/jira/browse/THRIFT-4594?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Christopher Friedt updated THRIFT-4594:
---------------------------------------
    Description: 
It seems that the lib/cpp/test suite is broken in the 0.11.0 tagged release 
because this fails in Ubuntu Bionic and inside of an Alpine Linux 3.8 Docker 
container.

I would have thought all test suites would pass for tagged releases.

In any case, I've narrowed the culprits down to the non-portable (NP) class of 
Mutex initializers. The failure occurs in unpatched code (and obviously in my 
CI build recipe, attached).

I'd rather not speculate at this point exactly why this problem is happening. 
Currently my patching just disables those tests undonditionally, but there 
should probably be a better solution used in the end. E.g. better .m4 testing 
for non-portable pthread features - if they are actually functional or just 
stubs.

Currently, I'm working on automating builds of thrift for Alpine Linux 3.8, and 
they will likely require "make check" to pass successfully in future versions. 
Might as well ensure it works now.

If you want to duplicate my build easily in Docker, you can use the attachment 
(e.g. tar xpvzf thrift-ci-build-20180627.tar.xz; cd thrift-20180627; docker 
build -t foo .)

{noformat}
make check
...
make[5]: Entering directory '/home/cfriedt/Desktop/thrift-20180627/lib/cpp/test'
 Running 54 test cases...
 An error message from getaddrinfo on the console is expected:
 Thrift: Wed Jun 27 20:16:03 2018 getaddrinfo -2: Name or service not known
 * 
 ** 
 *** No errors detected
 PASS: UnitTests
 Running 2 test cases...
 Thrift: Wed Jun 27 20:16:10 2018 ~TFDTransport TTransportException: 
'TFDTransport::close(): Bad file descriptor'

 * 
 ** 
 *** No errors detected
 PASS: TFDTransportTest
 Running 1 test case...

 * 
 ** 
 *** No errors detected
 PASS: TPipedTransportTest
 Running 3 test cases...

 * 
 ** 
 *** No errors detected
 PASS: DebugProtoTest
 Running 11 test cases...

 * 
 ** 
 *** No errors detected
 PASS: JSONProtoTest
 Running 17 test cases...

 * 
 ** 
 *** No errors detected
 PASS: OptionalRequiredTest
 Running 4 test cases...

 * 
 ** 
 *** No errors detected
 PASS: RecursiveTest
 Running 1 test case...

 * 
 ** 
 *** No errors detected
 PASS: SpecializationTest
 Running 3 test cases...
 TBinaryProtocol => OK
 TLEBinaryProtocol => OK
 TCompactProtocol => OK

 * 
 ** 
 *** No errors detected
 PASS: AllProtocolsTest
 Running 285 test cases...
 Timeout alarm expired; attempting to unblock transport
 Timeout alarm expired; attempting to unblock transport
 Timeout alarm expired; attempting to unblock transport
 Timeout alarm expired; attempting to unblock transport
 Timeout alarm expired; attempting to unblock transport
 ^CMakefile:1436: recipe for target 'check-TESTS' failed
 make[5]: *** [check-TESTS] Interrupt
 Makefile:1559: recipe for target 'check-am' failed
 make[4]: *** [check-am] Interrupt
 Makefile:1562: recipe for target 'check' failed
 make[3]: *** [check] Interrupt
 Makefile:1658: recipe for target 'check-recursive' failed
 make[2]: *** [check-recursive] Interrupt
 Makefile:580: recipe for target 'check-recursive' failed
 make[1]: *** [check-recursive] Interrupt
 Makefile:663: recipe for target 'check-recursive' failed
 make: *** [check-recursive] Interrupt
{noformat}

  was:
It seems that the lib/cpp/test suite is broken in the 0.11.0 tagged release 
because this fails in Ubuntu Bionic and inside of an Alpine Linux 3.8 Docker 
container.

I would have thought all test suites would pass for tagged releases.

In any case, I've narrowed the culprits down to the non-portable (NP) class of 
Mutex initializers. The failure occurs in unpacked code (and obviously in my CI 
build recipe, attached).

I'd rather not speculate at this point exactly why this problem is happening. 
Currently my patching just disables those tests undonditionally, but there 
should probably be a better solution used in the end. E.g. better .m4 testing 
for non-portable pthread features - if they are actually functional or just 
stubs.

Currently, I'm working on automating builds of thrift for Alpine Linux 3.8, and 
they will likely require "make check" to pass successfully in future versions. 
Might as well ensure it works now.

If you want to duplicate my build easily in Docker, you can use the attachment 
(e.g. tar xpvzf thrift-ci-build-20180627.tar.xz; cd thrift-20180627; docker 
build -t foo .)

{noformat}
make check
...
make[5]: Entering directory '/home/cfriedt/Desktop/thrift-20180627/lib/cpp/test'
 Running 54 test cases...
 An error message from getaddrinfo on the console is expected:
 Thrift: Wed Jun 27 20:16:03 2018 getaddrinfo -2: Name or service not known
 * 
 ** 
 *** No errors detected
 PASS: UnitTests
 Running 2 test cases...
 Thrift: Wed Jun 27 20:16:10 2018 ~TFDTransport TTransportException: 
'TFDTransport::close(): Bad file descriptor'

 * 
 ** 
 *** No errors detected
 PASS: TFDTransportTest
 Running 1 test case...

 * 
 ** 
 *** No errors detected
 PASS: TPipedTransportTest
 Running 3 test cases...

 * 
 ** 
 *** No errors detected
 PASS: DebugProtoTest
 Running 11 test cases...

 * 
 ** 
 *** No errors detected
 PASS: JSONProtoTest
 Running 17 test cases...

 * 
 ** 
 *** No errors detected
 PASS: OptionalRequiredTest
 Running 4 test cases...

 * 
 ** 
 *** No errors detected
 PASS: RecursiveTest
 Running 1 test case...

 * 
 ** 
 *** No errors detected
 PASS: SpecializationTest
 Running 3 test cases...
 TBinaryProtocol => OK
 TLEBinaryProtocol => OK
 TCompactProtocol => OK

 * 
 ** 
 *** No errors detected
 PASS: AllProtocolsTest
 Running 285 test cases...
 Timeout alarm expired; attempting to unblock transport
 Timeout alarm expired; attempting to unblock transport
 Timeout alarm expired; attempting to unblock transport
 Timeout alarm expired; attempting to unblock transport
 Timeout alarm expired; attempting to unblock transport
 ^CMakefile:1436: recipe for target 'check-TESTS' failed
 make[5]: *** [check-TESTS] Interrupt
 Makefile:1559: recipe for target 'check-am' failed
 make[4]: *** [check-am] Interrupt
 Makefile:1562: recipe for target 'check' failed
 make[3]: *** [check] Interrupt
 Makefile:1658: recipe for target 'check-recursive' failed
 make[2]: *** [check-recursive] Interrupt
 Makefile:580: recipe for target 'check-recursive' failed
 make[1]: *** [check-recursive] Interrupt
 Makefile:663: recipe for target 'check-recursive' failed
 make: *** [check-recursive] Interrupt
{noformat}


> Unit Tests failing
> ------------------
>
>                 Key: THRIFT-4594
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4594
>             Project: Thrift
>          Issue Type: Bug
>          Components: Test Suite
>    Affects Versions: 0.11.0
>         Environment: Ubuntu Bionic (native)
> alpine:latest (docker)
>            Reporter: Christopher Friedt
>            Priority: Minor
>             Fix For: 0.12.0
>
>         Attachments: thrift-ci-build-20180627.tar.gz
>
>
> It seems that the lib/cpp/test suite is broken in the 0.11.0 tagged release 
> because this fails in Ubuntu Bionic and inside of an Alpine Linux 3.8 Docker 
> container.
> I would have thought all test suites would pass for tagged releases.
> In any case, I've narrowed the culprits down to the non-portable (NP) class 
> of Mutex initializers. The failure occurs in unpatched code (and obviously in 
> my CI build recipe, attached).
> I'd rather not speculate at this point exactly why this problem is happening. 
> Currently my patching just disables those tests undonditionally, but there 
> should probably be a better solution used in the end. E.g. better .m4 testing 
> for non-portable pthread features - if they are actually functional or just 
> stubs.
> Currently, I'm working on automating builds of thrift for Alpine Linux 3.8, 
> and they will likely require "make check" to pass successfully in future 
> versions. Might as well ensure it works now.
> If you want to duplicate my build easily in Docker, you can use the 
> attachment (e.g. tar xpvzf thrift-ci-build-20180627.tar.xz; cd 
> thrift-20180627; docker build -t foo .)
> {noformat}
> make check
> ...
> make[5]: Entering directory 
> '/home/cfriedt/Desktop/thrift-20180627/lib/cpp/test'
>  Running 54 test cases...
>  An error message from getaddrinfo on the console is expected:
>  Thrift: Wed Jun 27 20:16:03 2018 getaddrinfo -2: Name or service not known
>  * 
>  ** 
>  *** No errors detected
>  PASS: UnitTests
>  Running 2 test cases...
>  Thrift: Wed Jun 27 20:16:10 2018 ~TFDTransport TTransportException: 
> 'TFDTransport::close(): Bad file descriptor'
>  * 
>  ** 
>  *** No errors detected
>  PASS: TFDTransportTest
>  Running 1 test case...
>  * 
>  ** 
>  *** No errors detected
>  PASS: TPipedTransportTest
>  Running 3 test cases...
>  * 
>  ** 
>  *** No errors detected
>  PASS: DebugProtoTest
>  Running 11 test cases...
>  * 
>  ** 
>  *** No errors detected
>  PASS: JSONProtoTest
>  Running 17 test cases...
>  * 
>  ** 
>  *** No errors detected
>  PASS: OptionalRequiredTest
>  Running 4 test cases...
>  * 
>  ** 
>  *** No errors detected
>  PASS: RecursiveTest
>  Running 1 test case...
>  * 
>  ** 
>  *** No errors detected
>  PASS: SpecializationTest
>  Running 3 test cases...
>  TBinaryProtocol => OK
>  TLEBinaryProtocol => OK
>  TCompactProtocol => OK
>  * 
>  ** 
>  *** No errors detected
>  PASS: AllProtocolsTest
>  Running 285 test cases...
>  Timeout alarm expired; attempting to unblock transport
>  Timeout alarm expired; attempting to unblock transport
>  Timeout alarm expired; attempting to unblock transport
>  Timeout alarm expired; attempting to unblock transport
>  Timeout alarm expired; attempting to unblock transport
>  ^CMakefile:1436: recipe for target 'check-TESTS' failed
>  make[5]: *** [check-TESTS] Interrupt
>  Makefile:1559: recipe for target 'check-am' failed
>  make[4]: *** [check-am] Interrupt
>  Makefile:1562: recipe for target 'check' failed
>  make[3]: *** [check] Interrupt
>  Makefile:1658: recipe for target 'check-recursive' failed
>  make[2]: *** [check-recursive] Interrupt
>  Makefile:580: recipe for target 'check-recursive' failed
>  make[1]: *** [check-recursive] Interrupt
>  Makefile:663: recipe for target 'check-recursive' failed
>  make: *** [check-recursive] Interrupt
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to