package io.simplesource.kafka.internal.streams.topology; import org.apache.kafka.common.serialization.Serde; import org.apache.kafka.streams.StreamsBuilder; import org.apache.kafka.streams.StreamsConfig; import org.apache.kafka.streams.Topology; import org.apache.kafka.streams.TopologyTestDriver; import org.apache.kafka.streams.state.Stores; import java.util.Properties; import java.util.function.Consumer; class TestDriverInitializer { private StreamsBuilder streamsBuilder; TestDriverInitializer() { streamsBuilder = new StreamsBuilder(); } TestDriverInitializer withStateStore(String stateStoreName, Serde<?> keySerde, Serde<?> valueSerde) { streamsBuilder.addStateStore( Stores.keyValueStoreBuilder(Stores.inMemoryKeyValueStore(stateStoreName), keySerde, valueSerde) .withLoggingDisabled()); return this; } TopologyTestDriver build(Consumer<StreamsBuilder> builderConsumer) { Properties props = new Properties(); props.put(StreamsConfig.APPLICATION_ID_CONFIG, "test"); props.put(StreamsConfig.BOOTSTRAP_SERVERS_CONFIG, "dummy:1234"); props.put(StreamsConfig.COMMIT_INTERVAL_MS_CONFIG, 0); props.put(StreamsConfig.CACHE_MAX_BYTES_BUFFERING_CONFIG, 0); builderConsumer.accept(streamsBuilder); Topology topology = streamsBuilder.build(); return new TopologyTestDriver(topology, props); } }