Search in sources :

Example 21 with Signal

use of sun.misc.Signal in project spf4j by zolyfarkas.

the class CLibraryTest method testSignal.

@Test
public void testSignal() throws IOException, InterruptedException, ExecutionException, TimeoutException {
    CountDownLatch latch = new CountDownLatch(1);
    Signal.handle(new Signal("USR2"), (signal) -> {
        LOG.debug("Received signal: {}", signal);
        latch.countDown();
    });
    org.spf4j.base.Runtime.jrunAndLog(CLibraryTest.class, 60000);
    Assert.assertTrue(latch.await(1, TimeUnit.MINUTES));
}
Also used : Signal(sun.misc.Signal) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 22 with Signal

use of sun.misc.Signal in project datashare by ICIJ.

the class BatchSearchLoopTestInt method test_main_loop_exit_with_sigterm_when_empty_batch_queue.

@Test
public void test_main_loop_exit_with_sigterm_when_empty_batch_queue() throws InterruptedException {
    CountDownLatch countDownLatch = new CountDownLatch(1);
    BatchSearchLoop app = new BatchSearchLoop(repository, batchSearchQueue, factory, countDownLatch);
    executor.submit(app::run);
    countDownLatch.await();
    Signal term = new Signal("TERM");
    Signal.raise(term);
    executor.shutdown();
    assertThat(executor.awaitTermination(1, TimeUnit.SECONDS)).isTrue();
}
Also used : Signal(sun.misc.Signal) BatchSearchLoop(org.icij.datashare.tasks.BatchSearchLoop) Test(org.junit.Test)

Example 23 with Signal

use of sun.misc.Signal in project datashare by ICIJ.

the class BatchSearchLoopTestInt method test_main_loop_exit_with_sigterm_and_queued_batches.

@Test
public void test_main_loop_exit_with_sigterm_and_queued_batches() throws InterruptedException {
    SleepingBatchSearchRunner batchSearchRunner = new SleepingBatchSearchRunner(100);
    when(factory.createBatchSearchRunner(any(), any())).thenReturn(batchSearchRunner);
    BatchSearch bs1 = new BatchSearch(Project.project("prj"), "name1", "desc", CollectionUtils.asSet("query1"), local());
    BatchSearch bs2 = new BatchSearch(Project.project("prj"), "name2", "desc", CollectionUtils.asSet("query2"), local());
    BatchSearchLoop app = new BatchSearchLoop(repository, batchSearchQueue, factory);
    batchSearchQueue.add(bs1.uuid);
    batchSearchQueue.add(bs2.uuid);
    when(repository.get(bs1.uuid)).thenReturn(bs1);
    when(repository.get(bs2.uuid)).thenReturn(bs2);
    executor.submit(app::run);
    waitQueueToHaveSize(1);
    Signal term = new Signal("TERM");
    Signal.raise(term);
    executor.shutdown();
    assertThat(executor.awaitTermination(2, TimeUnit.SECONDS)).isTrue();
    assertThat(batchSearchQueue).excludes("poison");
    assertThat(batchSearchQueue).containsOnly(bs1.uuid, bs2.uuid);
}
Also used : Signal(sun.misc.Signal) BatchSearch(org.icij.datashare.batch.BatchSearch) BatchSearchLoop(org.icij.datashare.tasks.BatchSearchLoop) Test(org.junit.Test)

Example 24 with Signal

use of sun.misc.Signal in project datashare by ICIJ.

the class BatchSearchLoopTestInt method test_main_loop_exit_with_sigterm_when_running_batch.

@Test
public void test_main_loop_exit_with_sigterm_when_running_batch() throws InterruptedException {
    SleepingBatchSearchRunner batchSearchRunner = new SleepingBatchSearchRunner(100);
    when(factory.createBatchSearchRunner(any(), any())).thenReturn(batchSearchRunner);
    BatchSearchLoop app = new BatchSearchLoop(repository, batchSearchQueue, factory);
    batchSearchQueue.add(batchSearch.uuid);
    executor.submit(app::run);
    waitQueueToBeEmpty();
    Signal term = new Signal("TERM");
    Signal.raise(term);
    executor.shutdown();
    assertThat(executor.awaitTermination(2, TimeUnit.SECONDS)).isTrue();
    assertThat(batchSearchRunner.cancelAsked).isTrue();
    verify(repository).reset(batchSearch.uuid);
}
Also used : Signal(sun.misc.Signal) BatchSearchLoop(org.icij.datashare.tasks.BatchSearchLoop) Test(org.junit.Test)

Example 25 with Signal

use of sun.misc.Signal in project datashare by ICIJ.

the class BatchSearchLoopTestInt method test_main_loop_exit_with_sigterm_and_wait_for_cancellation_to_terminate.

@Test
public void test_main_loop_exit_with_sigterm_and_wait_for_cancellation_to_terminate() throws InterruptedException {
    DatashareTime.setMockTime(true);
    Date beforeTest = DatashareTime.getInstance().now();
    CountDownLatch countDownLatch = new CountDownLatch(1);
    SleepingBatchSearchRunner batchSearchRunner = new SleepingBatchSearchRunner(100, countDownLatch);
    when(factory.createBatchSearchRunner(any(), any())).thenReturn(batchSearchRunner);
    batchSearchQueue.add(batchSearch.uuid);
    BatchSearchLoop app = new BatchSearchLoop(repository, batchSearchQueue, factory);
    executor.submit(app::run);
    countDownLatch.await();
    Signal term = new Signal("TERM");
    Signal.raise(term);
    executor.shutdown();
    assertThat(executor.awaitTermination(1, TimeUnit.SECONDS)).isTrue();
    assertThat(DatashareTime.getInstance().now().getTime() - beforeTest.getTime()).isEqualTo(100);
    assertThat(batchSearchQueue).containsOnly(batchSearch.uuid);
    verify(repository).reset(batchSearch.uuid);
}
Also used : Signal(sun.misc.Signal) BatchSearchLoop(org.icij.datashare.tasks.BatchSearchLoop) Date(java.util.Date) Test(org.junit.Test)

Aggregations

Signal (sun.misc.Signal)37 SignalHandler (sun.misc.SignalHandler)15 Test (org.junit.Test)8 IOException (java.io.IOException)4 BatchSearchLoop (org.icij.datashare.tasks.BatchSearchLoop)4 ReporterConfiguration (com.uber.jaeger.Configuration.ReporterConfiguration)2 SamplerConfiguration (com.uber.jaeger.Configuration.SamplerConfiguration)2 ConstSampler (com.uber.jaeger.samplers.ConstSampler)2 FinishCheck (com.vip.saturn.it.base.FinishCheck)2 LongtimeJavaJob (com.vip.saturn.it.job.LongtimeJavaJob)2 JobConfig (com.vip.saturn.job.console.domain.JobConfig)2 ActiveSpan (io.opentracing.ActiveSpan)2 GlobalTracer (io.opentracing.util.GlobalTracer)2 BufferedReader (java.io.BufferedReader)2 ByteArrayInputStream (java.io.ByteArrayInputStream)2 FileNotFoundException (java.io.FileNotFoundException)2 InputStream (java.io.InputStream)2 InputStreamReader (java.io.InputStreamReader)2 Path (java.nio.file.Path)2 Paths (java.nio.file.Paths)2