@Test
  void shouldPropagateLocalAndRemoteTransactions() throws Exception {
    try (final TestNodeList nodes = new TestNodeList()) {
      // Create & Start Nodes
      final TestNode node1 = nodes.create(vertx, null, null, noDiscovery);
      final TestNode node2 = nodes.create(vertx, null, null, noDiscovery);
      final TestNode node3 = nodes.create(vertx, null, null, noDiscovery);
      final TestNode node4 = nodes.create(vertx, null, null, noDiscovery);
      final SignatureAlgorithm signatureAlgorithm = SignatureAlgorithmFactory.getInstance();
      final KeyPair keyPair =
          signatureAlgorithm.createKeyPair(
              signatureAlgorithm.createPrivateKey(
                  Bytes32.fromHexString(
                      "8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63")));
      final TransactionTestFixture transactionBuilder = new TransactionTestFixture();
      transactionBuilder.gasLimit(1_000_000);
      final Transaction transaction1 = transactionBuilder.nonce(0).createTransaction(keyPair);
      final Transaction transaction2 = transactionBuilder.nonce(1).createTransaction(keyPair);
      final Transaction transaction3 = transactionBuilder.nonce(2).createTransaction(keyPair);
      final Transaction transaction4 = transactionBuilder.nonce(3).createTransaction(keyPair);
      final Transaction transaction5 = transactionBuilder.nonce(4).createTransaction(keyPair);
      initTest(nodes);
      node1.receiveRemoteTransaction(transaction1);
      waitForPendingTransactionCounts(nodes, 1);

      node2.receiveRemoteTransaction(transaction2);
      waitForPendingTransactionCounts(nodes, 2);

      node3.receiveRemoteTransaction(transaction3);
      waitForPendingTransactionCounts(nodes, 3);

      node4.receiveRemoteTransaction(transaction4);
      waitForPendingTransactionCounts(nodes, 4);

      node3.receiveLocalTransaction(transaction5);
      waitForPendingTransactionCounts(nodes, 5);
    }
  }
Simulate a 4-node cluster. Send at least 1 Tx to each node, and multiple Tx to at least one
node. Verify that all nodes get the correct number of pending transactions.
ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolPropagationTest.java