@ParameterizedTest
    @ValueSource(strings = {"zk", "kraft"})
    public void testDeleteInternalTopic(String quorum) throws Exception {
        // create the offset topic
        TestUtils.createTopicWithAdmin(adminClient, Topic.GROUP_METADATA_TOPIC_NAME, scalaBrokers, scalaControllers, defaultNumPartitions, defaultReplicationFactor,
                scala.collection.immutable.Map$.MODULE$.empty(), new Properties()
        );
        // Try to delete the Topic.GROUP_METADATA_TOPIC_NAME which is allowed by default.
        // This is a difference between the new and the old command as the old one didn't allow internal topic deletion.
        // If deleting internal topics is not desired, ACLS should be used to control it.
        TopicCommand.TopicCommandOptions deleteOffsetTopicOpts =
                buildTopicCommandOptionsWithBootstrap("--delete", "--topic", Topic.GROUP_METADATA_TOPIC_NAME);
        String deleteOffsetTopicPath = kafka.zk.DeleteTopicsTopicZNode.path(Topic.GROUP_METADATA_TOPIC_NAME);
        if (!isKRaftTest()) {
            assertFalse(zkClient().pathExists(deleteOffsetTopicPath), "Delete path for topic shouldn't exist before deletion.");
        }
        topicService.deleteTopic(deleteOffsetTopicOpts);
        TestUtils.verifyTopicDeletion(zkClientOrNull(), Topic.GROUP_METADATA_TOPIC_NAME, defaultNumPartitions, brokers());
    }
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