Search in sources :

Example 36 with InternalMockProcessorContext

use of org.apache.kafka.test.InternalMockProcessorContext in project kafka by apache.

the class ChangeLoggingTimestampedKeyValueBytesStoreTest method shouldDelegateInit.

@Test
public void shouldDelegateInit() {
    final InternalMockProcessorContext context = mockContext();
    final KeyValueStore<Bytes, byte[]> inner = EasyMock.mock(InMemoryKeyValueStore.class);
    final StateStore outer = new ChangeLoggingTimestampedKeyValueBytesStore(inner);
    inner.init((StateStoreContext) context, outer);
    EasyMock.expectLastCall();
    EasyMock.replay(inner);
    outer.init((StateStoreContext) context, outer);
    EasyMock.verify(inner);
}
Also used : Bytes(org.apache.kafka.common.utils.Bytes) StateStore(org.apache.kafka.streams.processor.StateStore) InternalMockProcessorContext(org.apache.kafka.test.InternalMockProcessorContext) Test(org.junit.Test)

Example 37 with InternalMockProcessorContext

use of org.apache.kafka.test.InternalMockProcessorContext in project kafka by apache.

the class ChangeLoggingTimestampedKeyValueBytesStoreTest method before.

@Before
public void before() {
    final InternalMockProcessorContext context = mockContext();
    context.setTime(0);
    store.init((StateStoreContext) context, store);
}
Also used : InternalMockProcessorContext(org.apache.kafka.test.InternalMockProcessorContext) Before(org.junit.Before)

Example 38 with InternalMockProcessorContext

use of org.apache.kafka.test.InternalMockProcessorContext in project kafka by apache.

the class ChangeLoggingTimestampedKeyValueBytesStoreTest method shouldDelegateDeprecatedInit.

@SuppressWarnings("deprecation")
@Test
public void shouldDelegateDeprecatedInit() {
    final InternalMockProcessorContext context = mockContext();
    final KeyValueStore<Bytes, byte[]> inner = EasyMock.mock(InMemoryKeyValueStore.class);
    final StateStore outer = new ChangeLoggingTimestampedKeyValueBytesStore(inner);
    inner.init((ProcessorContext) context, outer);
    EasyMock.expectLastCall();
    EasyMock.replay(inner);
    outer.init((ProcessorContext) context, outer);
    EasyMock.verify(inner);
}
Also used : Bytes(org.apache.kafka.common.utils.Bytes) StateStore(org.apache.kafka.streams.processor.StateStore) InternalMockProcessorContext(org.apache.kafka.test.InternalMockProcessorContext) Test(org.junit.Test)

Example 39 with InternalMockProcessorContext

use of org.apache.kafka.test.InternalMockProcessorContext in project kafka by apache.

the class CompositeReadOnlyKeyValueStoreTest method newStoreInstance.

private KeyValueStore<String, String> newStoreInstance() {
    final KeyValueStore<String, String> store = Stores.keyValueStoreBuilder(Stores.inMemoryKeyValueStore(storeName), Serdes.String(), Serdes.String()).build();
    @SuppressWarnings("rawtypes") final InternalMockProcessorContext context = new InternalMockProcessorContext<>(new StateSerdes<>(ProcessorStateManager.storeChangelogTopic("appId", storeName, null), Serdes.String(), Serdes.String()), new MockRecordCollector());
    context.setTime(1L);
    store.init((StateStoreContext) context, store);
    return store;
}
Also used : MockRecordCollector(org.apache.kafka.test.MockRecordCollector) InternalMockProcessorContext(org.apache.kafka.test.InternalMockProcessorContext)

Example 40 with InternalMockProcessorContext

use of org.apache.kafka.test.InternalMockProcessorContext in project kafka by apache.

the class AbstractSessionBytesStoreTest method shouldLogAndMeasureExpiredRecords.

