use of com.twitter.common.quantity.Time in project commons by twitter.
the class MetricsQueryBench method setUp.
@Override
protected void setUp() {
metrics = Metrics.createDetached();
FakeClock clock = new FakeClock();
Amount<Long, Time> window = WindowedApproxHistogram.DEFAULT_WINDOW;
int slices = WindowedApproxHistogram.DEFAULT_SLICES;
Amount<Long, Time> delta = Amount.of(window.as(Time.MILLISECONDS) / N, Time.MILLISECONDS);
Amount<Long, Data> maxMem = WindowedApproxHistogram.DEFAULT_MAX_MEMORY;
for (int i = 0; i < 10; i++) {
metrics.createCounter("counter-" + i).increment();
HistogramInterface h = new Histogram("hist-" + i, window, slices, maxMem, null, Histogram.DEFAULT_QUANTILES, clock, metrics);
for (int j = 0; j < N; j++) {
h.add(j);
clock.advance(delta);
}
}
// Initialize Histograms and fill them with values (in every buckets for windowed ones)
hist = new Histogram("hist", window, slices, maxMem, null, Histogram.DEFAULT_QUANTILES, clock);
approxHist = new WindowedApproxHistogram(window, slices, maxMem, clock);
winStats = new WindowedStatistics(window, slices, clock);
for (int j = 0; j < N; j++) {
hist.add(j);
approxHist.add(j);
winStats.accumulate(j);
clock.advance(delta);
}
}
use of com.twitter.common.quantity.Time in project commons by twitter.
the class WindowedTest method testWindowed.
@Test
public void testWindowed() {
Amount<Long, Time> window = Amount.of(1L, Time.MINUTES);
int slices = 3;
Amount<Long, Time> delta = Amount.of(Amount.of(1L, Time.MINUTES).as(Time.NANOSECONDS) / 3, Time.NANOSECONDS);
FakeClock clock = new FakeClock();
WindowedBox win = new WindowedBox(window, slices, clock);
// [0][0][0][0]
clock.advance(Amount.of(1L, Time.NANOSECONDS));
win.increment();
// [0][0][0][1]
Assert.assertEquals(0, win.sum());
clock.advance(delta);
win.increment();
win.increment();
Assert.assertEquals(1, win.sum());
// [0][0][1][2]
clock.advance(delta);
win.increment();
win.increment();
win.increment();
Assert.assertEquals(3, win.sum());
// [0][1][2][3]
clock.advance(delta);
win.increment();
win.increment();
win.increment();
win.increment();
Assert.assertEquals(6, win.sum());
// [1][2][3][4]
clock.advance(delta);
win.increment();
win.increment();
win.increment();
win.increment();
win.increment();
Assert.assertEquals(9, win.sum());
// [2][3][4][5]
}
use of com.twitter.common.quantity.Time in project commons by twitter.
the class ConnectionPoolTest method testCreating.
@Test
public void testCreating() throws Exception {
Amount<Long, Time> timeout = Amount.of(1L, Time.SECONDS);
Executor executor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.MILLISECONDS, new SynchronousQueue<Runnable>());
expect(connectionFactory.mightCreate()).andReturn(true);
Capture<Amount<Long, Time>> timeout1 = new Capture<Amount<Long, Time>>();
@SuppressWarnings("unchecked") Connection<String, Integer> connection1 = control.createMock(Connection.class);
expect(connectionFactory.create(capture(timeout1))).andReturn(connection1);
Capture<Amount<Long, Time>> timeout2 = new Capture<Amount<Long, Time>>();
@SuppressWarnings("unchecked") Connection<String, Integer> connection2 = control.createMock(Connection.class);
expect(connectionFactory.create(capture(timeout2))).andReturn(connection2);
control.replay();
ConnectionPool<Connection<String, Integer>> connectionPool = createConnectionPool(executor);
assertSame(connection1, connectionPool.get(timeout));
assertTrue(timeout1.hasCaptured());
Long timeout1Millis = timeout1.getValue().as(Time.MILLISECONDS);
assertTrue(timeout1Millis > 0 && timeout1Millis <= timeout.as(Time.MILLISECONDS));
assertSame(connection2, connectionPool.get(timeout));
assertTrue(timeout2.hasCaptured());
Long timeout2Millis = timeout1.getValue().as(Time.MILLISECONDS);
assertTrue(timeout2Millis > 0 && timeout2Millis <= timeout.as(Time.MILLISECONDS));
control.verify();
}
use of com.twitter.common.quantity.Time in project commons by twitter.
the class WindowedHistogramTest method testClearedWinHistogram.
@Test
public void testClearedWinHistogram() {
FakeClock clock = new FakeClock();
Amount<Long, Time> window = Amount.of(100L, Time.MILLISECONDS);
int slices = 10;
Amount<Long, Time> sliceDuration = Amount.of(window.as(Time.NANOSECONDS) / slices, Time.NANOSECONDS);
WindowedHistogram<?> h = createFullHistogram(window, slices, clock);
long p0 = h.getQuantile(0.1);
long p50 = h.getQuantile(0.5);
long p90 = h.getQuantile(0.9);
assertFalse(0 == p0);
assertFalse(0 == p50);
assertFalse(0 == p90);
h.clear();
assertEquals(0, h.getQuantile(0.1));
assertEquals(0, h.getQuantile(0.5));
assertEquals(0, h.getQuantile(0.9));
// reload the histogram with the exact same values than before
fillHistogram(h, sliceDuration, slices, clock);
assertEquals(p0, h.getQuantile(0.1));
assertEquals(p50, h.getQuantile(0.5));
assertEquals(p90, h.getQuantile(0.9));
}
Aggregations