/** * Adds new Classes to {@link #ruleClasses}. * * @param ruleClasses * New values for {@link #ruleClasses} * @return DiagnosisEngineConfiguration itself */ public DiagnosisEngineConfiguration<I, R> addRuleClasses(Class<?>... ruleClasses) { addRuleClasses(Arrays.asList(checkNotNull(ruleClasses, "Array of rule classes must not be null."))); return this; }
DiagnosisEngineConfiguration<InvocationSequenceData, List<ProblemOccurrence>> configuration = new DiagnosisEngineConfiguration<InvocationSequenceData, List<ProblemOccurrence>>(); configuration.setNumSessionWorkers(numberOfSessionWorker); configuration.addRuleClasses(ruleClasses); configuration.setResultCollector(new ProblemOccurrenceResultCollector()); configuration.addSessionCallback(new DelegatingResultHandler());
@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"))); }
@Test public void testwithError() 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, RuleD.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, hasSize(1)); } }