hadoop-common-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Joseph Evans (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HADOOP-9330) Add custom JUnit4 test runner with configurable timeout
Date Mon, 25 Mar 2013 17:37:15 GMT

    [ https://issues.apache.org/jira/browse/HADOOP-9330?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13612886#comment-13612886
] 

Robert Joseph Evans commented on HADOOP-9330:
---------------------------------------------

The concept seems fine, but the Timeout rule and @Test(timeout=XXX) are not aware of each
other.  This means that the effective timeout of any test is which ever is smaller.  I don't
think that this is a real problem, just that the comments and the name of the member variable
defaultTimout is slightly misleading. I also don't know if we have any tests that are intended
to run for more than 100s.  If so they will always timeout after 100s unless they do not extend
the HadoopBase, or we set the default to be higher.

Also, I don't know if there is anything we can do about this or not, but when we use both
timeouts, the Timeout rule's backtrace, when it fails is close to useless.

{code}
testSleep(org.apache.hadoop.test.TestSomething)  Time elapsed: 1091 sec  <<< ERROR!
java.lang.Exception: test timed out after 1000 milliseconds
        at java.lang.Object.wait(Native Method)
        at java.lang.Thread.join(Thread.java:1194)
        at org.junit.internal.runners.statements.FailOnTimeout.evaluate(FailOnTimeout.java:36)
        at org.junit.internal.runners.statements.FailOnTimeout$1.run(FailOnTimeout.java:28)
{code}

It simply says that the code that "timed out" was a thread waiting for the actual test to
finish running :) This is because there are actually two threads monitoring the test, instead
of just one.

I realize that a lot of my complaints are perhaps things that need to just be addressed by
the JUnit, I just want us to be fully aware of them as we go into this and document things
appropriately, so we know what is happening when issues arise.
                
> Add custom JUnit4 test runner with configurable timeout
> -------------------------------------------------------
>
>                 Key: HADOOP-9330
>                 URL: https://issues.apache.org/jira/browse/HADOOP-9330
>             Project: Hadoop Common
>          Issue Type: Test
>          Components: test
>    Affects Versions: 3.0.0
>            Reporter: Steve Loughran
>         Attachments: HADOOP-9330-timeouts-1.patch
>
>
> HADOOP-9112 has added a requirement for all new test methods to declare a timeout, so
that jenkins/maven builds will have better information on a timeout.
> Hard coding timeouts into tests is dangerous as it will generate spurious failures on
slower machines/networks and when debugging a test.
> I propose providing a custom JUnit4 test runner that test cases can declare as their
test runner; this can provide timeouts specified at run-time, rather than in-source.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message