def METHOD_NAME(cluster, testNodeId, testNodeArgs, resultMsgs):
    testNode = None
    testResult = False
    resultDesc = "!!!BUG IS CONFIRMED ON TEST CASE #{} ({})".format(
        testNodeId,
        testNodeArgs
    )
    try:
        Print(
            "Launch node #{} to execute test scenario: {}".format(
                testNodeId,
                testNodeArgs
            )
        )
        testNode = cluster.getNode(testNodeId)
        assert not testNode.verifyAlive() # resets pid so reluanch works
        testNode.relaunch(addSwapFlags={"--terminate-at-block": "9999999"})
        # Wait for node to start up.
        time.sleep(3)
        # Check the node stops at the correct block.
        checkStatus(testNode, testNodeArgs)
        # Kill node after use.
        if not testNode.killed:
            assert testNode.kill(signal.SIGTERM)
        # Replay the blockchain for the node that just finished,
        # also checking it stops at the correct block.
        checkReplay(testNode, testNodeArgs)
        resultDesc = "!!!TEST CASE #{} ({}) IS SUCCESSFUL".format(
            testNodeId,
            testNodeArgs
        )
        testResult = True
    finally:
        Print(resultDesc)
        resultMsgs.append(resultDesc)
        # Kill node after use.
        if testNode and not testNode.killed:
            assert testNode.kill(signal.SIGTERM)
    return testResult