@Test public void rootCauseMustHaveTwoElementsInRawInvocationSequence() { List<InvocationSequenceData> nestedSequences = new ArrayList<InvocationSequenceData>(); InvocationSequenceData firstChildSequenceData = new InvocationSequenceData(DEF_DATE, PLATFORM_IDENT, SENSOR_TYPE_IDENT, METHOD_IDENT_EQUAL); TimerData timerData = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); TimerData firstTimerData = timerData; firstTimerData.setExclusiveDuration(2000); firstTimerData.setDuration(2000); firstChildSequenceData.setTimerData(firstTimerData); InvocationSequenceData secondChildSequenceData = new InvocationSequenceData(DEF_DATE, PLATFORM_IDENT, SENSOR_TYPE_IDENT, METHOD_IDENT_EQUAL); TimerData secondTimerData = timerData; secondTimerData.setExclusiveDuration(100); secondTimerData.setDuration(100); secondChildSequenceData.setTimerData(secondTimerData); nestedSequences.add(firstChildSequenceData); nestedSequences.add(secondChildSequenceData); when(problemContext.getCommonContext()).thenReturn(commonContext); when(commonContext.getMethodIdent()).thenReturn(METHOD_IDENT_EQUAL); when(commonContext.getDuration()).thenReturn(3100.0); when(problemContext.getCauseInvocations()).thenReturn(nestedSequences); AggregatedDiagnosisData rootCause = problemCauseRule.action(); assertThat("Raw invocation sequence must have two elements", rootCause.getRawInvocationsSequenceElements(), hasSize(2)); }
verify(timerData, times(0)).calculateCpuMax(anyDouble()); verify(timerData, times(0)).calculateCpuMin(anyDouble()); verify(timerData, times(0)).setDuration(anyDouble()); verify(timerData, times(0)).setExclusiveCount(anyLong()); verify(timerData, times(0)).setExclusiveDuration(anyDouble());
TimerData parentTimer = new TimerData(); parentTimer.setCount(1L); parentTimer.setDuration(2L); parent.setTimerData(parentTimer); TimerData childTimer = new TimerData(); childTimer.setCount(1L); childTimer.setDuration(1L); child.setTimerData(childTimer); child.setParentSequence(parent);
InvocationSequenceData parentSequence = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 9L); TimerData timerDataSeachDB = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataSeachDB.setDuration(2000); timerDataSeachDB.setExclusiveDuration(2000d); parentSequence.setTimerData(timerDataSeachDB); InvocationSequenceData firstSequence = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 10L); TimerData timerDataFirstSequence = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataFirstSequence.setDuration(100d); timerDataFirstSequence.setExclusiveDuration(100d); timerDataFirstSequence.calculateExclusiveMin(1d); InvocationSequenceData significantCluster = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 10L); TimerData timerDataSignificantCluster = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataSignificantCluster.setDuration(1700d); timerDataSignificantCluster.setExclusiveDuration(1700d); timerDataSignificantCluster.calculateExclusiveMin(1d); InvocationSequenceData secondSequence = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 10L); TimerData timerDataSecondSequence = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataSecondSequence.setDuration(200d); timerDataSecondSequence.setExclusiveDuration(200d); timerDataSecondSequence.calculateExclusiveMin(1d); timeWastingOperationTimerData.calculateExclusiveMin(1); timeWastingOperationTimerData.setExclusiveDuration(2000); timeWastingOperationTimerData.setDuration(2200); AggregatedDiagnosisTimerData aggregatedDiagnosisTimerData = new AggregatedDiagnosisTimerData(timeWastingOperationTimerData); when(timeWastingOperation.getAggregatedDiagnosisTimerData()).thenReturn(aggregatedDiagnosisTimerData);
InvocationSequenceData rootInvocation = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 3L); TimerData timerDataGlobalContext = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataGlobalContext.setDuration(Short.MAX_VALUE); timerDataGlobalContext.setExclusiveDuration(Short.MAX_VALUE); rootInvocation.setTimerData(timerDataGlobalContext); InvocationSequenceData firstSequence = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 5L); TimerData timerDataFirstSequence = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataFirstSequence.setDuration(Short.MAX_VALUE); timerDataFirstSequence.setExclusiveDuration(Short.MAX_VALUE); firstSequence.setTimerData(timerDataFirstSequence); InvocationSequenceData expectedProblemContext = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 9L); TimerData timerDataExpectedProblemContext = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataExpectedProblemContext.setDuration(Short.MAX_VALUE); timerDataExpectedProblemContext.setExclusiveDuration(Short.MAX_VALUE); expectedProblemContext.setTimerData(timerDataExpectedProblemContext); InvocationSequenceData invocation = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, i); TimerData timerDataFirstChildSequence = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataFirstChildSequence.setDuration(1d); timerDataFirstChildSequence.setExclusiveDuration(1d); invocation.setTimerData(timerDataFirstChildSequence); timeWastingOperationTimerData.calculateExclusiveMin(1); timeWastingOperationTimerData.setExclusiveDuration(Short.MAX_VALUE); timeWastingOperationTimerData.setDuration(Short.MAX_VALUE); AggregatedDiagnosisTimerData aggregatedDiagnosisTimerData = new AggregatedDiagnosisTimerData(timeWastingOperationTimerData); when(timeWastingOperation.getAggregatedDiagnosisTimerData()).thenReturn(aggregatedDiagnosisTimerData);
TimerData parentTimer = new TimerData(); parentTimer.setCount(1L); parentTimer.setDuration(2L); parent.setTimerData(parentTimer);
timeWastingOperationTimerData.calculateExclusiveMin(1); timeWastingOperationTimerData.setExclusiveDuration(2000); timeWastingOperationTimerData.setDuration(2000); AggregatedDiagnosisTimerData aggregatedDiagnosisTimerData = new AggregatedDiagnosisTimerData(timeWastingOperationTimerData); when(timeWastingOperation.getAggregatedDiagnosisTimerData()).thenReturn(aggregatedDiagnosisTimerData);
InvocationSequenceData rootInvocation = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 3L); TimerData timerDataGlobalContext = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataGlobalContext.setDuration(5200d); timerDataGlobalContext.setExclusiveDuration(5200d); rootInvocation.setTimerData(timerDataGlobalContext); InvocationSequenceData firstSequence = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 5L); TimerData timerDataFirstSequence = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataFirstSequence.setDuration(5200d); timerDataFirstSequence.setExclusiveDuration(5200d); firstSequence.setTimerData(timerDataFirstSequence); InvocationSequenceData expectedProblemContext = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 9L); TimerData timerDataExpectedProblemContext = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataExpectedProblemContext.setDuration(5000d); timerDataExpectedProblemContext.setExclusiveDuration(5000d); expectedProblemContext.setTimerData(timerDataExpectedProblemContext); InvocationSequenceData firstChildSeq = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 10L); TimerData timerDataFirstChildSeq = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataFirstChildSeq.setDuration(2400d); timerDataFirstChildSeq.setExclusiveDuration(2400d); timerDataFirstChildSeq.calculateExclusiveMin(1d); InvocationSequenceData secondChildSeq = new InvocationSequenceData(defDate, platformIdent, sensorTypeIdent, 10L); TimerData timerDataSecondChildSeq = new TimerData(new Timestamp(System.currentTimeMillis()), 10L, 20L, 30L); timerDataSecondChildSeq.setDuration(1400d); timerDataSecondChildSeq.setExclusiveDuration(1400d); timerDataSecondChildSeq.calculateExclusiveMin(1d);
timerData.setCount(count); timerData.setExclusiveCount(count); timerData.setDuration(duration); timerData.setCpuDuration(duration); timerData.setExclusiveDuration(duration); timerData2.setCount(count); timerData2.setExclusiveCount(count); timerData2.setDuration(duration); timerData2.setCpuDuration(duration); timerData2.setExclusiveDuration(duration);
timerData.setCount(COUNT); timerData.setExclusiveCount(COUNT); timerData.setDuration(DURATION); timerData.setCpuDuration(DURATION); timerData.setExclusiveDuration(DURATION);
/** * Aggregates the values given in the supplied timer data parameter to the objects data. * * @param timerData * Data to be aggregated into current object. */ public void aggregateTimerData(TimerData timerData) { super.aggregateInvocationAwareData(timerData); this.setCount(this.getCount() + timerData.getCount()); this.setDuration(this.getDuration() + timerData.getDuration()); this.calculateMax(timerData.getMax()); this.calculateMin(timerData.getMin()); if (timerData.isCpuMetricDataAvailable()) { this.setCpuDuration(this.getCpuDuration() + timerData.getCpuDuration()); this.calculateCpuMax(timerData.getCpuMax()); this.calculateCpuMin(timerData.getCpuMin()); } if (timerData.isExclusiveTimeDataAvailable()) { this.addExclusiveDuration(timerData.getExclusiveDuration()); this.setExclusiveCount(this.getExclusiveCount() + timerData.getExclusiveCount()); this.calculateExclusiveMax(timerData.getExclusiveMax()); this.calculateExclusiveMin(timerData.getExclusiveMin()); } this.charting = this.charting | timerData.isCharting(); }