/** Return the target table name. This will be used to combine batcheable requests */ @Override public PartitionKey getBatchPartitionKey(MutateRowsRequest request) { return new PartitionKey(request.getTableName()); }
@Override public void validateBatch(Batch<RequestT, ResponseT> item) { PartitionKey itemPartitionKey = batchingDescriptor.getBatchPartitionKey(item.getRequest()); if (!itemPartitionKey.equals(partitionKey)) { String requestClassName = item.getRequest().getClass().getSimpleName(); throw new IllegalArgumentException( String.format( "For type %s, invalid partition key: %s, should be: %s", requestClassName, itemPartitionKey, partitionKey)); } }
@Override public void validateBatch(Batch<RequestT, ResponseT> item) { PartitionKey itemPartitionKey = batchingDescriptor.getBatchPartitionKey(item.getRequest()); if (!itemPartitionKey.equals(partitionKey)) { String requestClassName = item.getRequest().getClass().getSimpleName(); throw new IllegalArgumentException( String.format( "For type %s, invalid partition key: %s, should be: %s", requestClassName, itemPartitionKey, partitionKey)); } }
@Override public PartitionKey getBatchPartitionKey(PublishRequest request) { return new PartitionKey(request.getTopic()); }
@Override public PartitionKey getBatchPartitionKey(WriteLogEntriesRequest request) { return new PartitionKey( request.getLogName(), request.getResource(), request.getLabelsMap()); }
@Test public void partitionKeyTest() { String myTableName = NameUtil.formatTableName("my-project", "my-instance", "my-table"); MutateRowsRequest request = createRequest(2).toBuilder().setTableName(myTableName).build(); PartitionKey actual = descriptor.getBatchPartitionKey(request); assertThat(actual).isEqualTo(new PartitionKey(myTableName)); }
/** Return the target table name. This will be used to combine batcheable requests */ @Override public PartitionKey getBatchPartitionKey(MutateRowsRequest request) { return new PartitionKey(request.getTableName()); }
@Override public PartitionKey getBatchPartitionKey(LabeledIntList request) { return new PartitionKey(request.label); }
@Override public PartitionKey getBatchPartitionKey(List<Integer> request) { return new PartitionKey(request.get(0) % 2); }
@Override public PartitionKey getBatchPartitionKey(WriteLogEntriesRequest request) { return new PartitionKey( request.getLogName(), request.getResource(), request.getLabelsMap()); }
@Test public void testValidate() { BatchExecutor<List<Integer>, Integer> executor = new BatchExecutor<List<Integer>, Integer>(integerDescriptor, new PartitionKey(0)); List<Integer> request = new ArrayList<Integer>(); request.add(2); Batch<List<Integer>, Integer> batchingContextOk = new Batch<>(integerDescriptor, request, null, null); executor.validateBatch(batchingContextOk); }
@Test(expected = IllegalArgumentException.class) public void testValidateFailure() { BatchExecutor<List<Integer>, Integer> executor = new BatchExecutor<List<Integer>, Integer>(integerDescriptor, new PartitionKey(0)); List<Integer> request = new ArrayList<>(); request.add(3); Batch<List<Integer>, Integer> batchingContextOk = new Batch<>(integerDescriptor, request, null, null); executor.validateBatch(batchingContextOk); } }
batcherFactory.getPushingBatcher(new PartitionKey("foo")); batcherFactory.getPushingBatcher(new PartitionKey("foo")); batcherFactory.getPushingBatcher(new PartitionKey("bar"));