/** * Returns the InvocationSequenceData of ProblemContext Tag. * * @param leafTag * leafTag for which the InvocationSequenceData should be returned * @return InvocationSequenceData of ProblemContext */ private Optional<CauseCluster> getProblemContext(Tag leafTag) { while (null != leafTag) { if (leafTag.getType().equals(RuleConstants.DIAGNOSIS_TAG_PROBLEM_CONTEXT)) { if (leafTag.getValue() instanceof CauseCluster) { return Optional.of((CauseCluster) leafTag.getValue()); } else { throw new RuntimeException("Problem context has wrong datatype!"); } } leafTag = leafTag.getParent(); } return Optional.empty(); }
/** * Returns the AggregatedInvocationSequenceData of RootCauseInvocations Tag. * * @param leafTag * leafTag for which the AggregatedInvocationSequenceData should be returned * @return AggregatedInvocationSequenceData of RootCauseInvocations */ private Optional<AggregatedDiagnosisData> getRootCauseInvocations(Tag leafTag) { while (null != leafTag) { if (leafTag.getType().equals(RuleConstants.DIAGNOSIS_TAG_PROBLEM_CAUSE)) { if (leafTag.getValue() instanceof AggregatedDiagnosisData) { return Optional.of((AggregatedDiagnosisData) leafTag.getValue()); } else { throw new RuntimeException("Problem cause has wrong datatype!"); } } leafTag = leafTag.getParent(); } return Optional.empty(); }
/** * Returns the InvocationSequenceData of GlobalContext Tag. * * @param leafTag * leafTag for which the InvocationSequenceData should be returned * @return InvocationSequenceData of GlobalContext */ private Optional<InvocationSequenceData> getGlobalContext(Tag leafTag) { while (null != leafTag) { if (leafTag.getType().equals(RuleConstants.DIAGNOSIS_TAG_GLOBAL_CONTEXT)) { if (leafTag.getValue() instanceof InvocationSequenceData) { return Optional.of((InvocationSequenceData) leafTag.getValue()); } else { throw new RuntimeException("Global context has wrong datatype!"); } } leafTag = leafTag.getParent(); } return Optional.empty(); }
/** * Returns the CauseStructure of the CauseStructure Tag. * * @param leafTag * leafTag for which the CauseStructure should be returned * @return CauseStructure of leafTag */ private Optional<CauseStructure> getCauseStructure(Tag leafTag) { while (null != leafTag) { if (leafTag.getType().equals(RuleConstants.DIAGNOSIS_TAG_CAUSE_STRUCTURE)) { if (leafTag.getValue() instanceof CauseStructure) { return Optional.of((CauseStructure) leafTag.getValue()); } else { throw new RuntimeException("Cause structure has wrong datatype!"); } } leafTag = leafTag.getParent(); } return Optional.empty(); } }
@Test public void validRootTagInput() { rocks.inspectit.server.diagnosis.engine.tag.Tag tag = rocks.inspectit.server.diagnosis.engine.tag.Tags.rootTag("TestInput"); assertThat(tag.getType(), equalTo(rocks.inspectit.server.diagnosis.engine.tag.Tags.ROOT_TAG)); assertThat(tag.getValue().toString(), equalTo("TestInput")); assertThat(tag.getParent(), equalTo(null)); assertThat(tag.getState(), equalTo(TagState.LEAF)); }
@Test public void nullParentTag() { Collection<rocks.inspectit.server.diagnosis.engine.tag.Tag> tags = rocks.inspectit.server.diagnosis.engine.tag.Tags.tags("A", null, "TestInput1", "TestInput2"); rocks.inspectit.server.diagnosis.engine.tag.Tag[] tagArray = tags.toArray(new rocks.inspectit.server.diagnosis.engine.tag.Tag[0]); assertThat(tags, hasSize(2)); assertThat(tagArray[0].getType(), equalTo("A")); assertThat(tagArray[1].getType(), equalTo("A")); assertThat(tagArray[0].getValue().toString(), equalTo("TestInput1")); assertThat(tagArray[1].getValue().toString(), equalTo("TestInput2")); assertThat(tagArray[0].getParent(), equalTo(null)); assertThat(tagArray[1].getParent(), equalTo(null)); assertThat(tagArray[0].getState(), equalTo(TagState.LEAF)); assertThat(tagArray[1].getState(), equalTo(TagState.LEAF)); }
@Test public void nullParentTag() { rocks.inspectit.server.diagnosis.engine.tag.Tag tag = rocks.inspectit.server.diagnosis.engine.tag.Tags.tag("A", "TestInput"); assertThat(tag.getType(), equalTo("A")); assertThat(tag.getValue().toString(), equalTo("TestInput")); assertThat(tag.getParent(), equalTo(null)); assertThat(tag.getState(), equalTo(TagState.LEAF)); }
@Test public void nullRootTagInput() { rocks.inspectit.server.diagnosis.engine.tag.Tag tag = rocks.inspectit.server.diagnosis.engine.tag.Tags.rootTag(null); assertThat(tag.getType(), equalTo(rocks.inspectit.server.diagnosis.engine.tag.Tags.ROOT_TAG)); assertThat(tag.getValue(), equalTo(null)); assertThat(tag.getParent(), equalTo(null)); assertThat(tag.getState(), equalTo(TagState.LEAF)); } }
@Test public void withParentTag() { rocks.inspectit.server.diagnosis.engine.tag.Tag tagA = rocks.inspectit.server.diagnosis.engine.tag.Tags.tag("A", "TestInput"); assertThat(tagA.getState(), equalTo(TagState.LEAF)); rocks.inspectit.server.diagnosis.engine.tag.Tag tagB = rocks.inspectit.server.diagnosis.engine.tag.Tags.tag("B", "TestInput", tagA); assertThat(tagB.getType(), equalTo("B")); assertThat(tagB.getValue().toString(), equalTo("TestInput")); assertThat(tagB.getParent(), equalTo(tagA)); assertThat(tagB.getState(), equalTo(TagState.LEAF)); assertThat(tagA.getState(), equalTo(TagState.PARENT)); } }
@Test public void withParentTag() { rocks.inspectit.server.diagnosis.engine.tag.Tag tagA = rocks.inspectit.server.diagnosis.engine.tag.Tags.tag("A", "TestInput"); Collection<rocks.inspectit.server.diagnosis.engine.tag.Tag> tags = rocks.inspectit.server.diagnosis.engine.tag.Tags.tags("B", tagA, "TestInput1", "TestInput2"); rocks.inspectit.server.diagnosis.engine.tag.Tag[] tagArray = tags.toArray(new rocks.inspectit.server.diagnosis.engine.tag.Tag[0]); assertThat(tags, hasSize(2)); assertThat(tagArray[0].getType(), equalTo("B")); assertThat(tagArray[1].getType(), equalTo("B")); assertThat(tagArray[0].getValue().toString(), equalTo("TestInput1")); assertThat(tagArray[1].getValue().toString(), equalTo("TestInput2")); assertThat(tagArray[0].getParent(), equalTo(tagA)); assertThat(tagArray[1].getParent(), equalTo(tagA)); assertThat(tagArray[0].getState(), equalTo(TagState.LEAF)); assertThat(tagArray[1].getState(), equalTo(TagState.LEAF)); assertThat(tagA.getState(), equalTo(TagState.PARENT)); } }