Enrico apache-bookeeper seems to be using timeout in @Test as I can see from their github repo here <https://github.com/apache/bookkeeper/search?q=%40Test%28timeout+%3D&unscoped_q=%40Test%28timeout+%3D> .
Tibor how can I pass an instance of RunNotifier to a class extending from RunListener so that I can call pleaseStop() from the listener when the timeout of a test expires? Is there any example code I can refer to? I am using Junit 4.12 and maven-surefire 2.22.2 On Sat, Oct 5, 2019 at 6:27 PM Tibor Digana <tibordig...@apache.org> wrote: > Some users may have a requirement to stop the exertion when a test hangs. > Other users woul maybe prefer to interrupt the test and continue with next > test. > This would lead to configuration with more than one config value => POJO in > new config parameter. > > On Sat, Oct 5, 2019 at 2:17 PM Debraj Manna <subharaj.ma...@gmail.com> > wrote: > > > Thanks again Enrico. I will try to find out from apache-bookmark code or > > check in apache-bookkeper mailing list. > > > > Yes Tibor I am looking for a global timeout without explicitly adding the > > timeout annotation in all of my tests / classes. I am not using > forkCount > > > 1. I get your testStarted part but it is still not clear to me about > > calling 'pleaseStop() on the listener'. Are you suggesting to add this in > > each of my test classes? Can you explain this a bit more? > > > > On Fri, Oct 4, 2019 at 11:52 PM Tibor Digana <tibordig...@apache.org> > > wrote: > > > > > Hi Debraj, > > > > > > It depends on your requirements. > > > > > > As I initially understood your email, every test method wants to have > > > implicit timeout value even without the annotation @Timeout. > > > Then the testStarted is important event even your code will see when > the > > > test method has started and timeout can be easily computed. > > > Of course you need to use an extra thread which checks the end events. > > > > > > > > > https://junit.org/junit4/javadoc/4.12/org/junit/runner/notification/RunListener.html#testStarted(org.junit.runner.Description) > > > Your code can call the method "pleaseStop()" on the listener. I think > it > > > would not be reliable algorithm in all use cases if you use forkCount > > 1 > > > and there you will need to have our support. > > > > > > Is it this what you need, the global timeout with the same value on > every > > > test method? > > > > > > Cheers > > > Tibor > > > > > > On Fri, Oct 4, 2019 at 4:30 PM Debraj Manna <subharaj.ma...@gmail.com> > > > wrote: > > > > > > > Enrico > > > > > > > > If I get the approach correctly then all my junit4 tests should have > > > > timeout specified (either via @Test or via @Rule) then only I can use > > the > > > > listener. But the problem is we are having more than 2000 tests and > > > > specifying a timeout in each of the tests/classes is cumbersome. > > > > > > > > Correct me if I have misunderstood anything. > > > > > > > > > > > > > > > > On Fri, Oct 4, 2019 at 3:18 PM Debraj Manna < > subharaj.ma...@gmail.com> > > > > wrote: > > > > > > > > > Yeah sure ... thanks. > > > > > > > > > > On Thu, Oct 3, 2019 at 7:50 PM Tibor Digana < > tibordig...@apache.org> > > > > > wrote: > > > > > > > > > >> Hi Debraj, > > > > >> > > > > >> There is nice technical idea from Enrico. > > > > >> If you apply it and you are convinced that it would work properly > > for > > > > all > > > > >> the Java community, feel free to show it and we can discuss it on > > how > > > we > > > > >> would adopt your solution in Surefire project. > > > > >> > > > > >> Cheers > > > > >> Tibor17 > > > > >> > > > > >> On Thu, Oct 3, 2019 at 2:49 PM Debraj Manna < > > subharaj.ma...@gmail.com > > > > > > > > >> wrote: > > > > >> > > > > >> > Sometimes I have maven surefire tests that get hung, due to > either > > > > >> races or > > > > >> > deadlocks. > > > > >> > > > > > >> > When this happens I have to discover what slave is being used, > and > > > > then > > > > >> I > > > > >> > have to log on that slave, sudo to jenkins account and execute > > > either > > > > >> > jstack or kill -3 > > > > >> > > > > > >> > I am looking for a simple solution like doing jstack / kill -3 > > when > > > > >> someone > > > > >> > presses abort button on the jenkins. > > > > >> > > > > > >> > Can someone suggest how can I automate this or some better way > of > > > > >> handling > > > > >> > this? > > > > >> > > > > > >> > > > > > > > > > > > > > > >