void refreshState() { if (process.isAlive()) { if (!operational.get() && process.isOperational()) { operational.set(true); eventListeners.forEach(l -> l.onProcessEvent(processId, ProcessEventListener.Type.OPERATIONAL)); } if (process.askedForRestart()) { process.acknowledgeAskForRestart(); eventListeners.forEach(l -> l.onProcessEvent(processId, ProcessEventListener.Type.ASK_FOR_RESTART)); } } else { stopForcibly(); } }
@Test public void send_event_when_process_is_operational() { ProcessEventListener listener = mock(ProcessEventListener.class); SQProcess underTest = SQProcess.builder(A_PROCESS_ID) .addEventListener(listener) .build(); try (TestProcess testProcess = new TestProcess()) { underTest.start(() -> testProcess); testProcess.operational = true; underTest.refreshState(); verify(listener).onProcessEvent(A_PROCESS_ID, ProcessEventListener.Type.OPERATIONAL); } verifyNoMoreInteractions(listener); }
@Test public void operational_event_is_sent_once() { ProcessEventListener listener = mock(ProcessEventListener.class); SQProcess underTest = SQProcess.builder(A_PROCESS_ID) .addEventListener(listener) .build(); try (TestProcess testProcess = new TestProcess()) { underTest.start(() -> testProcess); testProcess.operational = true; underTest.refreshState(); verify(listener).onProcessEvent(A_PROCESS_ID, ProcessEventListener.Type.OPERATIONAL); // second run underTest.refreshState(); verifyNoMoreInteractions(listener); } }
void refreshState() { if (process.isAlive()) { if (!operational.get() && process.isOperational()) { operational.set(true); eventListeners.forEach(l -> l.onProcessEvent(processId, ProcessEventListener.Type.OPERATIONAL)); } if (process.askedForRestart()) { process.acknowledgeAskForRestart(); eventListeners.forEach(l -> l.onProcessEvent(processId, ProcessEventListener.Type.ASK_FOR_RESTART)); } } else { stopForcibly(); } }