@Test public void testMeasureZeroToOne() { double[] values = { 0.1, 0.2, 0.7, 0.8, 0.1, 0.4, 0.6, 0.9, 0.1, 1.0, 0.0, 0.5, 0.4 }; DoubleDistributionSummary s = newInstance(); for (double v : values) { s.record(v); } clock.setWallTime(65000L); double t = 0.0; double t2 = 0.0; double n = 0.0; double max = 0.0; for (Measurement m : s.measure()) { switch (get(m.id(), "statistic")) { case "count": n = m.value(); break; case "totalAmount": t = m.value(); break; case "totalOfSquares": t2 = m.value(); break; case "max": max = m.value(); break; default: Assertions.fail("unexpected id: " + m.id()); break; } } Assertions.assertEquals(1.0, max, 1e-12); Assertions.assertEquals(stddev(values), Math.sqrt((n * t2 - t * t) / (n * n)), 1e-12); }
@Test public void testMeasure() { DoubleDistributionSummary t = newInstance(); t.record(42.0); clock.setWallTime(65000L); for (Measurement m : t.measure()) { Assertions.assertEquals(m.timestamp(), 65000L); switch (get(m.id(), "statistic")) { case "count": Assertions.assertEquals(m.value(), 1.0 / 65.0, 1e-12); break; case "totalAmount": Assertions.assertEquals(m.value(), 42.0 / 65.0, 1e-12); break; case "totalOfSquares": Assertions.assertEquals(m.value(), 42.0 * 42.0 / 65.0, 1e-12); break; case "max": Assertions.assertEquals(m.value(), 42.0, 1e-12); break; default: Assertions.fail("unexpected id: " + m.id()); break; } } }
@Test public void testMeasureNotEnoughTime() { DoubleDistributionSummary t = newInstance(); t.record(42.0); clock.setWallTime(500L); int c = 0; for (Measurement m : t.measure()) { ++c; } Assertions.assertEquals(0L, c); }
@Disabled public void testRegister() { DoubleDistributionSummary t = newInstance(); registry.register(t); t.record(42.0); clock.setWallTime(65000L); for (Measurement m : registry.get(t.id()).measure()) { Assertions.assertEquals(m.timestamp(), 65000L); switch (get(m.id(), "statistic")) { case "count": Assertions.assertEquals(m.value(), 1.0 / 65.0, 1e-12); break; case "totalAmount": Assertions.assertEquals(m.value(), 42.0 / 65.0, 1e-12); break; case "totalOfSquares": Assertions.assertEquals(m.value(), 42.0 * 42.0 / 65.0, 1e-12); break; case "max": Assertions.assertEquals(m.value(), 42.0, 1e-12); break; default: Assertions.fail("unexpected id: " + m.id()); break; } } }
@Test public void testInit() { DoubleDistributionSummary t = newInstance(); Assertions.assertEquals(t.count(), 0L); Assertions.assertEquals(t.totalAmount(), 0.0, 1e-12); }
@Test public void testRecord() { DoubleDistributionSummary t = newInstance(); t.record(42.0); Assertions.assertEquals(t.count(), 1L); Assertions.assertEquals(t.totalAmount(), 42.0, 1e-12); }
@Test public void testExpire() { clock.setWallTime(0L); DoubleDistributionSummary t = newInstance(); Assertions.assertFalse(t.hasExpired()); t.record(42.0); clock.setWallTime(15L * 60000L); Assertions.assertFalse(t.hasExpired()); clock.setWallTime(15L * 60000L + 1); Assertions.assertTrue(t.hasExpired()); t.record(42.0); Assertions.assertFalse(t.hasExpired()); }