Search in sources :

Example 6 with Time

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);
    }
}
Also used : Histogram(com.twitter.common.metrics.Histogram) WindowedApproxHistogram(com.twitter.common.stats.WindowedApproxHistogram) WindowedApproxHistogram(com.twitter.common.stats.WindowedApproxHistogram) FakeClock(com.twitter.common.util.testing.FakeClock) Time(com.twitter.common.quantity.Time) Data(com.twitter.common.quantity.Data) HistogramInterface(com.twitter.common.metrics.HistogramInterface) WindowedStatistics(com.twitter.common.stats.WindowedStatistics)

Example 7 with Time

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]
}
Also used : FakeClock(com.twitter.common.util.testing.FakeClock) Time(com.twitter.common.quantity.Time) Test(org.junit.Test)

Example 8 with Time

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();
}
Also used : Amount(com.twitter.common.quantity.Amount) Time(com.twitter.common.quantity.Time) Capture(org.easymock.Capture) Executor(java.util.concurrent.Executor) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) Test(org.junit.Test)

Example 9 with Time

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));
}
Also used : FakeClock(com.twitter.common.util.testing.FakeClock) Time(com.twitter.common.quantity.Time) Test(org.junit.Test)

Aggregations

Time (com.twitter.common.quantity.Time)9 FakeClock (com.twitter.common.util.testing.FakeClock)7 Test (org.junit.Test)7 Pair (com.twitter.common.collections.Pair)1 Histogram (com.twitter.common.metrics.Histogram)1 HistogramInterface (com.twitter.common.metrics.HistogramInterface)1 Amount (com.twitter.common.quantity.Amount)1 Data (com.twitter.common.quantity.Data)1 WindowedApproxHistogram (com.twitter.common.stats.WindowedApproxHistogram)1 WindowedStatistics (com.twitter.common.stats.WindowedStatistics)1 RealHistogram (com.twitter.common.stats.testing.RealHistogram)1 ServerSetImpl (com.twitter.common.zookeeper.ServerSetImpl)1 ServiceInstance (com.twitter.thrift.ServiceInstance)1 InetSocketAddress (java.net.InetSocketAddress)1 Collection (java.util.Collection)1 Executor (java.util.concurrent.Executor)1 ThreadPoolExecutor (java.util.concurrent.ThreadPoolExecutor)1 TTransport (org.apache.thrift.transport.TTransport)1 Capture (org.easymock.Capture)1 Before (org.junit.Before)1