@Test
@SuppressFBWarnings("SIC_INNER_SHOULD_BE_STATIC_ANON")
public void testBlockOnFailedInsertBehavior() throws Exception {
final Configuration configuration = new Configuration();
configuration.setProperty(ConfigurationKeys.WRITER_CLASSNAME, DumpWriter.class.getName());
configuration.setProperty(WriterController.PREFIX + WriterController.RECORD_QUEUE_FQN,
MpscArrayQueue.class.getName());
configuration.setProperty(WriterController.PREFIX + WriterController.RECORD_QUEUE_SIZE, "1");
configuration.setProperty(WriterController.PREFIX + WriterController.RECORD_QUEUE_INSERT_BEHAVIOR, "1");
final WriterController writerController = new WriterController(configuration);
final Thread thread = new Thread(new Runnable() {
@Override
public void run() {
writerController.newMonitoringRecord(new EmptyRecord());
writerController.newMonitoringRecord(new EmptyRecord());
}
});
thread.start();
Await.awaitThreadState(thread, State.WAITING, THREAD_STATE_CHANGE_TIMEOUT_IN_MS);
writerController.init();
Await.awaitThreadState(thread, State.TERMINATED, THREAD_STATE_CHANGE_TIMEOUT_IN_MS);
writerController.cleanup();
writerController.waitForTermination(CONTROLLER_TIMEOUT_IN_MS);
Assert.assertThat(writerController.getStateOfMonitoringWriterThread(), CoreMatchers.is(State.TERMINATED));
}