// Copyright 2016 Pants project contributors (see CONTRIBUTORS.md). // Licensed under the Apache License, Version 2.0 (see LICENSE). package com.twitter.intellij.pants.metrics; import junit.framework.TestCase; import java.util.Map; public class MetricsUnitTest extends TestCase { @Override public void setUp() throws Exception { System.setProperty(PantsMetrics.SYSTEM_PROPERTY_METRICS_ENABLE, "true"); super.setUp(); PantsMetrics.initialize(); } @Override public void tearDown() throws Exception { System.clearProperty(PantsMetrics.SYSTEM_PROPERTY_METRICS_ENABLE); super.tearDown(); } public void testSanity() throws InterruptedException { PantsMetrics.markIndexStart(); Thread.sleep(1000); PantsMetrics.markIndexEnd(); Map<String, Long> result = PantsMetrics.getCurrentResult(); assertTrue(0 == result.get("export_second")); assertTrue(0 == result.get("load_second")); assertTrue(0 < result.get("indexing_second")); } public void testMetricsEnabled() throws Exception { try { illegalCalls(); fail(String.format("%s should have been thrown.", IllegalStateException.class)); } catch (IllegalStateException ignored) { } } public void testMetricsDisabled() throws Exception { System.clearProperty(PantsMetrics.SYSTEM_PROPERTY_METRICS_ENABLE); illegalCalls(); } private void illegalCalls() throws Exception { PantsMetrics.markIndexStart(); PantsMetrics.markIndexStart(); PantsMetrics.markExportEnd(); PantsMetrics.markExportEnd(); PantsMetrics.markIndexStart(); PantsMetrics.markIndexStart(); PantsMetrics.markResolveStart(); PantsMetrics.markResolveStart(); PantsMetrics.markIndexStart(); PantsMetrics.markResolveEnd(); PantsMetrics.markResolveEnd(); PantsMetrics.getCurrentResult(); PantsMetrics.report(); } }