Can I use the randomized.jar with Lucene 3.6 test-framework? I guess not because the Timeout annotation doesn't work - I added it with millis=10 but a test ran for 20 seconds uninterrupted.
Also, what I did with JUnit's timeout is control the timeout through a system property -- how do I do that with the randomized timeout? Shai On Wed, May 2, 2012 at 12:09 PM, Dawid Weiss <dawid.we...@cs.put.poznan.pl>wrote: > Don't use junit's Timeout rule -- what it does is it spins off a new > thread and start clocking its execution but doesn't do any proper > cleanup (it only calls interrupt) and may even leave a test thread > running (if it captures interrupted exception) and will leave all > forked threads running (because it doesn't attempt to clean them up). > > That Timeout rule may be good for simple single-threaded tests but > Lucene and Solr tests are not among these... > > Dawid > > On Tue, May 1, 2012 at 3:59 PM, Shai Erera <ser...@gmail.com> wrote: > > I tried to enforce a Timeout using this code, added to my top-level test > > case (didn't try yet on LTC): > > > > @Rule > > public static Timeout globalTimeout = new Timeout(100000); // 100 > > seconds > > > > This comes straight from JUnit. I don't have the randomizedtesting jar > in my > > project, so I couldn't add the @Timeout annotation. > > > > When I set it to a low value (20 ms), many tests failed as expected. > > However, on one occasion, a test took 135 seconds, as reported by JUnit > in > > eclipse, and still didn't fail ! I don't know what it means though -- the > > test usually doesn't take more than 15 seconds to run, so perhaps the > > computer was busy, and therefore even the timeout thread didn't get the > > chance to fail ... or perhaps the time reported by eclipse is inaccurate. > > > > Anyway, perhaps try with that (just add it to LTC anywhere). > > > > Shai > > > > > > On Tue, May 1, 2012 at 4:05 PM, Michael McCandless > > <luc...@mikemccandless.com> wrote: > >> > >> Hmm, as a test, I tried adding @Timeout(millis=100000) to > >> LuceneTestCase, ie 100 seconds, which I think should not trigger on > >> any core tests today. > >> > >> That should then apply to all subclasses of LuceneTestCase right? Ie > >> all tests will be aborted after 100 seconds... > >> > >> But, something is wrong: I get lots of quick (ie much less than 100 > >> seconds) failures like this: > >> > >> [junit4] Suite: > >> org.apache.lucene.util.TestRamUsageEstimatorOnWildAnimals > >> [junit4] ERROR 0.00s J2 | TestRamUsageEstimatorOnWildAnimals (suite) > >> [junit4] > Throwable #1: java.lang.RuntimeException: Interrupted > >> while waiting for worker? Weird. > >> [junit4] > at > >> __randomizedtesting.SeedInfo.seed([329191043FC42BEA]:0) > >> [junit4] > at > >> > >> > com.carrotsearch.randomizedtesting.RandomizedRunner.runAndWait(RandomizedRunner.java:786) > >> [junit4] > at > >> > >> > com.carrotsearch.randomizedtesting.RandomizedRunner.access$900(RandomizedRunner.java:131) > >> [junit4] > at > >> > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$3.evaluate(RandomizedRunner.java:689) > >> [junit4] > at > >> > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$4.evaluate(RandomizedRunner.java:723) > >> [junit4] > at > >> > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:734) > >> [junit4] > at > >> > >> > org.apache.lucene.util.UncaughtExceptionsRule$1.evaluate(UncaughtExceptionsRule.java:75) > >> [junit4] > at > >> > >> > org.apache.lucene.util.StoreClassNameRule$1.evaluate(StoreClassNameRule.java:38) > >> [junit4] > at > >> > >> > org.apache.lucene.util.SystemPropertiesInvariantRule$1.evaluate(SystemPropertiesInvariantRule.java:69) > >> [junit4] > at > >> > >> > com.carrotsearch.randomizedtesting.RandomizedRunner.runSuite(RandomizedRunner.java:604) > >> [junit4] > at > >> > >> > com.carrotsearch.randomizedtesting.RandomizedRunner.access$400(RandomizedRunner.java:131) > >> [junit4] > at > >> > >> > com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:550) > >> [junit4] > Caused by: java.lang.InterruptedException > >> [junit4] > at java.lang.Object.wait(Native Method) > >> [junit4] > at java.lang.Thread.join(Thread.java:1266) > >> [junit4] > at > >> > >> > com.carrotsearch.randomizedtesting.RandomizedRunner.runAndWait(RandomizedRunner.java:776) > >> [junit4] > ... 10 more > >> [junit4] > > >> [junit4] Completed on J2 in 0.34s, 1 test, 1 error <<< FAILURES! > >> [junit4] > >> [junit4] May 01, 2012 9:02:18 AM > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.EventBus > >> dispatch > >> [junit4] SEVERE: Could not dispatch event: > >> > >> > com.carrotsearch.ant.tasks.junit4.events.aggregated.AggregatedSuiteResultEvent@6637b753 > >> to handler [wrapper public void > >> > >> > com.carrotsearch.ant.tasks.junit4.listeners.TextReport.onSuiteResult(com.carrotsearch.ant.tasks.junit4.events.aggregated.AggregatedSuiteResultEvent)] > >> [junit4] java.lang.reflect.InvocationTargetException > >> [junit4] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > >> Method) > >> [junit4] at > >> > >> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > >> [junit4] at > >> > >> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > >> [junit4] at java.lang.reflect.Method.invoke(Method.java:601) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:68) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.EventBus.post(EventBus.java:264) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.events.aggregated.AggregatingListener.receiveSuiteEnd(AggregatingListener.java:130) > >> [junit4] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > >> Method) > >> [junit4] at > >> > >> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > >> [junit4] at > >> > >> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > >> [junit4] at java.lang.reflect.Method.invoke(Method.java:601) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:68) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.EventBus.dispatch(EventBus.java:313) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.dependencies.com.google.common.eventbus.EventBus.post(EventBus.java:264) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.LocalSlaveStreamHandler.pumpEvents(LocalSlaveStreamHandler.java:139) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.LocalSlaveStreamHandler$1.run(LocalSlaveStreamHandler.java:81) > >> [junit4] at java.lang.Thread.run(Thread.java:722) > >> [junit4] Caused by: java.lang.RuntimeException: Unfinished > >> test?org.apache.lucene.util.TestRamUsageEstimatorOnWildAnimals, > >> > >> > testOverflowMaxChainLength(org.apache.lucene.util.TestRamUsageEstimatorOnWildAnimals) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.events.aggregated.AggregatedTestResultEvent.getEventStream(AggregatedTestResultEvent.java:87) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.listeners.TextReport.format(TextReport.java:411) > >> [junit4] at > >> > >> > com.carrotsearch.ant.tasks.junit4.listeners.TextReport.onSuiteResult(TextReport.java:216) > >> [junit4] ... 22 more > >> > >> Not sure what's up... > >> > >> Mike McCandless > >> > >> http://blog.mikemccandless.com > >> > >> On Mon, Apr 30, 2012 at 6:24 PM, Dawid Weiss > >> <dawid.we...@cs.put.poznan.pl> wrote: > >> >> just to clarify: your'e saying that if we put that anotation on a > >> >> class, > >> >> like LuceneTestCase, it will apply to any test *method* in that class > >> >> (or > >> >> subclasses) ... and presumably if a subclass uses that anotation > with a > >> >> diff millis value, that will override the superclass. > >> > > >> > Correct. You can also apply it to a particular method to have > >> > per-method adjustment. In fact, @Timeout is somewhat redundant since > >> > @Test also has a "timeout" attribute... and this will also work. But I > >> > thought a consistent @Timeout would be nicer (applied to class, > >> > method, wherever). Up to your taste I guess. > >> > > >> > There is one issue with timeouts -- they apply to test cases _only_, > >> > not to suite-level code (@BeforeClass, @ClassRules). I don't know if > >> > this qualifies as a bug or feature -- haven't developed that gut > >> > feeing yet... > >> > > >> > Dawid > >> > > >> > --------------------------------------------------------------------- > >> > To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org > >> > For additional commands, e-mail: dev-h...@lucene.apache.org > >> > > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org > >> For additional commands, e-mail: dev-h...@lucene.apache.org > >> > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org > For additional commands, e-mail: dev-h...@lucene.apache.org > >