private static void verifyMetrics(Metrics metric, boolean fromCache, boolean multiQuery) { assertTrue(metric.getDuration(TimeUnit.MICROSECONDS) > 0); assertTrue(metric.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > 0); String hasMultiQuery = (String) metric.getAnnotation(QueryProfiler.MULTIQUERY_ANNOTATION); assertTrue(multiQuery?hasMultiQuery.equalsIgnoreCase("true"):hasMultiQuery==null); for (Metrics submetric : metric.getNested()) { assertTrue(submetric.getDuration(TimeUnit.MICROSECONDS) > 0); switch (submetric.getName()) { case "optimization": assertNull(submetric.getCount(TraversalMetrics.ELEMENT_COUNT_ID)); break; case "backend-query": if (fromCache) assertFalse("Should not execute backend-queries when cached",true); assertTrue(submetric.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > 0); break; default: assertFalse("Unrecognized nested query: " + submetric.getName(),true); } } }
final Double percentDur = (Double) m.getAnnotation(PERCENT_DURATION_KEY);
private static void verifyMetrics(Metrics metric, boolean fromCache, boolean multiQuery) { assertTrue(metric.getDuration(TimeUnit.MICROSECONDS) > 0); assertTrue(metric.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > 0); String hasMultiQuery = (String) metric.getAnnotation(QueryProfiler.MULTIQUERY_ANNOTATION); assertTrue(multiQuery ? hasMultiQuery.equalsIgnoreCase("true") : hasMultiQuery == null); for (Metrics subMetric : metric.getNested()) { assertTrue(subMetric.getDuration(TimeUnit.MICROSECONDS) > 0); switch (subMetric.getName()) { case "optimization": assertNull(subMetric.getCount(TraversalMetrics.ELEMENT_COUNT_ID)); break; case "backend-query": if (fromCache) assertFalse("Should not execute backend-queries when cached", true); assertTrue(subMetric.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > 0); break; default: assertFalse("Unrecognized nested query: " + subMetric.getName(), true); } } }
final Double percentDur = (Double) m.getAnnotation(PERCENT_DURATION_KEY);
private void validate_g_V_out_out_profile_grateful(final TraversalMetrics traversalMetrics) { traversalMetrics.toString(); // ensure no exceptions are thrown assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations", graph.getClass().getSimpleName(), equalTo("TinkerGraph")); Metrics metrics = traversalMetrics.getMetrics(0); assertEquals(808, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertEquals(808, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0); assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0); metrics = traversalMetrics.getMetrics(1); assertEquals(8049, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0); assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0); metrics = traversalMetrics.getMetrics(2); assertEquals(327370, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0); assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0); double totalPercentDuration = 0; for (Metrics m : traversalMetrics.getMetrics()) { totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY); } assertEquals(100, totalPercentDuration, 0.000001); }
private void validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(final TraversalMetrics traversalMetrics) { traversalMetrics.toString(); // ensure no exceptions are thrown assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations", graph.getClass().getSimpleName(), equalTo("TinkerGraph")); // Grab the second (sideEffect{sleep}) step and check the times. Metrics metrics = traversalMetrics.getMetrics(1); // 6 elements w/ a 10ms sleep each = 60ms with 10ms for other computation. assertTrue("Duration should be at least the length of the sleep (59ms): " + metrics.getDuration(TimeUnit.MILLISECONDS), metrics.getDuration(TimeUnit.MILLISECONDS) >= 59); // 6 elements w/ a 5ms sleep each = 30ms plus 20ms for other computation metrics = traversalMetrics.getMetrics(2); assertTrue("Duration should be at least the length of the sleep (29ms): " + metrics.getDuration(TimeUnit.MILLISECONDS), metrics.getDuration(TimeUnit.MILLISECONDS) >= 29); double totalPercentDuration = 0; for (Metrics m : traversalMetrics.getMetrics()) { totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY); } assertEquals(100, totalPercentDuration, 0.000001); }
private void validate_g_V_repeat_both_modern_profile(final TraversalMetrics traversalMetrics, final boolean withRepeatUnrollStrategy) { traversalMetrics.toString(); // ensure no exceptions are thrown assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations", graph.getClass().getSimpleName(), equalTo("TinkerGraph")); Metrics metrics = traversalMetrics.getMetrics(0); assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); metrics = traversalMetrics.getMetrics(1); assertEquals(withRepeatUnrollStrategy ? 12 : 72, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); if (!withRepeatUnrollStrategy) assertTrue("Count should be greater than traversers.", metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0); assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0); // Test the nested global metrics of the repeat step if (!withRepeatUnrollStrategy) { final Metrics vertexStepNestedInRepeat = (Metrics) metrics.getNested().toArray()[0]; assertEquals(114, vertexStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertNotEquals(0, vertexStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Count should be greater than traversers.", vertexStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > vertexStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Times should be positive.", vertexStepNestedInRepeat.getDuration(TimeUnit.MICROSECONDS) >= 0); } double totalPercentDuration = 0; for (Metrics m : traversalMetrics.getMetrics()) { totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY); } assertEquals(100, totalPercentDuration, 0.000001); }
private void validate_g_V_out_out_profile_grateful(final TraversalMetrics traversalMetrics) { traversalMetrics.toString(); // ensure no exceptions are thrown assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations", graph.getClass().getSimpleName(), equalTo("TinkerGraph")); Metrics metrics = traversalMetrics.getMetrics(0); assertEquals(808, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertEquals(808, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0); assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0); metrics = traversalMetrics.getMetrics(1); assertEquals(8049, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0); assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0); metrics = traversalMetrics.getMetrics(2); assertEquals(327370, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0); assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0); double totalPercentDuration = 0; for (Metrics m : traversalMetrics.getMetrics()) { totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY); } assertEquals(100, totalPercentDuration, 0.000001); }
private void validate_g_V_sideEffectXThread_sleepX10XX_sideEffectXThread_sleepX5XX_profile(final TraversalMetrics traversalMetrics) { traversalMetrics.toString(); // ensure no exceptions are thrown assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations", graph.getClass().getSimpleName(), equalTo("TinkerGraph")); // Grab the second (sideEffect{sleep}) step and check the times. Metrics metrics = traversalMetrics.getMetrics(1); // 6 elements w/ a 10ms sleep each = 60ms with 10ms for other computation. assertTrue("Duration should be at least the length of the sleep (59ms): " + metrics.getDuration(TimeUnit.MILLISECONDS), metrics.getDuration(TimeUnit.MILLISECONDS) >= 59); // 6 elements w/ a 5ms sleep each = 30ms plus 20ms for other computation metrics = traversalMetrics.getMetrics(2); assertTrue("Duration should be at least the length of the sleep (29ms): " + metrics.getDuration(TimeUnit.MILLISECONDS), metrics.getDuration(TimeUnit.MILLISECONDS) >= 29); double totalPercentDuration = 0; for (Metrics m : traversalMetrics.getMetrics()) { totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY); } assertEquals(100, totalPercentDuration, 0.000001); }
private void validate_g_V_repeat_both_modern_profile(final TraversalMetrics traversalMetrics, final boolean withRepeatUnrollStrategy) { traversalMetrics.toString(); // ensure no exceptions are thrown assumeThat("The following assertions apply to TinkerGraph only as provider strategies can alter the steps to not comply with expectations", graph.getClass().getSimpleName(), equalTo("TinkerGraph")); Metrics metrics = traversalMetrics.getMetrics(0); assertEquals(6, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertEquals(6, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); metrics = traversalMetrics.getMetrics(1); assertEquals(withRepeatUnrollStrategy ? 12 : 72, metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertNotEquals(0, metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); if (!withRepeatUnrollStrategy) assertTrue("Count should be greater than traversers.", metrics.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > metrics.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Percent duration should be positive.", (Double) metrics.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY) >= 0); assertTrue("Times should be positive.", metrics.getDuration(TimeUnit.MICROSECONDS) >= 0); // Test the nested global metrics of the repeat step if (!withRepeatUnrollStrategy) { final Metrics vertexStepNestedInRepeat = (Metrics) metrics.getNested().toArray()[0]; assertEquals(114, vertexStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID).longValue()); assertNotEquals(0, vertexStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Count should be greater than traversers.", vertexStepNestedInRepeat.getCount(TraversalMetrics.ELEMENT_COUNT_ID) > vertexStepNestedInRepeat.getCount(TraversalMetrics.TRAVERSER_COUNT_ID).longValue()); assertTrue("Times should be positive.", vertexStepNestedInRepeat.getDuration(TimeUnit.MICROSECONDS) >= 0); } double totalPercentDuration = 0; for (Metrics m : traversalMetrics.getMetrics()) { totalPercentDuration += (Double) m.getAnnotation(TraversalMetrics.PERCENT_DURATION_KEY); } assertEquals(100, totalPercentDuration, 0.000001); }