use of com.airbnb.jitney.event.spinaltap.v1.Mutation in project simple-bigtable by spotify.
the class BigtableMutationImplTest method testDeleteColumnFamily.
@Test
public void testDeleteColumnFamily() throws Exception {
final BigtableMutationImpl bigtableMutationImpl = (BigtableMutationImpl) this.bigtableMutation.deleteColumnFamily("family");
verifyGetMutateRowRequest();
bigtableMutationImpl.execute();
bigtableMutationImpl.executeAsync();
assertEquals(1, bigtableMutationImpl.getMutateRowRequest().getMutationsCount());
final Mutation mutation = bigtableMutationImpl.getMutateRowRequest().getMutations(0);
assertEquals(Mutation.MutationCase.DELETE_FROM_FAMILY, mutation.getMutationCase());
assertEquals("family", mutation.getDeleteFromFamily().getFamilyName());
assertEquals(Mutation.DeleteFromRow.getDefaultInstance(), mutation.getDeleteFromRow());
assertEquals(Mutation.DeleteFromColumn.getDefaultInstance(), mutation.getDeleteFromColumn());
assertEquals(Mutation.SetCell.getDefaultInstance(), mutation.getSetCell());
verify(bigtableMock.getMockedDataClient()).mutateRow(bigtableMutation.getMutateRowRequest().build());
verify(bigtableMock.getMockedDataClient()).mutateRowAsync(bigtableMutation.getMutateRowRequest().build());
verifyNoMoreInteractions(bigtableMock.getMockedDataClient());
}
use of com.airbnb.jitney.event.spinaltap.v1.Mutation in project simple-bigtable by spotify.
the class BigtableMutationImplTest method testDeleteCellsFromColumn.
@Test
public void testDeleteCellsFromColumn() throws Exception {
final BigtableMutationImpl bigtableMutationImpl = (BigtableMutationImpl) this.bigtableMutation.deleteCellsFromColumn("family", "qualifier", Optional.empty(), Optional.empty()).deleteCellsFromColumn("family", "qualifier", Optional.of(100L), Optional.of(999L));
verifyGetMutateRowRequest();
bigtableMutationImpl.execute();
bigtableMutationImpl.executeAsync();
assertEquals(2, bigtableMutationImpl.getMutateRowRequest().getMutationsCount());
Mutation mutation = bigtableMutationImpl.getMutateRowRequest().getMutations(0);
assertEquals(Mutation.MutationCase.DELETE_FROM_COLUMN, mutation.getMutationCase());
assertEquals("family", mutation.getDeleteFromColumn().getFamilyName());
assertEquals("qualifier", mutation.getDeleteFromColumn().getColumnQualifier().toStringUtf8());
assertEquals(TimestampRange.getDefaultInstance(), mutation.getDeleteFromColumn().getTimeRange());
assertEquals(Mutation.DeleteFromRow.getDefaultInstance(), mutation.getDeleteFromRow());
assertEquals(Mutation.DeleteFromFamily.getDefaultInstance(), mutation.getDeleteFromFamily());
assertEquals(Mutation.SetCell.getDefaultInstance(), mutation.getSetCell());
mutation = bigtableMutationImpl.getMutateRowRequest().getMutations(1);
assertEquals(Mutation.MutationCase.DELETE_FROM_COLUMN, mutation.getMutationCase());
assertEquals("family", mutation.getDeleteFromColumn().getFamilyName());
assertEquals("qualifier", mutation.getDeleteFromColumn().getColumnQualifier().toStringUtf8());
assertEquals(100L, mutation.getDeleteFromColumn().getTimeRange().getStartTimestampMicros());
assertEquals(999L, mutation.getDeleteFromColumn().getTimeRange().getEndTimestampMicros());
assertEquals(Mutation.DeleteFromRow.getDefaultInstance(), mutation.getDeleteFromRow());
assertEquals(Mutation.DeleteFromFamily.getDefaultInstance(), mutation.getDeleteFromFamily());
assertEquals(Mutation.SetCell.getDefaultInstance(), mutation.getSetCell());
verify(bigtableMock.getMockedDataClient()).mutateRow(bigtableMutation.getMutateRowRequest().build());
verify(bigtableMock.getMockedDataClient()).mutateRowAsync(bigtableMutation.getMutateRowRequest().build());
verifyNoMoreInteractions(bigtableMock.getMockedDataClient());
}
use of com.airbnb.jitney.event.spinaltap.v1.Mutation in project SpinalTap by airbnb.
the class UpdateMutationMapper method map.
public Mutation map(MysqlUpdateMutation mutation) {
MysqlMutationMetadata metadata = mutation.getMetadata();
Mutation thriftMutation = new Mutation(MutationType.UPDATE, metadata.getTimestamp(), sourceId, metadata.getDataSource().getThriftDataSource(), createBinlogHeader(metadata, mutation.getType().getCode()), metadata.getTable().getThriftTable(), transformToEntity(mutation.getRow()));
thriftMutation.setPreviousEntity(transformToEntity(mutation.getPreviousRow()));
return thriftMutation;
}
use of com.airbnb.jitney.event.spinaltap.v1.Mutation in project SpinalTap by airbnb.
the class KafkaDestinationTest method KafkaDestination.
@Test
public void KafkaDestination() throws Exception {
createKafkaTopic(TOPIC);
KafkaProducerConfiguration configs = new KafkaProducerConfiguration(this.bootstrapServers());
KafkaDestination kafkaDestination = new KafkaDestination(null, configs, null, null, 0L);
List<Mutation> messages = new ArrayList<>();
messages.add(createMutation(MutationType.INSERT));
messages.add(createMutation(MutationType.UPDATE));
messages.add(createMutation(MutationType.DELETE));
kafkaDestination.publish(messages);
Properties props = new Properties();
props.setProperty("bootstrap.servers", this.bootstrapServers());
props.setProperty("key.deserializer", "org.apache.kafka.common.serialization.ByteArrayDeserializer");
props.setProperty("value.deserializer", "org.apache.kafka.common.serialization.ByteArrayDeserializer");
KafkaConsumer<byte[], byte[]> kafkaConsumer = new KafkaConsumer<>(props);
kafkaConsumer.assign(Collections.singletonList(new TopicPartition(TOPIC, 0)));
kafkaConsumer.seekToBeginning(new TopicPartition(TOPIC, 0));
List<ConsumerRecords<byte[], byte[]>> records = new ArrayList<>();
ConsumerRecords<byte[], byte[]> record;
long startMs = current();
while (current() - startMs <= 10000L) {
record = kafkaConsumer.poll(1000L);
records.add(record);
if (records.size() == 3)
break;
}
Assert.assertEquals(records.size(), 3);
for (ConsumerRecords<byte[], byte[]> consumerRecords : records) {
for (ConsumerRecord<byte[], byte[]> consumerRecord : consumerRecords) {
com.airbnb.jitney.event.spinaltap.v1.Mutation mutation = getMutation(consumerRecord.value());
switch(mutation.getType()) {
case INSERT:
Assert.assertEquals(mutation, createMutation(MutationType.INSERT));
break;
case UPDATE:
Assert.assertEquals(mutation, createMutation(MutationType.UPDATE));
break;
case DELETE:
Assert.assertEquals(mutation, createMutation(MutationType.DELETE));
break;
}
}
}
kafkaDestination.close();
kafkaConsumer.close();
}
use of com.airbnb.jitney.event.spinaltap.v1.Mutation in project SpinalTap by airbnb.
the class KafkaDestinationTest method createMutation.
private Mutation createMutation(MutationType type) {
Mapper<com.airbnb.spinaltap.Mutation<?>, ? extends TBase<?, ?>> thriftMutationMapper = ThriftMutationMapper.create("spinaltap");
Table table = new Table(0L, TABLE, DATABASE, ImmutableList.of(new ColumnMetadata("id", ColumnDataType.LONGLONG, true, 0)), ImmutableList.of("id"));
MysqlMutationMetadata metadata = new MysqlMutationMetadata(new DataSource(HOSTNAME, 0, "service"), new BinlogFilePos(), table, 0L, 0L, 0L, null, null, 0L, 0);
Row row = new Row(table, ImmutableMap.of("id", new Column(new ColumnMetadata("id", ColumnDataType.LONGLONG, true, 0), 1L)));
MysqlMutation mutation;
switch(type) {
case INSERT:
mutation = new MysqlInsertMutation(metadata, row);
break;
case UPDATE:
mutation = new MysqlUpdateMutation(metadata, row, row);
break;
case DELETE:
mutation = new MysqlDeleteMutation(metadata, row);
break;
default:
mutation = null;
}
return (Mutation) (thriftMutationMapper.map(mutation));
}
Aggregations