abstract void execute(Admin admin, Namespace ns, PrintStream out) throws Exception;
@Test
    public void testFindHangingNoMappedTransactionalId() throws Exception {
        TopicPartition topicPartition = new TopicPartition("foo", 5);

        String[] args = new String[]{
            "--bootstrap-server",
            "localhost:9092",
            "find-hanging",
            "--topic",
            topicPartition.topic(),
            "--partition",
            String.valueOf(topicPartition.partition())
        };

        long producerId = 132L;
        short producerEpoch = 5;
        long lastTimestamp = time.milliseconds() - TimeUnit.MINUTES.toMillis(60);
        int coordinatorEpoch = 19;
        long txnStartOffset = 29384L;

        expectDescribeProducers(
            topicPartition,
            producerId,
            producerEpoch,
            lastTimestamp,
            OptionalInt.of(coordinatorEpoch),
            OptionalLong.of(txnStartOffset)
        );

        expectListTransactions(
            new ListTransactionsOptions().filterProducerIds(singleton(producerId)),
            singletonMap(1, Collections.emptyList())
        );

        expectDescribeTransactions(Collections.emptyMap());

        execute(args);
        assertNormalExit();

        assertHangingTransaction(
            topicPartition,
            producerId,
            producerEpoch,
            coordinatorEpoch,
            txnStartOffset,
            lastTimestamp
        );
    }