/** * {@inheritDoc} */ @Override public void run() { try { DiagnosisInput diagnosisInput = queue.take(); engine.analyze(diagnosisInput.getInvocation(), Collections.singletonMap(RuleConstants.DIAGNOSIS_VAR_BASELINE, diagnosisInput.getBaseline())); } catch (DiagnosisEngineException e) { LOG.warn("During analyzing of DiagnosisEngine an exception occurred", e); } catch (InterruptedException e) { Thread.interrupted(); } finally { if (!diagnosisServiceExecutor.isShutdown()) { diagnosisServiceExecutor.execute(this); } } }
@Test public void stopDiagnosis() throws DiagnosisEngineException { double baseline = 1000; InvocationSequenceData invocationSequenceData = new InvocationSequenceData(); when(diagnosisServiceExecutor.isShutdown()).thenReturn(true); diagnosisService.diagnose(invocationSequenceData, baseline); diagnosisService.run(); verify(engine, times(1)).analyze(invocationSequenceData, Collections.singletonMap(RuleConstants.DIAGNOSIS_VAR_BASELINE, baseline)); verify(diagnosisServiceExecutor, times(0)).execute(diagnosisService); } }
@Test public void runDiagnosis() throws DiagnosisEngineException { double baseline = 1000; InvocationSequenceData invocationSequenceData = new InvocationSequenceData(); invocationSequenceData.setDuration(5000d); verify(engine, times(0)).analyze(invocationSequenceData, Collections.singletonMap(RuleConstants.DIAGNOSIS_VAR_BASELINE, baseline)); verify(diagnosisServiceExecutor, times(0)).execute(diagnosisService); diagnosisService.diagnose(invocationSequenceData, baseline); diagnosisService.diagnose(invocationSequenceData, baseline); diagnosisService.diagnose(invocationSequenceData, baseline); diagnosisService.run(); diagnosisService.run(); diagnosisService.run(); verify(engine, times(3)).analyze(invocationSequenceData, Collections.singletonMap(RuleConstants.DIAGNOSIS_VAR_BASELINE, baseline)); verify(diagnosisServiceExecutor, times(3)).execute(diagnosisService); }