Skip to content

Commit

Permalink
All ibft2 AcceptanceTests moved to support both bft implementations (h…
Browse files Browse the repository at this point in the history
…yperledger#1896)

Signed-off-by: Trent Mohay <trent.mohay@consensys.net>
  • Loading branch information
Trent Mohay authored Feb 10, 2021
1 parent 4456dc1 commit 7f4c2cf
Show file tree
Hide file tree
Showing 8 changed files with 73 additions and 50 deletions.
3 changes: 2 additions & 1 deletion acceptance-tests/dsl/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ dependencies {
implementation project(':besu')
implementation project(':config')
implementation project(':consensus:clique')
implementation project(':consensus:ibft')
implementation project(':consensus:common')
implementation project(':consensus:ibft')
implementation project(':consensus:qbft')
implementation project(':crypto')
implementation project(':enclave')
implementation project(':ethereum:api')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import static java.util.stream.Collectors.toList;
import static org.hyperledger.besu.consensus.clique.jsonrpc.CliqueRpcApis.CLIQUE;
import static org.hyperledger.besu.consensus.ibft.jsonrpc.IbftRpcApis.IBFT;
import static org.hyperledger.besu.consensus.qbft.jsonrpc.QbftRpcApis.QBFT;
import static org.hyperledger.besu.ethereum.api.jsonrpc.RpcApis.ADMIN;
import static org.hyperledger.besu.ethereum.api.jsonrpc.RpcApis.MINER;

Expand Down Expand Up @@ -59,7 +60,9 @@ public JsonRpcConfiguration createJsonRpcWithIbft2AdminEnabledConfig() {
}

public JsonRpcConfiguration createJsonRpcWithQbftEnabledConfig(final boolean minerEnabled) {
return createJsonRpcWithIbft2EnabledConfig(minerEnabled);
return minerEnabled
? createJsonRpcWithRpcApiEnabledConfig(QBFT, MINER)
: createJsonRpcWithRpcApiEnabledConfig(QBFT);
}

public JsonRpcConfiguration createJsonRpcEnabledConfig() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,33 @@
*
* SPDX-License-Identifier: Apache-2.0
*/
package org.hyperledger.besu.tests.acceptance.ibft2;
package org.hyperledger.besu.tests.acceptance.bft;

import static java.util.Collections.singletonList;

import org.hyperledger.besu.ethereum.core.Address;
import org.hyperledger.besu.tests.acceptance.dsl.AcceptanceTestBase;
import org.hyperledger.besu.tests.acceptance.dsl.account.Account;
import org.hyperledger.besu.tests.acceptance.dsl.blockchain.Amount;
import org.hyperledger.besu.tests.acceptance.dsl.node.BesuNode;

import java.io.IOException;
import java.math.BigInteger;
import java.util.Optional;

import org.junit.Test;

public class Ibft2BlockRewardPaymentAcceptanceTest extends AcceptanceTestBase {
public class BftBlockRewardPaymentAcceptanceTest extends ParameterizedBftTestBase {

public BftBlockRewardPaymentAcceptanceTest(
final String testName, final BftAcceptanceTestParameterization nodeFactory) {
super(testName, nodeFactory);
}

@Test
public void validatorsArePaidBlockReward() throws IOException {
public void validatorsArePaidBlockReward() throws Exception {
final String[] validators = {"validator"};
final BesuNode validator = besu.createIbft2NodeWithValidators("validator", validators);
final BesuNode nonValidator = besu.createIbft2NodeWithValidators("nonValidator", validators);
final BesuNode validator = nodeFactory.createNodeWithValidators(besu, "validator", validators);
final BesuNode nonValidator =
nodeFactory.createNodeWithValidators(besu, "nonValidator", validators);
cluster.start(validator, nonValidator);
final Account validator1Account = Account.create(ethTransactions, validator.getAddress());

Expand All @@ -48,9 +52,10 @@ public void validatorsArePaidBlockReward() throws IOException {
}

@Test
public void payBlockRewardToConfiguredNode() throws IOException {
public void payBlockRewardToConfiguredNode() throws Exception {
final String[] validators = {"validator1"};
final BesuNode validator1 = besu.createIbft2NodeWithValidators("validator1", validators);
final BesuNode validator1 =
nodeFactory.createNodeWithValidators(besu, "validator1", validators);
final Optional<String> initialConfig =
validator1.getGenesisConfigProvider().create(singletonList(validator1));
if (initialConfig.isEmpty()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,28 @@
*
* SPDX-License-Identifier: Apache-2.0
*/
package org.hyperledger.besu.tests.acceptance.ibft2;
package org.hyperledger.besu.tests.acceptance.bft;

import org.hyperledger.besu.tests.acceptance.dsl.AcceptanceTestBase;
import org.hyperledger.besu.tests.acceptance.dsl.node.BesuNode;

import java.io.IOException;

import org.junit.Test;

public class Ibft2DiscardRpcAcceptanceTest extends AcceptanceTestBase {
public class BftDiscardRpcAcceptanceTest extends ParameterizedBftTestBase {

public BftDiscardRpcAcceptanceTest(
final String testName, final BftAcceptanceTestParameterization nodeFactory) {
super(testName, nodeFactory);
}

@Test
public void shouldDiscardVotes() throws IOException {
public void shouldDiscardVotes() throws Exception {
final String[] validators = {"validator1", "validator3"};
final BesuNode validator1 = besu.createIbft2NodeWithValidators("validator1", validators);
final BesuNode validator2 = besu.createIbft2NodeWithValidators("validator2", validators);
final BesuNode validator3 = besu.createIbft2NodeWithValidators("validator3", validators);
final BesuNode validator1 =
nodeFactory.createNodeWithValidators(besu, "validator1", validators);
final BesuNode validator2 =
nodeFactory.createNodeWithValidators(besu, "validator2", validators);
final BesuNode validator3 =
nodeFactory.createNodeWithValidators(besu, "validator3", validators);
cluster.start(validator1, validator2, validator3);

validator1.execute(bftTransactions.createAddProposal(validator2));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,7 @@
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

@RunWith(Parameterized.class)
public class BftMiningAcceptanceTest extends ParameterizedBftTestBase {

public BftMiningAcceptanceTest(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,28 @@
*
* SPDX-License-Identifier: Apache-2.0
*/
package org.hyperledger.besu.tests.acceptance.ibft2;
package org.hyperledger.besu.tests.acceptance.bft;

import org.hyperledger.besu.tests.acceptance.dsl.AcceptanceTestBase;
import org.hyperledger.besu.tests.acceptance.dsl.node.BesuNode;

import java.io.IOException;

import org.junit.Test;

public class Ibft2ProposalRpcAcceptanceTest extends AcceptanceTestBase {
public class BftProposalRpcAcceptanceTest extends ParameterizedBftTestBase {

public BftProposalRpcAcceptanceTest(
final String testName, final BftAcceptanceTestParameterization nodeFactory) {
super(testName, nodeFactory);
}

@Test
public void shouldReturnProposals() throws IOException {
public void shouldReturnProposals() throws Exception {
final String[] validators = {"validator1", "validator2", "validator3"};
final BesuNode validator1 = besu.createIbft2NodeWithValidators("validator1", validators);
final BesuNode validator2 = besu.createIbft2NodeWithValidators("validator2", validators);
final BesuNode validator3 = besu.createIbft2NodeWithValidators("validator3", validators);
final BesuNode validator1 =
nodeFactory.createNodeWithValidators(besu, "validator1", validators);
final BesuNode validator2 =
nodeFactory.createNodeWithValidators(besu, "validator2", validators);
final BesuNode validator3 =
nodeFactory.createNodeWithValidators(besu, "validator3", validators);
cluster.start(validator1, validator2, validator3);

cluster.verify(bft.noProposals());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,33 @@
*
* SPDX-License-Identifier: Apache-2.0
*/
package org.hyperledger.besu.tests.acceptance.ibft2;
package org.hyperledger.besu.tests.acceptance.bft;

import org.hyperledger.besu.tests.acceptance.dsl.AcceptanceTestBase;
import org.hyperledger.besu.tests.acceptance.dsl.condition.Condition;
import org.hyperledger.besu.tests.acceptance.dsl.node.BesuNode;

import java.io.IOException;

import org.junit.Test;

// These tests prove the ibft_proposeValidatorVote and ibft_getValidatorsByBlockNumber (implicitly)
// JSON RPC calls.
public class Ibft2ProposeRpcAcceptanceTest extends AcceptanceTestBase {
public class BftProposeRpcAcceptanceTest extends ParameterizedBftTestBase {

public BftProposeRpcAcceptanceTest(
final String testName, final BftAcceptanceTestParameterization nodeFactory) {
super(testName, nodeFactory);
}

@Test
public void validatorsCanBeAddedAndThenRemoved() throws IOException {
public void validatorsCanBeAddedAndThenRemoved() throws Exception {
final String[] validators = {"validator1", "validator2", "validator3"};
final BesuNode validator1 = besu.createIbft2NodeWithValidators("validator1", validators);
final BesuNode validator2 = besu.createIbft2NodeWithValidators("validator2", validators);
final BesuNode validator3 = besu.createIbft2NodeWithValidators("validator3", validators);
final BesuNode validator1 =
nodeFactory.createNodeWithValidators(besu, "validator1", validators);
final BesuNode validator2 =
nodeFactory.createNodeWithValidators(besu, "validator2", validators);
final BesuNode validator3 =
nodeFactory.createNodeWithValidators(besu, "validator3", validators);
final BesuNode nonValidatorNode =
besu.createIbft2NodeWithValidators("non-validator", validators);
nodeFactory.createNodeWithValidators(besu, "non-validator", validators);
cluster.start(validator1, validator2, validator3, nonValidatorNode);

cluster.verify(bft.validatorsEqual(validator1, validator2, validator3));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,24 @@
*
* SPDX-License-Identifier: Apache-2.0
*/
package org.hyperledger.besu.tests.acceptance.ibft2;
package org.hyperledger.besu.tests.acceptance.bft;

import org.hyperledger.besu.tests.acceptance.dsl.AcceptanceTestBase;
import org.hyperledger.besu.tests.acceptance.dsl.node.BesuNode;

import java.io.IOException;

import org.junit.Test;

public class Ibft2ZeroValidators extends AcceptanceTestBase {
public class BftZeroValidators extends ParameterizedBftTestBase {

public BftZeroValidators(
final String testName, final BftAcceptanceTestParameterization nodeFactory) {
super(testName, nodeFactory);
}

@Test
public void zeroValidatorsFormValidCluster() throws IOException {
public void zeroValidatorsFormValidCluster() throws Exception {
final String[] validators = {};
final BesuNode node1 = besu.createIbft2NodeWithValidators("node1", validators);
final BesuNode node2 = besu.createIbft2NodeWithValidators("node2", validators);
final BesuNode node1 = nodeFactory.createNodeWithValidators(besu, "node1", validators);
final BesuNode node2 = nodeFactory.createNodeWithValidators(besu, "node2", validators);

cluster.start(node1, node2);

Expand Down

0 comments on commit 7f4c2cf

Please sign in to comment.