use of org.apache.kafka.common.header.internals.RecordHeaders in project kafka by apache.
the class CachingPersistentWindowStoreTest method setUp.
@Before
public void setUp() {
keySchema = new WindowKeySchema();
bytesStore = new RocksDBSegmentedBytesStore("test", "metrics-scope", 0, SEGMENT_INTERVAL, keySchema);
underlyingStore = new RocksDBWindowStore(bytesStore, false, WINDOW_SIZE);
final TimeWindowedDeserializer<String> keyDeserializer = new TimeWindowedDeserializer<>(new StringDeserializer(), WINDOW_SIZE);
keyDeserializer.setIsChangelogTopic(true);
cacheListener = new CacheFlushListenerStub<>(keyDeserializer, new StringDeserializer());
cachingStore = new CachingWindowStore(underlyingStore, WINDOW_SIZE, SEGMENT_INTERVAL);
cachingStore.setFlushListener(cacheListener, false);
cache = new ThreadCache(new LogContext("testCache "), MAX_CACHE_SIZE_BYTES, new MockStreamsMetrics(new Metrics()));
context = new InternalMockProcessorContext<>(TestUtils.tempDirectory(), null, null, null, cache);
context.setRecordContext(new ProcessorRecordContext(DEFAULT_TIMESTAMP, 0, 0, TOPIC, new RecordHeaders()));
cachingStore.init((StateStoreContext) context, cachingStore);
}
use of org.apache.kafka.common.header.internals.RecordHeaders in project kafka by apache.
the class ChangeLoggingSessionBytesStoreTest method shouldLogPutsWithPosition.
@Test
public void shouldLogPutsWithPosition() {
EasyMock.expect(inner.getPosition()).andReturn(POSITION).anyTimes();
inner.put(key1, value1);
EasyMock.expectLastCall();
init();
final Bytes binaryKey = SessionKeySchema.toBinary(key1);
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);
context.logChange(store.name(), binaryKey, value1, 0L, POSITION);
EasyMock.replay(context);
store.put(key1, value1);
EasyMock.verify(inner, context);
}
use of org.apache.kafka.common.header.internals.RecordHeaders 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.common.header.internals.RecordHeaders 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.common.header.internals.RecordHeaders 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);
}
Aggregations