@ParameterizedTest
    @ValueSource(strings = {"zk", "kraft"})
    public void testDescribeUnderMinIsrPartitions(String quorum) {
        Properties topicConfig = new Properties();
        topicConfig.put(TopicConfig.MIN_IN_SYNC_REPLICAS_CONFIG, "6");
        int partitions = 1;
        short replicationFactor = 6;
        TestUtils.createTopicWithAdmin(adminClient, testTopicName, scalaBrokers, scalaControllers, partitions, replicationFactor,
                scala.collection.immutable.Map$.MODULE$.empty(), topicConfig
        );
        try {
            killBroker(0);
            if (isKRaftTest()) {
                ensureConsistentKRaftMetadata();
            } else {
                kafka.utils.TestUtils.waitUntilTrue(
                    () -> aliveBrokers().forall(b -> b.metadataCache().getPartitionInfo(testTopicName, 0).get().isr().size() == 5),
                    () -> String.format("Timeout waiting for partition metadata propagating to brokers for %s topic", testTopicName),
                    org.apache.kafka.test.TestUtils.DEFAULT_MAX_WAIT_MS, 100L
                );
            }
            String output = captureDescribeTopicStandardOut(buildTopicCommandOptionsWithBootstrap("--describe", "--under-min-isr-partitions"));
            String[] rows = output.split(System.lineSeparator());
            assertTrue(rows[0].startsWith(String.format("Topic: %s", testTopicName)),
                    "Unexpected topic: " + rows[0]);
        } finally {
            restartDeadBrokers(false);
        }
    }
Implementations must override this method to return a set of KafkaConfigs. This method will be invoked for every
test and should not reuse previous configurations unless they select their ports randomly when servers are started.

Note the replica fetch max bytes is set to `1` in order to throttle the rate of replication for test
`testDescribeUnderReplicatedPartitionsWhenReassignmentIsInProgress`.
tools/src/test/java/org/apache/kafka/tools/TopicCommandIntegrationTest.java