Skip to content

Commit

Permalink
Merge pull request #52 from apratt3377/quorumRpcs
Browse files Browse the repository at this point in the history
add missing raft and permission rpcs
  • Loading branch information
conor10 authored Sep 29, 2020
2 parents d3a1615 + 244b1db commit 9a876c7
Show file tree
Hide file tree
Showing 6 changed files with 139 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -400,4 +400,44 @@ public void testPermissionApproveBlackListedNodeRecover() throws Exception {
verifyResult(
"{\"jsonrpc\":\"2.0\",\"method\":\"quorumPermission_approveBlackListedNodeRecovery\",\"params\":[\"orgId\",\"enodeId\",{\"from\":\"FROM\",\"to\":\"TO\",\"gas\":\"0xa\",\"value\":\"0xa\",\"data\":\"0xDATA\",\"nonce\":\"0x1\",\"privateFrom\":\"privateFrom\",\"privateFor\":[\"privateFor1\",\"privateFor2\"]}],\"id\":1}");
}

@Test
public void testPermissionRecoverBlackListedAccount() throws Exception {
web3j.quorumPermissionRecoverBlackListedAccount(
"orgId",
"address",
new PrivateTransaction(
"FROM",
BigInteger.ONE,
BigInteger.TEN,
"TO",
BigInteger.TEN,
"DATA",
"privateFrom",
Arrays.asList("privateFor1", "privateFor2")))
.send();

verifyResult(
"{\"jsonrpc\":\"2.0\",\"method\":\"quorumPermission_recoverBlackListedAccount\",\"params\":[\"orgId\",\"address\",{\"from\":\"FROM\",\"to\":\"TO\",\"gas\":\"0xa\",\"value\":\"0xa\",\"data\":\"0xDATA\",\"nonce\":\"0x1\",\"privateFrom\":\"privateFrom\",\"privateFor\":[\"privateFor1\",\"privateFor2\"]}],\"id\":1}");
}

@Test
public void testPermissionApproveBlackListedAccountRecover() throws Exception {
web3j.quorumPermissionApproveBlackListedAccountRecovery(
"orgId",
"address",
new PrivateTransaction(
"FROM",
BigInteger.ONE,
BigInteger.TEN,
"TO",
BigInteger.TEN,
"DATA",
"privateFrom",
Arrays.asList("privateFor1", "privateFor2")))
.send();

verifyResult(
"{\"jsonrpc\":\"2.0\",\"method\":\"quorumPermission_approveBlackListedAccountRecovery\",\"params\":[\"orgId\",\"address\",{\"from\":\"FROM\",\"to\":\"TO\",\"gas\":\"0xa\",\"value\":\"0xa\",\"data\":\"0xDATA\",\"nonce\":\"0x1\",\"privateFrom\":\"privateFrom\",\"privateFor\":[\"privateFor1\",\"privateFor2\"]}],\"id\":1}");
}
}
16 changes: 16 additions & 0 deletions src/integration-test/java/org/web3j/quorum/RaftRequestTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,20 @@ public void testRaftAddPeer() throws Exception {
verifyResult(
"{\"jsonrpc\":\"2.0\",\"method\":\"raft_addPeer\",\"params\":[\"enode\"],\"id\":1}");
}

@Test
public void testRaftAddLearner() throws Exception {
web3j.raftAddLearner("enode").send();

verifyResult(
"{\"jsonrpc\":\"2.0\",\"method\":\"raft_addLearner\",\"params\":[\"enode\"],\"id\":1}");
}

@Test
public void testRaftPromoteToPeer() throws Exception {
web3j.raftPromoteToPeer(1).send();

verifyResult(
"{\"jsonrpc\":\"2.0\",\"method\":\"raft_promoteToPeer\",\"params\":[1],\"id\":1}");
}
}
13 changes: 11 additions & 2 deletions src/integration-test/java/org/web3j/quorum/RaftResponseTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.web3j.quorum.methods.response.raft.RaftCluster;
import org.web3j.quorum.methods.response.raft.RaftLeader;
import org.web3j.quorum.methods.response.raft.RaftPeerId;
import org.web3j.quorum.methods.response.raft.RaftPromote;
import org.web3j.quorum.methods.response.raft.RaftRole;

