[
https://issues.apache.org/jira/browse/FLUME-2625?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14324471#comment-14324471
]
Tony Reix commented on FLUME-2625:
----------------------------------
Here are more details about the unstable tests.
T: Total of tests
F: Failure
E: Error
S: Skipped
I've launched the tests 8 times (files mvn.Test.OpenJDK.res ,
mvn.Test.OpenJDK.res4 .... mvn.Test.OpenJDK.res10), within the same environment.
Details of results of each test is given for the 8 files (numbered from 0 to 7).
As an example, about .source.avroLegacy.TestLegacyAvroSource test, there are 1
or 2 errors:
T F E S
.source.avroLegacy.TestLegacyAvroSource 0: 2 0 2 0 |
.source.avroLegacy.TestLegacyAvroSource 1: 2 0 2 0 |
.source.avroLegacy.TestLegacyAvroSource 2: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 3: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 4: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 5: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 6: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 7: 2 0 1 0 |
$ ./BuildUnstable.sh -A mvn.Test.OpenJDK.res mvn.Test.OpenJDK.res4
mvn.Test.OpenJDK.res5 mvn.Test.OpenJDK.res6 mvn.Test.OpenJDK.res7
mvn.Test.OpenJDK.res8 mvn.Test.OpenJDK.res9 mvn.Test.OpenJDK.res10
Files:
0: mvn.Test.OpenJDK.res
1: mvn.Test.OpenJDK.res4
2: mvn.Test.OpenJDK.res5
3: mvn.Test.OpenJDK.res6
4: mvn.Test.OpenJDK.res7
5: mvn.Test.OpenJDK.res8
6: mvn.Test.OpenJDK.res9
7: mvn.Test.OpenJDK.res10
Unstable Tests:
------------------------------------------- T F E S |
.sink.TestThriftSink 0: 3 0 0 0 |
.sink.TestThriftSink 1: 3 0 3 0 |
.sink.TestThriftSink 2: 3 0 3 0 |
.sink.TestThriftSink 3: 3 0 3 0 |
.sink.TestThriftSink 4: 3 0 3 0 |
.sink.TestThriftSink 5: 3 0 3 0 |
.sink.TestThriftSink 6: 3 0 3 0 |
.sink.TestThriftSink 7: 3 0 3 0 |
------------------------------------------- T F E S |
.source.TestSyslogUdpSource 0: 3 0 0 0 |
.source.TestSyslogUdpSource 1: 3 3 0 0 |
.source.TestSyslogUdpSource 2: 3 3 0 0 |
.source.TestSyslogUdpSource 3: 3 3 0 0 |
.source.TestSyslogUdpSource 4: 3 3 0 0 |
.source.TestSyslogUdpSource 5: 3 3 0 0 |
.source.TestSyslogUdpSource 6: 3 3 0 0 |
.source.TestSyslogUdpSource 7: 3 3 0 0 |
------------------------------------------- T F E S |
.instrumentation.http.TestHTTPMetricsServer 0: 3 0 0 0 |
.instrumentation.http.TestHTTPMetricsServer 1: 3 0 3 0 |
.instrumentation.http.TestHTTPMetricsServer 2: 3 0 3 0 |
.instrumentation.http.TestHTTPMetricsServer 3: 3 0 3 0 |
.instrumentation.http.TestHTTPMetricsServer 4: 3 0 3 0 |
.instrumentation.http.TestHTTPMetricsServer 5: 3 0 3 0 |
.instrumentation.http.TestHTTPMetricsServer 6: 3 0 3 0 |
.instrumentation.http.TestHTTPMetricsServer 7: 3 0 3 0 |
------------------------------------------- T F E S |
.source.TestThriftSource 0: 4 0 0 0 |
.source.TestThriftSource 1: 4 1 3 0 |
.source.TestThriftSource 2: 4 1 3 0 |
.source.TestThriftSource 3: 4 1 3 0 |
.source.TestThriftSource 4: 4 1 3 0 |
.source.TestThriftSource 5: 4 1 3 0 |
.source.TestThriftSource 6: 4 1 3 0 |
.source.TestThriftSource 7: 4 1 3 0 |
------------------------------------------- T F E S |
.channel.TestSpillableMemoryChannel 0: 14 0 0 0 |
.channel.TestSpillableMemoryChannel 1: 0 0 0 0 |
.channel.TestSpillableMemoryChannel 2: 14 0 0 0 |
.channel.TestSpillableMemoryChannel 3: 0 0 0 0 |
.channel.TestSpillableMemoryChannel 4: 0 0 0 0 |
.channel.TestSpillableMemoryChannel 5: 0 0 0 0 |
.channel.TestSpillableMemoryChannel 6: 14 0 0 0 |
.channel.TestSpillableMemoryChannel 7: 0 0 0 0 |
------------------------------------------- T F E S |
.api.TestThriftRpcClient 0: 6 0 0 0 |
.api.TestThriftRpcClient 1: 6 0 3 0 |
.api.TestThriftRpcClient 2: 6 0 3 0 |
.api.TestThriftRpcClient 3: 6 0 3 0 |
.api.TestThriftRpcClient 4: 6 0 3 0 |
.api.TestThriftRpcClient 5: 6 0 3 0 |
.api.TestThriftRpcClient 6: 6 0 3 0 |
.api.TestThriftRpcClient 7: 6 0 3 0 |
------------------------------------------- T F E S |
.source.thriftLegacy.TestThriftLegacySource 0: 3 0 0 0 |
.source.thriftLegacy.TestThriftLegacySource 1: 3 2 0 0 |
.source.thriftLegacy.TestThriftLegacySource 2: 3 2 0 0 |
.source.thriftLegacy.TestThriftLegacySource 3: 3 2 0 0 |
.source.thriftLegacy.TestThriftLegacySource 4: 3 2 0 0 |
.source.thriftLegacy.TestThriftLegacySource 5: 3 2 0 0 |
.source.thriftLegacy.TestThriftLegacySource 6: 3 2 0 0 |
.source.thriftLegacy.TestThriftLegacySource 7: 3 2 0 0 |
------------------------------------------- T F E S |
.source.TestAvroSource 0: |
.source.TestAvroSource 1: 12 0 8 0 |
.source.TestAvroSource 2: 12 0 8 0 |
.source.TestAvroSource 3: 12 0 8 0 |
.source.TestAvroSource 4: 12 0 8 0 |
.source.TestAvroSource 5: 12 0 8 0 |
.source.TestAvroSource 6: 12 0 8 0 |
.source.TestAvroSource 7: 12 0 8 0 |
------------------------------------------- T F E S |
.source.avroLegacy.TestLegacyAvroSource 0: 2 0 2 0 |
.source.avroLegacy.TestLegacyAvroSource 1: 2 0 2 0 |
.source.avroLegacy.TestLegacyAvroSource 2: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 3: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 4: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 5: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 6: 2 0 1 0 |
.source.avroLegacy.TestLegacyAvroSource 7: 2 0 1 0 |
------------------------------------------- T F E S |
.source.TestMultiportSyslogTCPSource 0: 4 0 0 0 |
.source.TestMultiportSyslogTCPSource 1: 4 0 1 0 |
.source.TestMultiportSyslogTCPSource 2: 4 0 1 0 |
.source.TestMultiportSyslogTCPSource 3: 4 0 1 0 |
.source.TestMultiportSyslogTCPSource 4: 4 0 1 0 |
.source.TestMultiportSyslogTCPSource 5: 4 0 1 0 |
.source.TestMultiportSyslogTCPSource 6: 4 0 1 0 |
.source.TestMultiportSyslogTCPSource 7: 4 0 1 0 |
------------------------------------------- T F E S |
.api.TestLoadBalancingRpcClient 0: 15 0 12 0 |
.api.TestLoadBalancingRpcClient 1: 15 0 0 0 |
.api.TestLoadBalancingRpcClient 2: 15 0 0 0 |
.api.TestLoadBalancingRpcClient 3: 15 0 0 0 |
.api.TestLoadBalancingRpcClient 4: 15 0 0 0 |
.api.TestLoadBalancingRpcClient 5: 15 0 0 0 |
.api.TestLoadBalancingRpcClient 6: 15 0 0 0 |
.api.TestLoadBalancingRpcClient 7: 15 0 0 0 |
------------------------------------------- T F E S |
.source.TestSyslogTcpSource 0: 2 0 0 0 |
.source.TestSyslogTcpSource 1: 2 0 2 0 |
.source.TestSyslogTcpSource 2: 2 0 2 0 |
.source.TestSyslogTcpSource 3: 2 0 2 0 |
.source.TestSyslogTcpSource 4: 2 0 2 0 |
.source.TestSyslogTcpSource 5: 2 0 2 0 |
.source.TestSyslogTcpSource 6: 2 0 2 0 |
.source.TestSyslogTcpSource 7: 2 0 2 0 |
------------------------------------------- T F E S |
.source.TestExecSource 0: 10 0 0 0 |
.source.TestExecSource 1: 10 0 0 0 |
.source.TestExecSource 2: 10 0 0 0 |
.source.TestExecSource 3: 10 0 0 0 |
.source.TestExecSource 4: 10 1 0 0 |
.source.TestExecSource 5: 10 0 0 0 |
.source.TestExecSource 6: 10 0 0 0 |
.source.TestExecSource 7: 10 1 0 0 |
------------------------------------------- T F E S |
.channel.file.TestFileChannelRestart 0: 40 0 0 0 |
.channel.file.TestFileChannelRestart 1: 40 0 0 0 |
.channel.file.TestFileChannelRestart 2: 40 0 0 0 |
.channel.file.TestFileChannelRestart 3: 40 0 0 0 |
.channel.file.TestFileChannelRestart 4: 40 1 0 0 |
.channel.file.TestFileChannelRestart 5: 40 0 0 0 |
.channel.file.TestFileChannelRestart 6: 40 0 0 0 |
.channel.file.TestFileChannelRestart 7: 40 0 0 0 |
------------------------------------------- T F E S |
.sink.TestAvroSink 0: 15 0 0 0 |
.sink.TestAvroSink 1: 15 0 15 0 |
.sink.TestAvroSink 2: 15 0 0 0 |
.sink.TestAvroSink 3: 15 0 0 0 |
.sink.TestAvroSink 4: 15 0 0 0 |
.sink.TestAvroSink 5: 15 0 0 0 |
.sink.TestAvroSink 6: 15 0 0 0 |
.sink.TestAvroSink 7: 15 0 0 0 |
------------------------------------------- T F E S |
.source.http.TestHTTPSource 0: 14 0 0 0 |
.source.http.TestHTTPSource 1: 14 1 12 0 |
.source.http.TestHTTPSource 2: 14 1 12 0 |
.source.http.TestHTTPSource 3: 14 1 12 0 |
.source.http.TestHTTPSource 4: 14 1 12 0 |
.source.http.TestHTTPSource 5: 14 1 12 0 |
.source.http.TestHTTPSource 6: 14 1 12 0 |
.source.http.TestHTTPSource 7: 14 1 12 0 |
My first test file (mvn.Test.OpenJDK.res) shows much more success than the 7
other files. Maybe I did something special...
Anyway, it is clear that there is some random failures for tests:
.channel.TestSpillableMemoryChannel
.source.avroLegacy.TestLegacyAvroSource
.api.TestLoadBalancingRpcClient
.source.TestExecSource
.channel.file.TestFileChannelRestart
.sink.TestAvroSink
> There are several unstable tests within FLUME
> ---------------------------------------------
>
> Key: FLUME-2625
> URL: https://issues.apache.org/jira/browse/FLUME-2625
> Project: Flume
> Issue Type: Bug
> Components: Test
> Affects Versions: v1.5.0.1
> Environment: RHEL 7.1 / x86_64 / Open JDK 1.7
> Reporter: Tony Reix
>
> Hi,
> I'm working on porting FLUME in a RHEL 7.1 / PPC64LE / IBM JVM 1.7
> environment.
> As an example, I've found that the test .source.TestSyslogUdpSource fails,
> but not always, only 7 times out of 10 tries. Testing on RHEL 7.1 / x86_64 /
> IBM JVM, I've also had random failures.
> Running the same .source.TestSyslogUdpSource test in RHEL 7.1 / x86_64 / Open
> JDK 1.7 environment, I've found that this test fails only once out of 30
> tries: it is an "unstable" test.
> In order to find which test issues are specific to PPC64 or IBMJVM
> environment, I've run 10 times all the FLUME tests in the RHEL 7.1 / x86_64 /
> Open JDK 1.7 environment, which I call my "reference" environment.
> Then, using a tool that compares all the results, I've found that there are
> 16 tests that are "unstable" in my "reference" (x86_64/OpenJDK) .
> By "unstable", I mean to say that the results vary, though the environment is
> exactly the same.
> These tests are:
> .api.TestLoadBalancingRpcClient
> .api.TestThriftRpcClient
> .channel.file.TestFileChannelRestart
> .channel.TestSpillableMemoryChannel
> .instrumentation.http.TestHTTPMetricsServer
> .sink.TestAvroSink
> .sink.TestThriftSink
> .source.avroLegacy.TestLegacyAvroSource
> .source.http.TestHTTPSource
> .source.TestAvroSource
> .source.TestExecSource
> .source.TestMultiportSyslogTCPSource
> .source.TestSyslogTcpSource
> .source.TestSyslogUdpSource
> .source.TestThriftSource
> .source.thriftLegacy.TestThriftLegacySource
> About ".source.TestSyslogUdpSource" test, my analysis is that the test code
> is not reliable since the test checks that some data is correct without
> checking that all the "messages" have arrived (sometimes, a message has not
> arrived in time, and a reference is NULL).
> Adding "sleep(1000) to the test with IBM JVM, the test then failed only 3
> times out of 10.
> So, I think that several FLUME tests are coded in a way that is not 100%
> reliable. Or it could also be that some core code of FLUME is not 100%
> reliable.
> I mean to say that some code may have been written based on the specific
> behaviour of the OpenJDK Java Virtual Machine, which was used for testing.
> Some change about how the order of threads are launched, or about the time
> needed to send messages in the JVM/OS, may lead to issues that are not
> correctly handled by the code (mainly test code, but maybe core code too).
> And it seems that, though being perfectly correct, the IBM JVM does not work
> the same way compared to OpenJDK.
> So, this is a pain. Mainly in my PPC64LE/IBMJVM environment.
> I think that these 16 tests must be analysed and improved.
> Also, running tests with OpenJDK AND IBM JVM in your development and
> test/Jenkins environments would help to see these random issues.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)