use of com.twitter.common.quantity.Amount in project commons by twitter.
the class DeadlineCallerTest method makeDeadline.
private DeadlineCaller makeDeadline(final boolean shouldTimeOut) {
final CountDownLatch cancelled = new CountDownLatch(1);
if (shouldTimeOut) {
addTearDown(new TearDown() {
@Override
public void tearDown() throws Exception {
// This will block forever if cancellation does not occur and interrupt the ~indefinite
// sleep.
cancelled.await();
}
});
}
Caller sleepyCaller = new CallerDecorator(caller, false) {
@Override
public Object call(Method method, Object[] args, @Nullable AsyncMethodCallback callback, @Nullable Amount<Long, Time> connectTimeoutOverride) throws Throwable {
if (shouldTimeOut) {
try {
Thread.sleep(Long.MAX_VALUE);
fail("Expected late work to be cancelled and interrupted");
} catch (InterruptedException e) {
cancelled.countDown();
}
}
return caller.call(method, args, callback, connectTimeoutOverride);
}
};
return new DeadlineCaller(sleepyCaller, false, executorService, DEADLINE);
}
use of com.twitter.common.quantity.Amount 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.Amount in project commons by twitter.
the class ApproximateHistogramTest method testMemConstraint.
@Test
public void testMemConstraint() {
ImmutableList.Builder<Amount<Long, Data>> builder = ImmutableList.builder();
builder.add(Amount.of(1L, Data.KB));
builder.add(Amount.of(4L, Data.KB));
builder.add(Amount.of(8L, Data.KB));
builder.add(Amount.of(16L, Data.KB));
builder.add(Amount.of(32L, Data.KB));
builder.add(Amount.of(64L, Data.KB));
builder.add(Amount.of(256L, Data.KB));
builder.add(Amount.of(1L, Data.MB));
builder.add(Amount.of(16L, Data.MB));
builder.add(Amount.of(32L, Data.MB));
List<Amount<Long, Data>> sizes = builder.build();
for (Amount<Long, Data> maxSize : sizes) {
ApproximateHistogram hist = new ApproximateHistogram(maxSize);
for (long i = 0; i < 1000 * 1000; i++) {
hist.add(i);
}
long size = ObjectSizeCalculator.getObjectSize(hist);
assertTrue(size < maxSize.as(Data.BYTES));
}
}
Aggregations