package io.simplesource.kafka.testutils; import io.simplesource.data.FutureResult; import io.simplesource.kafka.internal.client.RequestPublisher; import org.apache.kafka.common.serialization.Serde; import org.apache.kafka.streams.TopologyTestDriver; import org.apache.kafka.streams.test.ConsumerRecordFactory; import java.time.Instant; class TestPublisher<K, V> implements RequestPublisher<K, V> { private final ConsumerRecordFactory<K,V> factory; TopologyTestDriver driver; private final String topicName; TestPublisher(TopologyTestDriver driver, final Serde<K> keySerde, final Serde<V> valueSerde, String topicName) { this.driver = driver; this.topicName = topicName; factory = new ConsumerRecordFactory<>(keySerde.serializer(), valueSerde.serializer()); } @Override public FutureResult<Exception, PublishResult> publish(K key, V value) { driver.pipeInput(factory.create(topicName, key, value)); return FutureResult.of(new PublishResult(Instant.now().getEpochSecond())); } }