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));
}
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();
}
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);
}
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);
}
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);
}
Aggregations