@Before public void setup() { validators.add(Util.publicKeyToAddress(proposerKey.getPublicKey())); validators.add(Util.publicKeyToAddress(validatorKey.getPublicKey())); when(block.getHash()).thenReturn(Hash.fromHexStringLenient("1")); when(validatorFactory.createAt(any())).thenReturn(basicValidator); // By default, have all basic messages being valid thus any failures are attributed to logic // in the RoundChangeMessageValidator when(basicValidator.addSignedProposalPayload(any())).thenReturn(true); when(basicValidator.validatePrepareMessage(any())).thenReturn(true); }
@Before public void setup() { for (int i = 0; i < 3; i++) { final KeyPair newKeyPair = KeyPair.generate(); validatorKeys.add(newKeyPair); validators.add(Util.publicKeyToAddress(newKeyPair.getPublicKey())); validatorMessageFactories.add(new MessageFactory(newKeyPair)); } when(block.getHash()).thenReturn(Hash.fromHexStringLenient("1")); }
public static SignedData<PreparePayload> createSignedPreparePayload(final KeyPair signerKeys) { final MessageFactory messageFactory = new MessageFactory(signerKeys); final ConsensusRoundIdentifier roundIdentifier = new ConsensusRoundIdentifier(0x1234567890ABCDEFL, 0xFEDCBA98); return messageFactory.createSignedPreparePayload( roundIdentifier, Hash.fromHexStringLenient("0")); }
@Before public void setup() { validators.add(Util.publicKeyToAddress(proposerKey.getPublicKey())); validators.add(Util.publicKeyToAddress(validatorKey.getPublicKey())); final ProtocolContext<IbftContext> protocolContext = new ProtocolContext<>( mock(MutableBlockchain.class), mock(WorldStateArchive.class), mock(IbftContext.class)); validator = new MessageValidator( validators, Util.publicKeyToAddress(proposerKey.getPublicKey()), roundIdentifier, blockValidator, protocolContext, parentHeader); when(block.getHash()).thenReturn(Hash.fromHexStringLenient("1")); when(blockValidator.validateAndProcessBlock(any(), any(), any(), any())) .thenReturn(Optional.of(new BlockProcessingOutputs(null, null))); insertRoundToBlockHeader(0); }
@Test public void roundTripRlp() { final Signature signature = Signature.create(BigInteger.ONE, BigInteger.TEN, (byte) 0); final Hash hash = Hash.fromHexStringLenient("0x8523ba6e7c5f59ae87"); final CommitPayload expectedCommitPayload = new CommitPayload(ROUND_IDENTIFIER, hash, signature); final BytesValueRLPOutput rlpOut = new BytesValueRLPOutput(); expectedCommitPayload.writeTo(rlpOut); final RLPInput rlpInput = RLP.input(rlpOut.encoded()); final CommitPayload commitPayload = CommitPayload.readFrom(rlpInput); assertThat(commitPayload.getRoundIdentifier()).isEqualTo(ROUND_IDENTIFIER); assertThat(commitPayload.getCommitSeal()).isEqualTo(signature); assertThat(commitPayload.getDigest()).isEqualTo(hash); assertThat(commitPayload.getMessageType()).isEqualTo(IbftV2.COMMIT); } }
public static SignedData<CommitPayload> createSignedCommitPayload(final KeyPair signerKeys) { final MessageFactory messageFactory = new MessageFactory(signerKeys); final ConsensusRoundIdentifier roundIdentifier = new ConsensusRoundIdentifier(0x1234567890ABCDEFL, 0xFEDCBA98); return messageFactory.createSignedCommitPayload( roundIdentifier, Hash.fromHexStringLenient("0"), Signature.create(BigInteger.ONE, BigInteger.TEN, (byte) 0)); }
validatorMessageFactory .get(0) .createSignedPreparePayload(roundIdentifier, Hash.fromHexStringLenient("0")); final SignedData<PreparePayload> secondPreparePayload = validatorMessageFactory .get(1) .createSignedPreparePayload(roundIdentifier, Hash.fromHexStringLenient("0")); manager.handlePreparePayload(preparePayload); manager.handlePreparePayload(secondPreparePayload);
validatorMessageFactory .get(0) .createSignedPreparePayload(futureRoundIdentifier, Hash.fromHexStringLenient("0")); final SignedData<CommitPayload> commitPayload = validatorMessageFactory .createSignedCommitPayload( futureRoundIdentifier, Hash.fromHexStringLenient("0"), Signature.create(BigInteger.ONE, BigInteger.ONE, (byte) 1));
@Test public void roundTripRlpWithPreparedCertificate() { final SignedData<ProposalPayload> signedProposal = signedProposal(); final PreparePayload preparePayload = new PreparePayload(ROUND_IDENTIFIER, Hash.fromHexStringLenient("0x8523ba6e7c5f59ae87")); final SignedData<PreparePayload> signedPrepare = SignedData.from(preparePayload, SIGNATURE); final PreparedCertificate preparedCert = new PreparedCertificate(signedProposal, Lists.newArrayList(signedPrepare)); final RoundChangePayload roundChangePayload = new RoundChangePayload(ROUND_IDENTIFIER, Optional.of(preparedCert)); final BytesValueRLPOutput rlpOut = new BytesValueRLPOutput(); roundChangePayload.writeTo(rlpOut); final RLPInput rlpInput = RLP.input(rlpOut.encoded()); RoundChangePayload actualRoundChangePayload = RoundChangePayload.readFrom(rlpInput); assertThat(actualRoundChangePayload.getRoundIdentifier()).isEqualTo(ROUND_IDENTIFIER); assertThat(actualRoundChangePayload.getPreparedCertificate()) .isEqualTo(Optional.of(preparedCert)); assertThat(actualRoundChangePayload.getMessageType()).isEqualTo(IbftV2.ROUND_CHANGE); }
@Test public void rlpRoundTripWithPreparedCertificate() { final Block block = TestHelpers.createProposalBlock(singletonList(AddressHelpers.ofValue(1)), 0); final ProposalPayload proposalPayload = new ProposalPayload(ROUND_IDENTIFIER, block); final Signature signature = Signature.create(BigInteger.ONE, BigInteger.TEN, (byte) 0); SignedData<ProposalPayload> signedProposal = SignedData.from(proposalPayload, signature); final PreparePayload preparePayload = new PreparePayload(ROUND_IDENTIFIER, Hash.fromHexStringLenient("0x8523ba6e7c5f59ae87")); final SignedData<PreparePayload> signedPrepare = SignedData.from(preparePayload, signature); final PreparedCertificate preparedCert = new PreparedCertificate(signedProposal, Lists.newArrayList(signedPrepare)); final RoundChangePayload roundChangePayload = new RoundChangePayload(ROUND_IDENTIFIER, Optional.of(preparedCert)); final BytesValueRLPOutput rlpOut = new BytesValueRLPOutput(); roundChangePayload.writeTo(rlpOut); final RLPInput rlpInput = RLP.input(rlpOut.encoded()); RoundChangePayload actualRoundChangePayload = RoundChangePayload.readFrom(rlpInput); assertThat(actualRoundChangePayload.getPreparedCertificate()) .isEqualTo(Optional.of(preparedCert)); assertThat(actualRoundChangePayload.getRoundIdentifier()).isEqualTo(ROUND_IDENTIFIER); assertThat(actualRoundChangePayload.getMessageType()).isEqualTo(IbftV2.ROUND_CHANGE); } }
new PreparePayload(ROUND_IDENTIFIER, Hash.fromHexStringLenient("0x8523ba6e7c5f59ae87")); final SignedData<PreparePayload> signedPrepare = SignedData.from(preparePayload, signature); final PreparedCertificate preparedCert =
final MessageFactory proposerMessageFactory = new MessageFactory(proposerKey); final Block proposedBlock = mock(Block.class); when(proposedBlock.getHash()).thenReturn(Hash.fromHexStringLenient("1")); final ConsensusRoundIdentifier roundIdentifier = new ConsensusRoundIdentifier(1, 4);
@Test public void roundTripRlpWithPreparePayload() { final SignedData<ProposalPayload> signedProposalPayload = signedProposal(); final PreparePayload preparePayload = new PreparePayload(ROUND_IDENTIFIER, Hash.fromHexStringLenient("0x8523ba6e7c5f59ae87")); final Signature signature = Signature.create(BigInteger.ONE, BigInteger.TEN, (byte) 0); final SignedData<PreparePayload> signedPrepare = SignedData.from(preparePayload, signature); final PreparedCertificate preparedCert = new PreparedCertificate(signedProposalPayload, Lists.newArrayList(signedPrepare)); final BytesValueRLPOutput rlpOut = new BytesValueRLPOutput(); preparedCert.writeTo(rlpOut); final RLPInput rlpInput = RLP.input(rlpOut.encoded()); PreparedCertificate actualPreparedCert = PreparedCertificate.readFrom(rlpInput); assertThat(actualPreparedCert.getPreparePayloads()) .isEqualTo(preparedCert.getPreparePayloads()); assertThat(actualPreparedCert.getProposalPayload()) .isEqualTo(preparedCert.getProposalPayload()); }