public static <V> List<V> waitUntilMinValuesRecordsReceived(final Properties consumerConfig,
                                                                final String topic,
                                                                final int expectedNumRecords,
                                                                final long waitTime) throws Exception {
        final List<V> accumData = new ArrayList<>();
        final String reason = String.format(
            "Did not receive all %d records from topic %s within %d ms",
            expectedNumRecords,
            topic,
            waitTime
        );
        try (final Consumer<Object, V> consumer = createConsumer(consumerConfig)) {
            retryOnExceptionWithTimeout(waitTime, () -> {
                final List<V> readData =
                    readValues(topic, consumer, waitTime, expectedNumRecords);
                accumData.addAll(readData);
                assertThat(reason, accumData.size(), is(greaterThanOrEqualTo(expectedNumRecords)));
            });
        }
        return accumData;
    }
Wait until enough data (value records) has been consumed.

@param consumerConfig     Kafka Consumer configuration
@param topic              Topic to consume from
@param expectedNumRecords Minimum number of expected records
@param waitTime           Upper bound of waiting time in milliseconds
@return All the records consumed, or null if no records are consumed
@throws AssertionError    if the given wait time elapses
streams/src/test/java/org/apache/kafka/streams/integration/utils/IntegrationTestUtils.java