@Test
public void shouldLogAndMeasureExpiredRecords() {
    final Properties streamsConfig = StreamsTestUtils.getStreamsConfig();
    final SessionStore<String, Long> sessionStore = buildSessionStore(RETENTION_PERIOD, Serdes.String(), Serdes.Long());
    final InternalMockProcessorContext context = new InternalMockProcessorContext(TestUtils.tempDirectory(), new StreamsConfig(streamsConfig), recordCollector);
    final Time time = new SystemTime();
    context.setTime(1L);
    context.setSystemTimeMs(time.milliseconds());
    sessionStore.init((StateStoreContext) context, sessionStore);
    try (final LogCaptureAppender appender = LogCaptureAppender.createAndRegister()) {
        // Advance stream time by inserting record with large enough timestamp that records with timestamp 0 are expired
        // Note that rocksdb will only expire segments at a time (where segment interval = 60,000 for this retention period)
        sessionStore.put(new Windowed<>("initial record", new SessionWindow(0, 2 * SEGMENT_INTERVAL)), 0L);
        // Try inserting a record with timestamp 0 -- should be dropped
        sessionStore.put(new Windowed<>("late record", new SessionWindow(0, 0)), 0L);
        sessionStore.put(new Windowed<>("another on-time record", new SessionWindow(0, 2 * SEGMENT_INTERVAL)), 0L);
        final List<String> messages = appender.getMessages();
        assertThat(messages, hasItem("Skipping record for expired segment."));
    }
    final Map<MetricName, ? extends Metric> metrics = context.metrics().metrics();
    final String threadId = Thread.currentThread().getName();
    final Metric dropTotal;
    final Metric dropRate;
    dropTotal = metrics.get(new MetricName("dropped-records-total", "stream-task-metrics", "", mkMap(mkEntry("thread-id", threadId), mkEntry("task-id", "0_0"))));
    dropRate = metrics.get(new MetricName("dropped-records-rate", "stream-task-metrics", "", mkMap(mkEntry("thread-id", threadId), mkEntry("task-id", "0_0"))));
    assertEquals(1.0, dropTotal.metricValue());
    assertNotEquals(0.0, dropRate.metricValue());
    sessionStore.close();
}
Also used : Time(org.apache.kafka.common.utils.Time) SystemTime(org.apache.kafka.common.utils.SystemTime) Properties(java.util.Properties) MetricName(org.apache.kafka.common.MetricName) LogCaptureAppender(org.apache.kafka.streams.processor.internals.testutil.LogCaptureAppender) Metric(org.apache.kafka.common.Metric) SessionWindow(org.apache.kafka.streams.kstream.internals.SessionWindow) InternalMockProcessorContext(org.apache.kafka.test.InternalMockProcessorContext) StreamsConfig(org.apache.kafka.streams.StreamsConfig) SystemTime(org.apache.kafka.common.utils.SystemTime) Test(org.junit.Test)

Aggregations

InternalMockProcessorContext (org.apache.kafka.test.InternalMockProcessorContext)44 Test (org.junit.Test)23 LogContext (org.apache.kafka.common.utils.LogContext)20 Metrics (org.apache.kafka.common.metrics.Metrics)19 Before (org.junit.Before)17 MockStreamsMetrics (org.apache.kafka.streams.processor.internals.MockStreamsMetrics)14 NoOpRecordCollector (org.apache.kafka.test.NoOpRecordCollector)14 StreamsConfig (org.apache.kafka.streams.StreamsConfig)10 Properties (java.util.Properties)8 Bytes (org.apache.kafka.common.utils.Bytes)8 StateStore (org.apache.kafka.streams.processor.StateStore)7 File (java.io.File)6 MockTime (org.apache.kafka.common.utils.MockTime)6 ProcessorRecordContext (org.apache.kafka.streams.processor.internals.ProcessorRecordContext)6 ArrayList (java.util.ArrayList)5 RecordHeaders (org.apache.kafka.common.header.internals.RecordHeaders)5 Serializer (org.apache.kafka.common.serialization.Serializer)5 ProducerRecord (org.apache.kafka.clients.producer.ProducerRecord)4 MetricName (org.apache.kafka.common.MetricName)4 HashMap (java.util.HashMap)3