<K, V> void pipeRecord(final String topic,
                           final TestRecord<K, V> record,
                           final Serializer<K> keySerializer,
                           final Serializer<V> valueSerializer,
                           final Instant time) {
        final byte[] serializedKey = keySerializer.serialize(topic, record.headers(), record.key());
        final byte[] serializedValue = valueSerializer.serialize(topic, record.headers(), record.value());
        final long timestamp;
        if (time != null) {
            timestamp = time.toEpochMilli();
        } else if (record.timestamp() != null) {
            timestamp = record.timestamp();
        } else {
            throw new IllegalStateException("Provided `TestRecord` does not have a timestamp and no timestamp overwrite was provided via `time` parameter.");
        }

        pipeRecord(topic, timestamp, serializedKey, serializedValue, record.headers());
    }
Get all the names of all the topics to which records have been produced during the test run.
<p>
Call this method after piping the input into the test driver to retrieve the full set of topic names the topology
produced records to.
<p>
The returned set of topic names may include user (e.g., output) and internal (e.g., changelog, repartition) topic
names.

@return the set of topic names the topology has produced to
streams/test-utils/src/main/java/org/apache/kafka/streams/TopologyTestDriver.java