package rocks.inspectit.server.diagnosis.engine;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasSize;
import java.util.ArrayList;
import java.util.List;
import org.testng.annotations.Test;
import rocks.inspectit.server.diagnosis.engine.rule.store.DefaultRuleOutputStorage;
import rocks.inspectit.server.diagnosis.engine.session.DefaultSessionResult;
import rocks.inspectit.server.diagnosis.engine.session.DefaultSessionResultCollector;
import rocks.inspectit.server.diagnosis.engine.session.ISessionCallback;
import rocks.inspectit.server.diagnosis.engine.testrules.RuleA;
import rocks.inspectit.server.diagnosis.engine.testrules.RuleB;
import rocks.inspectit.server.diagnosis.engine.testrules.RuleC;
import rocks.inspectit.server.diagnosis.engine.testrules.RuleD;
import rocks.inspectit.server.diagnosis.engine.testrules.RuleE;
import rocks.inspectit.shared.all.testbase.TestBase;
/**
* @author Claudio Waldvogel
*/
@SuppressWarnings("all")
public class DiagnosisEngineTest extends TestBase {
public class Analyze extends DiagnosisEngineTest {
@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));
}
}
}