Skip to content
This repository has been archived by the owner on Sep 26, 2019. It is now read-only.

Acceptance Test and DSL rename for IBFT2 #1493

Merged
merged 11 commits into from
May 27, 2019
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import tech.pegasys.pantheon.tests.acceptance.dsl.jsonrpc.Admin;
import tech.pegasys.pantheon.tests.acceptance.dsl.jsonrpc.Clique;
import tech.pegasys.pantheon.tests.acceptance.dsl.jsonrpc.Eth;
import tech.pegasys.pantheon.tests.acceptance.dsl.jsonrpc.Ibft;
import tech.pegasys.pantheon.tests.acceptance.dsl.jsonrpc.Ibft2;
import tech.pegasys.pantheon.tests.acceptance.dsl.jsonrpc.Login;
import tech.pegasys.pantheon.tests.acceptance.dsl.jsonrpc.Net;
import tech.pegasys.pantheon.tests.acceptance.dsl.jsonrpc.Perm;
Expand All @@ -29,7 +29,7 @@
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.Transactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.clique.CliqueTransactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.eth.EthTransactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft.IbftTransactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft2.Ibft2Transactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.net.NetTransactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.web3.Web3Transactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.waitcondition.WaitConditions;
Expand All @@ -42,10 +42,10 @@ public class AcceptanceTestBase {
protected final Blockchain blockchain;
protected final Cluster cluster;
protected final CliqueTransactions cliqueTransactions;
protected final IbftTransactions ibftTransactions;
protected final Ibft2Transactions ibftTwoTransactions;
protected final Transactions transactions;
protected final Clique clique;
protected final Ibft ibft;
protected final Ibft2 ibftTwo;
protected final Web3 web3;
protected final Eth eth;
protected final Login login;
Expand All @@ -63,10 +63,10 @@ protected AcceptanceTestBase() {
blockchain = new Blockchain(ethTransactions);
eth = new Eth(ethTransactions);
cliqueTransactions = new CliqueTransactions();
ibftTransactions = new IbftTransactions();
ibftTwoTransactions = new Ibft2Transactions();

clique = new Clique(ethTransactions, cliqueTransactions);
ibft = new Ibft(ibftTransactions);
ibftTwo = new Ibft2(ibftTwoTransactions);
login = new Login();
net = new Net(new NetTransactions());
cluster = new Cluster(net);
Expand All @@ -76,7 +76,7 @@ protected AcceptanceTestBase() {
web3 = new Web3(new Web3Transactions());
pantheon = new PantheonNodeFactory();
contractVerifier = new ContractVerifier(accounts.getPrimaryBenefactor());
wait = new WaitConditions(ethTransactions, cliqueTransactions, ibftTransactions);
wait = new WaitConditions(ethTransactions, cliqueTransactions, ibftTwoTransactions);
permissionedNodeBuilder = new PermissionedNodeBuilder();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,21 @@
import tech.pegasys.pantheon.ethereum.core.Address;
import tech.pegasys.pantheon.tests.acceptance.dsl.condition.Condition;
import tech.pegasys.pantheon.tests.acceptance.dsl.node.Node;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft.IbftTransactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft2.Ibft2Transactions;

import java.util.Map;

public class ExpectProposals implements Condition {
private final IbftTransactions ibft;
private final Ibft2Transactions ibftTwo;
private final Map<Address, Boolean> proposers;

public ExpectProposals(final IbftTransactions ibft, final Map<Address, Boolean> proposers) {
this.ibft = ibft;
public ExpectProposals(final Ibft2Transactions ibftTwo, final Map<Address, Boolean> proposers) {
this.ibftTwo = ibftTwo;
this.proposers = proposers;
}

@Override
public void verify(final Node node) {
waitFor(() -> assertThat(node.execute(ibft.createProposals())).isEqualTo(proposers));
waitFor(() -> assertThat(node.execute(ibftTwo.createProposals())).isEqualTo(proposers));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,18 @@

import static org.assertj.core.api.Assertions.assertThat;
import static tech.pegasys.pantheon.tests.acceptance.dsl.WaitUtils.waitFor;
import static tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft.IbftTransactions.LATEST;
import static tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft2.Ibft2Transactions.LATEST;

import tech.pegasys.pantheon.ethereum.core.Address;
import tech.pegasys.pantheon.tests.acceptance.dsl.condition.Condition;
import tech.pegasys.pantheon.tests.acceptance.dsl.node.Node;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft.IbftTransactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft2.Ibft2Transactions;

public class ExpectValidators implements Condition {
private final IbftTransactions ibft;
private final Ibft2Transactions ibft;
private final Address[] validators;

public ExpectValidators(final IbftTransactions ibft, final Address... validators) {
public ExpectValidators(final Ibft2Transactions ibft, final Address... validators) {
this.ibft = ibft;
this.validators = validators;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import tech.pegasys.pantheon.tests.acceptance.dsl.condition.ibft.ExpectProposals;
import tech.pegasys.pantheon.tests.acceptance.dsl.condition.ibft.ExpectValidators;
import tech.pegasys.pantheon.tests.acceptance.dsl.node.PantheonNode;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft.IbftTransactions;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.ibft2.Ibft2Transactions;

import java.util.Arrays;
import java.util.Comparator;
Expand All @@ -29,12 +29,12 @@

import com.google.common.collect.ImmutableMap;

public class Ibft {
public class Ibft2 {

private final IbftTransactions ibft;
private final Ibft2Transactions ibftTwo;

public Ibft(final IbftTransactions ibft) {
this.ibft = ibft;
public Ibft2(final Ibft2Transactions ibftTwo) {
this.ibftTwo = ibftTwo;
}

public List<PantheonNode> validators(final PantheonNode[] nodes) {
Expand All @@ -46,26 +46,26 @@ public List<PantheonNode> validators(final PantheonNode[] nodes) {
}

public ExpectValidators validatorsEqual(final PantheonNode... validators) {
return new ExpectValidators(ibft, validatorAddresses(validators));
return new ExpectValidators(ibftTwo, validatorAddresses(validators));
}

private Address[] validatorAddresses(final PantheonNode[] validators) {
return Arrays.stream(validators).map(PantheonNode::getAddress).sorted().toArray(Address[]::new);
}

public Condition noProposals() {
return new ExpectProposals(ibft, ImmutableMap.of());
return new ExpectProposals(ibftTwo, ImmutableMap.of());
}

public PendingVotesConfig pendingVotesEqual() {
return new PendingVotesConfig(ibft);
return new PendingVotesConfig(ibftTwo);
}

public static class PendingVotesConfig {
private final Map<PantheonNode, Boolean> proposals = new HashMap<>();
private final IbftTransactions ibft;
private final Ibft2Transactions ibft;

public PendingVotesConfig(final IbftTransactions ibft) {
private PendingVotesConfig(final Ibft2Transactions ibft) {
this.ibft = ibft;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.CliqueJsonRpcRequestFactory;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.CustomNetJsonRpcRequestFactory;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.EeaJsonRpcRequestFactory;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.IbftJsonRpcRequestFactory;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.Ibft2JsonRpcRequestFactory;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.JsonRequestFactories;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.PermissioningJsonRpcRequestFactory;
import tech.pegasys.pantheon.tests.acceptance.dsl.transaction.Transaction;
Expand Down Expand Up @@ -279,7 +279,7 @@ private JsonRequestFactories jsonRequestFactories() {
new JsonRequestFactories(
new JsonRpc2_0Web3j(web3jService, 2000, Async.defaultExecutorService()),
new CliqueJsonRpcRequestFactory(web3jService),
new IbftJsonRpcRequestFactory(web3jService),
new Ibft2JsonRpcRequestFactory(web3jService),
new PermissioningJsonRpcRequestFactory(web3jService),
new AdminJsonRpcRequestFactory(web3jService),
new EeaJsonRpcRequestFactory(web3jService),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,15 +140,6 @@ public PantheonNode createNodeWithP2pDisabled(final String name) throws IOExcept
.build());
}

public PantheonNode createNodeWithP2pDisabledAndAdmin(final String name) throws IOException {
return create(
new PantheonFactoryConfigurationBuilder()
.name(name)
.p2pEnabled(false)
.jsonRpcConfiguration(jsonRpcConfigWithAdmin())
.build());
}

public PantheonNode createArchiveNodeWithRpcDisabled(final String name) throws IOException {
return create(new PantheonFactoryConfigurationBuilder().name(name).build());
}
Expand Down Expand Up @@ -189,22 +180,22 @@ public PantheonNode createCliqueNode(final String name) throws IOException {
new PantheonFactoryConfigurationBuilder()
.name(name)
.miningEnabled()
.jsonRpcConfiguration(createJsonRpcConfigWithClique())
.jsonRpcConfiguration(createJsonRpcWithCliqueEnabledConfig())
.webSocketConfiguration(createWebSocketEnabledConfig())
.devMode(false)
.genesisConfigProvider(this::createCliqueGenesisConfig)
.build());
}

public PantheonNode createIbftNode(final String name) throws IOException {
public PantheonNode createIbft2Node(final String name) throws IOException {
return create(
new PantheonFactoryConfigurationBuilder()
.name(name)
.miningEnabled()
.jsonRpcConfiguration(createJsonRpcConfigWithIbft())
.jsonRpcConfiguration(createJsonRpcWithIbft2EnabledConfig())
.webSocketConfiguration(createWebSocketEnabledConfig())
.devMode(false)
.genesisConfigProvider(this::createIbftGenesisConfig)
.genesisConfigProvider(this::createIbft2GenesisConfig)
.build());
}

Expand All @@ -229,7 +220,7 @@ public PantheonNode createCliqueNodeWithValidators(final String name, final Stri
new PantheonFactoryConfigurationBuilder()
.name(name)
.miningEnabled()
.jsonRpcConfiguration(createJsonRpcConfigWithClique())
.jsonRpcConfiguration(createJsonRpcWithCliqueEnabledConfig())
.webSocketConfiguration(createWebSocketEnabledConfig())
.devMode(false)
.genesisConfigProvider(
Expand All @@ -239,20 +230,20 @@ public PantheonNode createCliqueNodeWithValidators(final String name, final Stri
.build());
}

public PantheonNode createIbftNodeWithValidators(final String name, final String... validators)
public PantheonNode createIbft2NodeWithValidators(final String name, final String... validators)
throws IOException {

return create(
new PantheonFactoryConfigurationBuilder()
.name(name)
.miningEnabled()
.jsonRpcConfiguration(createJsonRpcConfigWithIbft())
.jsonRpcConfiguration(createJsonRpcWithIbft2EnabledConfig())
.webSocketConfiguration(createWebSocketEnabledConfig())
.devMode(false)
.genesisConfigProvider(
nodes ->
createGenesisConfigForValidators(
asList(validators), nodes, this::createIbftGenesisConfig))
asList(validators), nodes, this::createIbft2GenesisConfig))
.build());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public Optional<String> createCliqueGenesisConfig(
validators, template, CliqueExtraData::createGenesisExtraDataString);
}

public Optional<String> createIbftGenesisConfig(
public Optional<String> createIbft2GenesisConfig(
final Collection<? extends RunnableNode> validators) {
final String template = readGenesisFile("/ibft/ibft.json");
CjHare marked this conversation as resolved.
Show resolved Hide resolved
return updateGenesisExtraData(
Expand Down Expand Up @@ -85,12 +85,12 @@ public Optional<String> createGenesisConfigForValidators(
return genesisConfigProvider.createGenesisConfig(nodes);
}

public JsonRpcConfiguration createJsonRpcConfigWithClique() {
return createJsonRpcConfigWithRpcApiEnabled(CLIQUE);
public JsonRpcConfiguration createJsonRpcWithCliqueEnabledConfig() {
return createJsonRpcWithRpcApiEnabledConfig(CLIQUE);
}

public JsonRpcConfiguration createJsonRpcConfigWithIbft() {
return createJsonRpcConfigWithRpcApiEnabled(IBFT);
public JsonRpcConfiguration createJsonRpcWithIbft2EnabledConfig() {
return createJsonRpcWithRpcApiEnabledConfig(IBFT);
}

public JsonRpcConfiguration createJsonRpcEnabledConfig() {
Expand All @@ -109,10 +109,10 @@ public WebSocketConfiguration createWebSocketEnabledConfig() {
}

public JsonRpcConfiguration jsonRpcConfigWithAdmin() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this actually a useful abstraction?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

which part, the JsonRpcConfiguration or the PantheonNodeFactoryUtils?

return createJsonRpcConfigWithRpcApiEnabled(RpcApis.ADMIN);
return createJsonRpcWithRpcApiEnabledConfig(RpcApis.ADMIN);
}

public JsonRpcConfiguration createJsonRpcConfigWithRpcApiEnabled(final RpcApi... rpcApi) {
public JsonRpcConfiguration createJsonRpcWithRpcApiEnabledConfig(final RpcApi... rpcApi) {
final JsonRpcConfiguration jsonRpcConfig = createJsonRpcEnabledConfig();
final List<RpcApi> rpcApis = new ArrayList<>(jsonRpcConfig.getRpcApis());
rpcApis.addAll(Arrays.asList(rpcApi));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class PrivacyAcceptanceTestBase extends AcceptanceTestBase {

protected final Eea eea;
protected final PrivateTransactions privateTransactions;
protected static PrivateTransactionBuilder.Builder privateTransactionBuilder;
protected final PrivateTransactionBuilder.Builder privateTransactionBuilder;
protected final PrivateTransactionVerifier privateTransactionVerifier;
protected final PrivacyPantheonNodeFactory privacyPantheon;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ public PrivacyNode makeNode(
name, generatePrivacyParameters(orion), keyFilePath, orion);
} else {
node =
pantheonNodeFactory.createIbftNodePrivacyEnabled(
pantheonNodeFactory.createIbft2NodePrivacyEnabled(
name, generatePrivacyParameters(orion), keyFilePath, orion);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public PrivacyNode createPrivateTransactionEnabledNode(
.build());
}

public PrivacyNode createIbftNodePrivacyEnabled(
public PrivacyNode createIbft2NodePrivacyEnabled(
final String name,
final PrivacyParameters privacyParameters,
final String keyFilePath,
Expand All @@ -95,10 +95,10 @@ public PrivacyNode createIbftNodePrivacyEnabled(
new PantheonFactoryConfigurationBuilder()
.name(name)
.miningEnabled()
.jsonRpcConfiguration(createJsonRpcConfigWithIbft())
.jsonRpcConfiguration(createJsonRpcWithIbft2EnabledConfig())
.webSocketConfiguration(createWebSocketEnabledConfig())
.devMode(false)
.genesisConfigProvider(this::createIbftGenesisConfig)
.genesisConfigProvider(this::createIbft2GenesisConfig)
.keyFilePath(keyFilePath)
.enablePrivateTransactions(privacyParameters)
.build())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,41 +26,41 @@
import org.web3j.protocol.Web3jService;
import org.web3j.protocol.core.Request;

public class IbftJsonRpcRequestFactory {
public class Ibft2JsonRpcRequestFactory {

private final Web3jService web3jService;

public IbftJsonRpcRequestFactory(final Web3jService web3jService) {
public Ibft2JsonRpcRequestFactory(final Web3jService web3jService) {
this.web3jService = web3jService;
}

public Request<?, ProposeResponse> ibftPropose(final String address, final Boolean auth) {
public Request<?, ProposeResponse> propose(final String address, final Boolean auth) {
return new Request<>(
"ibft_proposeValidatorVote",
Arrays.asList(address, auth.toString()),
web3jService,
ProposeResponse.class);
}

public Request<?, DiscardResponse> ibftDiscard(final String address) {
public Request<?, DiscardResponse> discard(final String address) {
return new Request<>(
"ibft_discardValidatorVote", singletonList(address), web3jService, DiscardResponse.class);
}

public Request<?, ProposalsResponse> ibftProposals() {
public Request<?, ProposalsResponse> proposals() {
return new Request<>(
"ibft_getPendingVotes", emptyList(), web3jService, ProposalsResponse.class);
}

public Request<?, SignersBlockResponse> ibftGetValidators(final String blockNumber) {
public Request<?, SignersBlockResponse> validatorsAtBlock(final String blockNumber) {
return new Request<>(
"ibft_getValidatorsByBlockNumber",
singletonList(blockNumber),
web3jService,
SignersBlockResponse.class);
}

public Request<?, SignersBlockResponse> ibftGetSignersAtHash(final Hash hash) {
public Request<?, SignersBlockResponse> signersAtHash(final Hash hash) {
return new Request<>(
"ibft_getValidatorsByBlockHash",
singletonList(hash.toString()),
Expand Down
Loading