use of org.apache.kafka.streams.query.Position in project kafka by apache.
the class ChangeLoggingKeyValueBytesStoreTest method shouldLogPositionOnPut.
@Test
public void shouldLogPositionOnPut() {
context.setRecordContext(new ProcessorRecordContext(-1, INPUT_OFFSET, INPUT_PARTITION, INPUT_TOPIC_NAME, new RecordHeaders()));
context.setTime(1L);
store.put(hi, there);
assertThat(collector.collected().size(), equalTo(1));
assertThat(collector.collected().get(0).headers(), is(notNullValue()));
final Header versionHeader = collector.collected().get(0).headers().lastHeader(ChangelogRecordDeserializationHelper.CHANGELOG_VERSION_HEADER_KEY);
assertThat(versionHeader, is(notNullValue()));
assertThat(versionHeader.equals(ChangelogRecordDeserializationHelper.CHANGELOG_VERSION_HEADER_RECORD_CONSISTENCY), is(true));
final Header vectorHeader = collector.collected().get(0).headers().lastHeader(ChangelogRecordDeserializationHelper.CHANGELOG_POSITION_HEADER_KEY);
assertThat(vectorHeader, is(notNullValue()));
final Position position = PositionSerde.deserialize(ByteBuffer.wrap(vectorHeader.value()));
assertThat(position.getPartitionPositions(INPUT_TOPIC_NAME), is(notNullValue()));
assertThat(position.getPartitionPositions(INPUT_TOPIC_NAME), hasEntry(0, 100L));
}
use of org.apache.kafka.streams.query.Position in project kafka by apache.
the class ChangeLoggingWindowBytesStoreTest method shouldLogPutsWithPosition.
@Test
public void shouldLogPutsWithPosition() {
EasyMock.expect(inner.getPosition()).andReturn(POSITION).anyTimes();
inner.put(bytesKey, value, 0);
EasyMock.expectLastCall();
init();
final Bytes key = WindowKeySchema.toStoreKeyBinary(bytesKey, 0, 0);
EasyMock.reset(context);
final RecordMetadata recordContext = new ProcessorRecordContext(0L, 1L, 0, "", new RecordHeaders());
EasyMock.expect(context.recordMetadata()).andStubReturn(Optional.of(recordContext));
EasyMock.expect(context.timestamp()).andStubReturn(0L);
final Position position = Position.fromMap(mkMap(mkEntry("", mkMap(mkEntry(0, 1L)))));
context.logChange(store.name(), key, value, 0L, position);
EasyMock.replay(context);
store.put(bytesKey, value, context.timestamp());
EasyMock.verify(inner, context);
}
use of org.apache.kafka.streams.query.Position in project kafka by apache.
the class InMemoryWindowStoreTest method shouldMatchPositionAfterPut.
@Test
public void shouldMatchPositionAfterPut() {
final MeteredWindowStore<Integer, String> meteredSessionStore = (MeteredWindowStore<Integer, String>) windowStore;
final ChangeLoggingWindowBytesStore changeLoggingSessionBytesStore = (ChangeLoggingWindowBytesStore) meteredSessionStore.wrapped();
final InMemoryWindowStore inMemoryWindowStore = (InMemoryWindowStore) changeLoggingSessionBytesStore.wrapped();
context.setRecordContext(new ProcessorRecordContext(0, 1, 0, "", new RecordHeaders()));
windowStore.put(0, "0", SEGMENT_INTERVAL);
context.setRecordContext(new ProcessorRecordContext(0, 2, 0, "", new RecordHeaders()));
windowStore.put(1, "1", SEGMENT_INTERVAL);
context.setRecordContext(new ProcessorRecordContext(0, 3, 0, "", new RecordHeaders()));
windowStore.put(2, "2", SEGMENT_INTERVAL);
context.setRecordContext(new ProcessorRecordContext(0, 4, 0, "", new RecordHeaders()));
windowStore.put(3, "3", SEGMENT_INTERVAL);
final Position expected = Position.fromMap(mkMap(mkEntry("", mkMap(mkEntry(0, 4L)))));
final Position actual = inMemoryWindowStore.getPosition();
assertEquals(expected, actual);
}
use of org.apache.kafka.streams.query.Position in project kafka by apache.
the class ChangeLoggingTimestampedWindowBytesStoreTest method shouldLogPutsWithPosition.
@Test
public void shouldLogPutsWithPosition() {
EasyMock.expect(inner.getPosition()).andReturn(POSITION).anyTimes();
inner.put(bytesKey, valueAndTimestamp, 0);
EasyMock.expectLastCall();
init();
final Bytes key = WindowKeySchema.toStoreKeyBinary(bytesKey, 0, 0);
EasyMock.reset(context);
final RecordMetadata recordContext = new ProcessorRecordContext(0L, 1L, 0, "", new RecordHeaders());
EasyMock.expect(context.recordMetadata()).andStubReturn(Optional.of(recordContext));
final Position position = Position.fromMap(mkMap(mkEntry("", mkMap(mkEntry(0, 1L)))));
context.logChange(store.name(), key, value, 42, position);
EasyMock.replay(context);
store.put(bytesKey, valueAndTimestamp, context.timestamp());
EasyMock.verify(inner, context);
}
use of org.apache.kafka.streams.query.Position in project ksql by confluentinc.
the class KsMaterializedTableIQv2Test method getRowResult.
private static StateQueryResult getRowResult(final GenericRow row) {
final StateQueryResult result = new StateQueryResult<>();
final QueryResult queryResult = QueryResult.forResult(ValueAndTimestamp.make(row, -1));
final Position position = Position.emptyPosition();
position.withComponent(TOPIC, PARTITION, OFFSET);
queryResult.setPosition(position);
result.addResult(PARTITION, queryResult);
return result;
}
Aggregations