import static org.hamcrest.MatcherAssert.assertThat;
Expand Down Expand Up @@ -51,13 +52,13 @@ public void testRaftLeader() {
@Test
public void testRaftCluster() {
buildResponse(
"{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":[{\"ip\":\"127.0.0.1\", \"nodeId\":\"3d9ca5956b38557aba991e31cf510d4df641dce9cc26bfeb7de082f0c07abb6ede3a58410c8f249dabeecee4ad3979929ac4c7c496ad20b8cfdd061b7401b4f5\",\"p2pPort\":\"21003\", \"raftId\":\"4\", \"raftPort\":\"50404\"}]}");
"{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":[{\"hostname\":\"127.0.0.1\", \"nodeActive\":\"true\", \"nodeId\":\"3d9ca5956b38557aba991e31cf510d4df641dce9cc26bfeb7de082f0c07abb6ede3a58410c8f249dabeecee4ad3979929ac4c7c496ad20b8cfdd061b7401b4f5\",\"p2pPort\":\"21003\", \"raftId\":\"4\", \"raftPort\":\"50404\", \"role\":\"verifier\"}]}");

RaftCluster raftCluster = deserialiseResponse(RaftCluster.class);
assertThat(
raftCluster.getCluster().get().toString(),
is(
"[RaftPeer(ip=127.0.0.1, nodeId=3d9ca5956b38557aba991e31cf510d4df641dce9cc26bfeb7de082f0c07abb6ede3a58410c8f249dabeecee4ad3979929ac4c7c496ad20b8cfdd061b7401b4f5, p2pPort=21003, raftId=4, raftPort=50404)]"));
"[RaftPeer(hostname=127.0.0.1, nodeActive=true, nodeId=3d9ca5956b38557aba991e31cf510d4df641dce9cc26bfeb7de082f0c07abb6ede3a58410c8f249dabeecee4ad3979929ac4c7c496ad20b8cfdd061b7401b4f5, p2pPort=21003, raftId=4, raftPort=50404, role=verifier)]"));
}

@Test
Expand All @@ -75,4 +76,12 @@ public void testRaftAddPeer() {
RaftPeerId raftPeerId = deserialiseResponse(RaftPeerId.class);
assertThat(raftPeerId.getAddedPeer(), is(BigInteger.ONE));
}

@Test
public void testRaftPromoteToPeer() {
buildResponse("{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":\"true\"}");

RaftPromote raftPromote = deserialiseResponse(RaftPromote.class);
assertThat(raftPromote.getPromotionStatus(), is(true));
}
}
39 changes: 39 additions & 0 deletions src/main/java/org/web3j/quorum/JsonRpc2_0Quorum.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.web3j.quorum.methods.response.raft.RaftCluster;
import org.web3j.quorum.methods.response.raft.RaftLeader;
import org.web3j.quorum.methods.response.raft.RaftPeerId;
import org.web3j.quorum.methods.response.raft.RaftPromote;
import org.web3j.quorum.methods.response.raft.RaftRole;

/** Quorum JSON-RPC API implementation. */
Expand Down Expand Up @@ -136,6 +137,24 @@ public Request<?, RaftCluster> raftGetCluster() {
"raft_cluster", Collections.emptyList(), web3jService, RaftCluster.class);
}

@Override
public Request<?, RaftPeerId> raftAddLearner(String enode) {
return new Request<>(
"raft_addLearner",
Collections.singletonList(enode),
web3jService,
RaftPeerId.class);
}

@Override
public Request<?, RaftPromote> raftPromoteToPeer(int raftId) {
return new Request<>(
"raft_promoteToPeer",
Collections.singletonList(raftId),
web3jService,
RaftPromote.class);
}

// istanbul consensus

@Override
Expand Down Expand Up @@ -439,4 +458,24 @@ public Request<?, ExecStatusInfo> quorumPermissionApproveBlackListedNodeRecovery
web3jService,
ExecStatusInfo.class);
}

@Override
public Request<?, ExecStatusInfo> quorumPermissionRecoverBlackListedAccount(
String orgId, String address, PrivateTransaction transaction) {
return new Request<>(
"quorumPermission_recoverBlackListedAccount",
Arrays.asList(orgId, address, transaction),
web3jService,
ExecStatusInfo.class);
}

@Override
public Request<?, ExecStatusInfo> quorumPermissionApproveBlackListedAccountRecovery(
String orgId, String address, PrivateTransaction transaction) {
return new Request<>(
"quorumPermission_approveBlackListedAccountRecovery",
Arrays.asList(orgId, address, transaction),
web3jService,
ExecStatusInfo.class);
}
}
11 changes: 11 additions & 0 deletions src/main/java/org/web3j/quorum/Quorum.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.web3j.quorum.methods.response.raft.RaftCluster;
import org.web3j.quorum.methods.response.raft.RaftLeader;
import org.web3j.quorum.methods.response.raft.RaftPeerId;
import org.web3j.quorum.methods.response.raft.RaftPromote;
import org.web3j.quorum.methods.response.raft.RaftRole;

/** JSON-RPC Request object building factory for Quorum. */
Expand Down Expand Up @@ -65,6 +66,10 @@ Request<?, EthSendTransaction> ethSendRawPrivateTransaction(

Request<?, RaftCluster> raftGetCluster();

Request<?, RaftPeerId> raftAddLearner(String enode);

Request<?, RaftPromote> raftPromoteToPeer(int raftId);

// istanbul consensus

Request<?, IstanbulSnapshot> istanbulGetSnapshot(String blockNum);
Expand Down Expand Up @@ -151,4 +156,10 @@ Request<?, ExecStatusInfo> quorumPermissionRecoverBlackListedNode(

Request<?, ExecStatusInfo> quorumPermissionApproveBlackListedNodeRecovery(
String orgId, String enodeId, PrivateTransaction transaction);

Request<?, ExecStatusInfo> quorumPermissionRecoverBlackListedAccount(
String orgId, String address, PrivateTransaction transaction);

Request<?, ExecStatusInfo> quorumPermissionApproveBlackListedAccountRecovery(
String orgId, String address, PrivateTransaction transaction);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*
* Copyright 2020 Web3 Labs Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package org.web3j.quorum.methods.response.raft;

import org.web3j.protocol.core.Response;

public class RaftPromote extends Response<Boolean> {

public Boolean getPromotionStatus() {
return getResult();
}
}

0 comments on commit 9a876c7

Please sign in to comment.