@ParameterizedTest
    @ValueSource(strings = {"zk", "kraft"})
    public void testDescribeUnderMinIsrPartitionsMixed(String quorum) {
        String underMinIsrTopic = "under-min-isr-topic";
        String notUnderMinIsrTopic = "not-under-min-isr-topic";
        String offlineTopic = "offline-topic";
        String fullyReplicatedTopic = "fully-replicated-topic";

        scala.collection.mutable.HashMap<Object, Seq<Object>> fullyReplicatedReplicaAssignmentMap = new scala.collection.mutable.HashMap<>();
        fullyReplicatedReplicaAssignmentMap.put(0, JavaConverters.asScalaBufferConverter(Arrays.asList((Object) 1, (Object) 2, (Object) 3)).asScala().toSeq());

        scala.collection.mutable.HashMap<Object, Seq<Object>> offlineReplicaAssignmentMap = new scala.collection.mutable.HashMap<>();
        offlineReplicaAssignmentMap.put(0, JavaConverters.asScalaBufferConverter(Arrays.asList((Object) 0)).asScala().toSeq());

        Properties topicConfig = new Properties();
        topicConfig.put(TopicConfig.MIN_IN_SYNC_REPLICAS_CONFIG, "6");

        int partitions = 1;
        short replicationFactor = 6;
        int negativePartition = -1;
        short negativeReplicationFactor = -1;
        TestUtils.createTopicWithAdmin(adminClient, underMinIsrTopic, scalaBrokers, scalaControllers, partitions, replicationFactor,
                scala.collection.immutable.Map$.MODULE$.empty(), topicConfig
        );
        TestUtils.createTopicWithAdmin(adminClient, notUnderMinIsrTopic, scalaBrokers, scalaControllers, partitions, replicationFactor,
                scala.collection.immutable.Map$.MODULE$.empty(), new Properties()
        );
        TestUtils.createTopicWithAdmin(adminClient, offlineTopic, scalaBrokers, scalaControllers, negativePartition, negativeReplicationFactor,
                offlineReplicaAssignmentMap, new Properties()
        );
        TestUtils.createTopicWithAdmin(adminClient, fullyReplicatedTopic, scalaBrokers, scalaControllers, negativePartition, negativeReplicationFactor,
                fullyReplicatedReplicaAssignmentMap, new Properties()
        );


        try {
            killBroker(0);
            if (isKRaftTest()) {
                ensureConsistentKRaftMetadata();
            } else {
                kafka.utils.TestUtils.waitUntilTrue(
                    () -> aliveBrokers().forall(broker ->
                        broker.metadataCache().getPartitionInfo(underMinIsrTopic, 0).get().isr().size() < 6 &&
                            broker.metadataCache().getPartitionInfo(offlineTopic, 0).get().leader() == MetadataResponse.NO_LEADER_ID),
                    () -> "Timeout waiting for partition metadata propagating to brokers for underMinIsrTopic topic",
                    org.apache.kafka.test.TestUtils.DEFAULT_MAX_WAIT_MS, 100L);
            }
            TestUtils.waitForAllReassignmentsToComplete(adminClient, 100L);
            String output = captureDescribeTopicStandardOut(buildTopicCommandOptionsWithBootstrap("--describe", "--under-min-isr-partitions"));
            String[] rows = output.split(System.lineSeparator());
            assertTrue(rows[0].startsWith(String.format("Topic: %s", underMinIsrTopic)),
                    "Unexpected output: " + rows[0]);
            assertTrue(rows[1].startsWith(String.format("\tTopic: %s", offlineTopic)),
                    "Unexpected output: " + rows[1]);
            assertEquals(2, rows.length);
        } finally {
            restartDeadBrokers(false);
        }
    }
Test describe --under-min-isr-partitions option with four topics:
  (1) topic with partition under the configured min ISR count
  (2) topic with under-replicated partition (but not under min ISR count)
  (3) topic with offline partition
  (4) topic with fully replicated partition

Output should only display the (1) topic with partition under min ISR count and (3) topic with offline partition
tools/src/test/java/org/apache/kafka/tools/TopicCommandIntegrationTest.java