@Test public void testSerializeWithLimiterAndWriteCredFn() { doTestSerialize(createMockRateLimiter(), null, (k, v) -> 1); }
@Test public void testDeserializeReadFunctionAndLimiterRateOnlyReadWrite() { doTestDeserializeReadFunctionAndLimiter(true, true, true); }
@Test public void testSerializeNullWriteFunction() { String tableId = "1"; RemoteTableDescriptor desc = new RemoteTableDescriptor(tableId) .withReadFunction(createMockTableReadFunction()); Map<String, String> tableConfig = desc.toConfig(new MapConfig()); assertExists(RemoteTableDescriptor.READ_FN, tableId, tableConfig); assertEquals(null, RemoteTableDescriptor.WRITE_FN, tableId, tableConfig); }
private void doTestSerialize(RateLimiter rateLimiter, TableRateLimiter.CreditFunction readCredFn, TableRateLimiter.CreditFunction writeCredFn) { String tableId = "1"; RemoteTableDescriptor desc = new RemoteTableDescriptor(tableId) .withReadFunction(createMockTableReadFunction()) .withWriteFunction(createMockTableWriteFunction()); if (rateLimiter != null) { desc.withRateLimiter(rateLimiter, readCredFn, writeCredFn); } else { desc.withReadRateLimit(100); desc.withWriteRateLimit(200); } Map<String, String> tableConfig = desc.toConfig(new MapConfig()); assertExists(RemoteTableDescriptor.RATE_LIMITER, tableId, tableConfig); Assert.assertEquals(readCredFn != null, tableConfig.containsKey(JavaTableConfig.buildKey(tableId, RemoteTableDescriptor.READ_CREDIT_FN))); Assert.assertEquals(writeCredFn != null, tableConfig.containsKey(JavaTableConfig.buildKey(tableId, RemoteTableDescriptor.WRITE_CREDIT_FN))); }
private void doTestDeserializeReadFunctionAndLimiter(boolean rateOnly, boolean rlGets, boolean rlPuts) { int numRateLimitOps = (rlGets ? 1 : 0) + (rlPuts ? 1 : 0); RemoteTableDescriptor<String, String> desc = new RemoteTableDescriptor("1") .withReadFunction(createMockTableReadFunction()) .withReadRetryPolicy(new TableRetryPolicy().withRetryPredicate((ex) -> false)) .withWriteFunction(createMockTableWriteFunction()) .withAsyncCallbackExecutorPoolSize(10); provider.init(createMockContext(desc)); Table table = provider.getTable(); Assert.assertTrue(table instanceof RemoteTable);
@Test(expected = IllegalArgumentException.class) public void testSpecifyBothRateAndRateLimiter() { RemoteTableDescriptor desc = new RemoteTableDescriptor("1"); desc.withReadFunction(createMockTableReadFunction()); desc.withReadRateLimit(100); desc.withRateLimiter(createMockRateLimiter(), null, null); desc.toConfig(new MapConfig()); }
@Test public void testSerializeSimple() { doTestSerialize(null, null, null); }
@Test public void testSerializeWithLimiterAndReadWriteCredFns() { doTestSerialize(createMockRateLimiter(), (key, value) -> 1, (key, value) -> 1); }
@Test public void testDeserializeReadFunctionNoRateLimit() { doTestDeserializeReadFunctionAndLimiter(false, false, false); }
@Test public void testSerializeWithLimiter() { doTestSerialize(createMockRateLimiter(), null, null); }
@Test public void testDeserializeReadFunctionAndLimiterRead() { doTestDeserializeReadFunctionAndLimiter(false, true, false); }
@Test public void testSerializeWithLimiterAndReadCredFn() { doTestSerialize(createMockRateLimiter(), (k, v) -> 1, null); }
@Test public void testDeserializeReadFunctionAndLimiterReadWrite() { doTestDeserializeReadFunctionAndLimiter(false, true, true); }
@Test public void testDeserializeReadFunctionAndLimiterRateOnlyWrite() { doTestDeserializeReadFunctionAndLimiter(true, false, true); }
@Test public void testDeserializeReadFunctionAndLimiterWrite() { doTestDeserializeReadFunctionAndLimiter(false, false, true); }
@Test public void testDeserializeReadFunctionAndLimiterRateOnlyRead() { doTestDeserializeReadFunctionAndLimiter(true, true, false); }