diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/AwaitNetPeerCount.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/AwaitNetPeerCount.java index 47ed7a7e5..52e3dea1e 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/AwaitNetPeerCount.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/AwaitNetPeerCount.java @@ -27,15 +27,25 @@ public class AwaitNetPeerCount implements Condition { private final NetPeerCountTransaction transaction; private final BigInteger expectedPeerCount; + private final int timeout; public AwaitNetPeerCount( final NetPeerCountTransaction transaction, final BigInteger expectedPeerCount) { + this(transaction, expectedPeerCount, 30); + } + + public AwaitNetPeerCount( + final NetPeerCountTransaction transaction, + final BigInteger expectedPeerCount, + final int timeout) { this.transaction = transaction; this.expectedPeerCount = expectedPeerCount; + this.timeout = timeout; } @Override public void verify(final Node node) { - WaitUtils.waitFor(50, () -> assertThat(node.execute(transaction)).isEqualTo(expectedPeerCount)); + WaitUtils.waitFor( + timeout, () -> assertThat(node.execute(transaction)).isEqualTo(expectedPeerCount)); } } diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/NetConditions.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/NetConditions.java index 004b12b91..c9b669e7f 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/NetConditions.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/net/NetConditions.java @@ -47,6 +47,11 @@ public class NetConditions { return new AwaitNetPeerCount(transactions.peerCount(), BigInteger.valueOf(awaitPeerCount)); } + public Condition awaitPeerCount(final int awaitPeerCount, final int timeout) { + return new AwaitNetPeerCount( + transactions.peerCount(), BigInteger.valueOf(awaitPeerCount), timeout); + } + public Condition netVersionExceptional(final String expectedMessage) { return new ExpectNetVersionConnectionException(transactions.netVersion(), expectedMessage); } diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/Cluster.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/Cluster.java index b454894e0..acd0ac37f 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/Cluster.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/Cluster.java @@ -91,12 +91,14 @@ public class Cluster implements AutoCloseable { .forEach(this::startNode); if (clusterConfiguration.isAwaitPeerDiscovery()) { + int timeoutSeconds = clusterConfiguration.getPeerDiscoveryTimeoutSeconds(); for (final RunnableNode node : nodes) { LOG.info( - "Awaiting peer discovery for node {}, expecting {} peers", + "Awaiting peer discovery for node {}, expecting {} peers, timeout {} seconds", node.getName(), - nodes.size() - 1); - node.awaitPeerDiscovery(net.awaitPeerCount(nodes.size() - 1)); + nodes.size() - 1, + timeoutSeconds); + node.awaitPeerDiscovery(net.awaitPeerCount(nodes.size() - 1, timeoutSeconds)); } } LOG.info("Cluster startup complete."); diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/ClusterConfiguration.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/ClusterConfiguration.java index 4d0505478..232ecd8ef 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/ClusterConfiguration.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/ClusterConfiguration.java @@ -17,12 +17,18 @@ package org.hyperledger.besu.tests.acceptance.dsl.node.cluster; public class ClusterConfiguration { private final boolean awaitPeerDiscovery; + private final int peerDiscoveryTimeoutSeconds; - ClusterConfiguration(final boolean awaitPeerDiscovery) { + ClusterConfiguration(final boolean awaitPeerDiscovery, final int peerDiscoveryTimeoutSeconds) { this.awaitPeerDiscovery = awaitPeerDiscovery; + this.peerDiscoveryTimeoutSeconds = peerDiscoveryTimeoutSeconds; } public boolean isAwaitPeerDiscovery() { return awaitPeerDiscovery; } + + public int getPeerDiscoveryTimeoutSeconds() { + return peerDiscoveryTimeoutSeconds; + } } diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/ClusterConfigurationBuilder.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/ClusterConfigurationBuilder.java index 1e434e54c..75ddad988 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/ClusterConfigurationBuilder.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/node/cluster/ClusterConfigurationBuilder.java @@ -16,13 +16,19 @@ package org.hyperledger.besu.tests.acceptance.dsl.node.cluster; public class ClusterConfigurationBuilder { private boolean awaitPeerDiscovery = true; + private int peerDiscoveryTimeoutSeconds = 60; // Default 60 second timeout public ClusterConfigurationBuilder awaitPeerDiscovery(final boolean awaitPeerDiscovery) { this.awaitPeerDiscovery = awaitPeerDiscovery; return this; } + public ClusterConfigurationBuilder peerDiscoveryTimeout(final int timeoutSeconds) { + this.peerDiscoveryTimeoutSeconds = timeoutSeconds; + return this; + } + public ClusterConfiguration build() { - return new ClusterConfiguration(awaitPeerDiscovery); + return new ClusterConfiguration(awaitPeerDiscovery, peerDiscoveryTimeoutSeconds); } } diff --git a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/bftsoak/BftMiningSoakTest.java b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/bftsoak/BftMiningSoakTest.java index 1577c259f..6c050dd97 100644 --- a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/bftsoak/BftMiningSoakTest.java +++ b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/bftsoak/BftMiningSoakTest.java @@ -155,9 +155,9 @@ public class BftMiningSoakTest extends ParameterizedBftTestBase { chainHeight = minerNode1.execute(ethTransactions.blockNumber()); lastChainHeight = chainHeight; - // Leave the chain stalled for 3 minutes. Check no new blocks are mined. Then + // Leave the chain stalled for 1 minute. Check no new blocks are mined. Then // resume the other validators. - nextStepEndTime = previousStepEndTime.plus(3, ChronoUnit.MINUTES); + nextStepEndTime = previousStepEndTime.plus(1, ChronoUnit.MINUTES); while (System.currentTimeMillis() < nextStepEndTime.toEpochMilli()) { Thread.sleep(ONE_MINUTE); chainHeight = minerNode1.execute(ethTransactions.blockNumber());