@Test
public void testEngine() throws DiagnosisEngineException {
final List<DefaultSessionResult<String>> results = new ArrayList<>();
final List<Throwable> exceptions = new ArrayList<>();
DiagnosisEngineConfiguration<String, DefaultSessionResult<String>> configuration = new DiagnosisEngineConfiguration<String, DefaultSessionResult<String>>().setNumSessionWorkers(1)
.addRuleClasses(RuleA.class, RuleB.class, RuleC.class, RuleE.class).setStorageClass(DefaultRuleOutputStorage.class).setResultCollector(new DefaultSessionResultCollector<String>())
.addSessionCallback(new ISessionCallback<DefaultSessionResult<String>>() {
@Override
public void onSuccess(DefaultSessionResult<String> result) {
results.add(result);
}
@Override
public void onFailure(Throwable t) {
exceptions.add(t);
}
});
configuration.setShutdownTimeout(6000);
DiagnosisEngine<String, DefaultSessionResult<String>> diagnosisEngine = new DiagnosisEngine<>(configuration);
String input = "Trace";
diagnosisEngine.analyze(input);
diagnosisEngine.shutdown(true);
assertThat(exceptions, empty());
assertThat(results.get(0).getEndTags().get("C"), hasSize(1));
assertThat(results.get(0).getEndTags().get("C").iterator().next().getValue(), equalTo((Object) ((input + input).length() + 2)));
assertThat(results.get(0).getEndTags().get("E"), hasSize(1));
assertThat(results.get(0).getEndTags().get("E").iterator().next().getValue(), equalTo((Object) (input + "E")));
}