diff --git a/tests/db/test_bigchain_api.py b/tests/db/test_bigchain_api.py index afe2bbd6..9ad3732f 100644 --- a/tests/db/test_bigchain_api.py +++ b/tests/db/test_bigchain_api.py @@ -108,7 +108,7 @@ class TestBigchainApi(object): block2 = b.create_block([transfer_tx]) b.write_block(block2, durability='hard') - monkeypatch.setattr('time.time', lambda: 3) + monkeypatch.setattr('time.time', lambda: 3333333333) transfer_tx2 = Transaction.transfer(tx.to_inputs(), [([b.me], 1)], tx.asset) transfer_tx2 = transfer_tx2.sign([b.me_private]) @@ -137,7 +137,7 @@ class TestBigchainApi(object): block1 = b.create_block([tx]) b.write_block(block1, durability='hard') - monkeypatch.setattr('time.time', lambda: 2) + monkeypatch.setattr('time.time', lambda: 2222222222) block2 = b.create_block([tx]) b.write_block(block2, durability='hard') @@ -161,7 +161,7 @@ class TestBigchainApi(object): block1 = b.create_block([tx1]) b.write_block(block1, durability='hard') - monkeypatch.setattr('time.time', lambda: 2) + monkeypatch.setattr('time.time', lambda: 2222222222) tx2 = Transaction.create([b.me], [([b.me], 1)]) tx2 = tx2.sign([b.me_private]) block2 = b.create_block([tx2]) diff --git a/tests/pipelines/test_election.py b/tests/pipelines/test_election.py index 73c3b786..300dee3f 100644 --- a/tests/pipelines/test_election.py +++ b/tests/pipelines/test_election.py @@ -28,8 +28,10 @@ def test_check_for_quorum_invalid(b, user_pk): b.write_block(test_block) # split_vote (invalid) - votes = [member.vote(test_block.id, 'abc', True) for member in test_federation[:2]] + \ - [member.vote(test_block.id, 'abc', False) for member in test_federation[2:]] + votes = [member.vote(test_block.id, 'a' * 64, True) + for member in test_federation[:2]] + \ + [member.vote(test_block.id, 'b' * 64, False) + for member in test_federation[2:]] # cast votes for vote in votes: @@ -49,8 +51,10 @@ def test_check_for_quorum_invalid_prev_node(b, user_pk): # simulate a federation with four voters key_pairs = [crypto.generate_key_pair() for _ in range(4)] - test_federation = [Bigchain(public_key=key_pair[1], private_key=key_pair[0]) - for key_pair in key_pairs] + test_federation = [ + Bigchain(public_key=key_pair[1], private_key=key_pair[0]) + for key_pair in key_pairs + ] # add voters to block and write test_block.voters = [key_pair[1] for key_pair in key_pairs] @@ -58,8 +62,10 @@ def test_check_for_quorum_invalid_prev_node(b, user_pk): b.write_block(test_block) # split vote over prev node - votes = [member.vote(test_block.id, 'abc', True) for member in test_federation[:2]] + \ - [member.vote(test_block.id, 'def', True) for member in test_federation[2:]] + votes = [member.vote(test_block.id, 'a' * 64, True) + for member in test_federation[:2]] + \ + [member.vote(test_block.id, 'b' * 64, True) + for member in test_federation[2:]] # cast votes for vote in votes: @@ -80,8 +86,10 @@ def test_check_for_quorum_valid(b, user_pk): # simulate a federation with four voters key_pairs = [crypto.generate_key_pair() for _ in range(4)] - test_federation = [Bigchain(public_key=key_pair[1], private_key=key_pair[0]) - for key_pair in key_pairs] + test_federation = [ + Bigchain(public_key=key_pair[1], private_key=key_pair[0]) + for key_pair in key_pairs + ] # add voters to block and write test_block.voters = [key_pair[1] for key_pair in key_pairs] @@ -89,7 +97,7 @@ def test_check_for_quorum_valid(b, user_pk): b.write_block(test_block) # votes for block one - votes = [member.vote(test_block.id, 'abc', True) + votes = [member.vote(test_block.id, 'a' * 64, True) for member in test_federation] # cast votes for vote in votes: @@ -158,8 +166,8 @@ def test_full_pipeline(b, user_pk): pipeline.start() time.sleep(1) # vote one block valid, one invalid - vote_valid = b.vote(valid_block.id, 'abc', True) - vote_invalid = b.vote(invalid_block.id, 'abc', False) + vote_valid = b.vote(valid_block.id, 'b' * 64, True) + vote_invalid = b.vote(invalid_block.id, 'c' * 64, False) b.write_vote(vote_valid) b.write_vote(vote_invalid) diff --git a/tests/pipelines/test_vote.py b/tests/pipelines/test_vote.py index 227a23a2..be3652b2 100644 --- a/tests/pipelines/test_vote.py +++ b/tests/pipelines/test_vote.py @@ -37,7 +37,7 @@ def test_vote_creation_valid(b): assert vote['node_pubkey'] == b.me assert isinstance(vote['signature'], str) assert crypto.PublicKey(b.me).verify(serialize(vote['vote']).encode(), - vote['signature']) is True + vote['signature']) is True def test_vote_creation_invalid(b): @@ -56,7 +56,7 @@ def test_vote_creation_invalid(b): assert vote['vote']['invalid_reason'] is None assert vote['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialize(vote['vote']).encode(), - vote['signature']) is True + vote['signature']) is True def test_vote_ungroup_returns_a_set_of_results(b): @@ -160,7 +160,7 @@ def test_valid_block_voting_sequential(b, monkeypatch): from bigchaindb.common import crypto, util from bigchaindb.pipelines import vote - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) genesis = b.create_genesis_block() vote_obj = vote.Vote() block = dummy_block(b) @@ -176,12 +176,12 @@ def test_valid_block_voting_sequential(b, monkeypatch): 'previous_block': genesis.id, 'is_block_valid': True, 'invalid_reason': None, - 'timestamp': '1'} + 'timestamp': '1111111111'} serialized_vote = util.serialize(vote_doc['vote']).encode() assert vote_doc['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialized_vote, - vote_doc['signature']) is True + vote_doc['signature']) is True def test_valid_block_voting_multiprocessing(b, monkeypatch): @@ -191,7 +191,7 @@ def test_valid_block_voting_multiprocessing(b, monkeypatch): inpipe = Pipe() outpipe = Pipe() - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) genesis = b.create_genesis_block() vote_pipeline = vote.create_pipeline() vote_pipeline.setup(indata=inpipe, outdata=outpipe) @@ -210,12 +210,12 @@ def test_valid_block_voting_multiprocessing(b, monkeypatch): 'previous_block': genesis.id, 'is_block_valid': True, 'invalid_reason': None, - 'timestamp': '1'} + 'timestamp': '1111111111'} serialized_vote = util.serialize(vote_doc['vote']).encode() assert vote_doc['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialized_vote, - vote_doc['signature']) is True + vote_doc['signature']) is True def test_valid_block_voting_with_create_transaction(b, monkeypatch): @@ -230,7 +230,7 @@ def test_valid_block_voting_with_create_transaction(b, monkeypatch): tx = Transaction.create([b.me], [([test_user_pub], 1)]) tx = tx.sign([b.me_private]) - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) block = b.create_block([tx]) inpipe = Pipe() @@ -251,12 +251,12 @@ def test_valid_block_voting_with_create_transaction(b, monkeypatch): 'previous_block': genesis.id, 'is_block_valid': True, 'invalid_reason': None, - 'timestamp': '1'} + 'timestamp': '1111111111'} serialized_vote = util.serialize(vote_doc['vote']).encode() assert vote_doc['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialized_vote, - vote_doc['signature']) is True + vote_doc['signature']) is True def test_valid_block_voting_with_transfer_transactions(monkeypatch, b): @@ -271,7 +271,7 @@ def test_valid_block_voting_with_transfer_transactions(monkeypatch, b): tx = Transaction.create([b.me], [([test_user_pub], 1)]) tx = tx.sign([b.me_private]) - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) block = b.create_block([tx]) b.write_block(block, durability='hard') @@ -281,7 +281,7 @@ def test_valid_block_voting_with_transfer_transactions(monkeypatch, b): tx.asset) tx2 = tx2.sign([test_user_priv]) - monkeypatch.setattr('time.time', lambda: 2) + monkeypatch.setattr('time.time', lambda: 2222222222) block2 = b.create_block([tx2]) b.write_block(block2, durability='hard') @@ -306,12 +306,12 @@ def test_valid_block_voting_with_transfer_transactions(monkeypatch, b): 'previous_block': genesis.id, 'is_block_valid': True, 'invalid_reason': None, - 'timestamp': '2'} + 'timestamp': '2222222222'} serialized_vote = util.serialize(vote_doc['vote']).encode() assert vote_doc['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialized_vote, - vote_doc['signature']) is True + vote_doc['signature']) is True vote2_rs = b.backend.get_votes_by_block_id_and_voter(block2.id, b.me) vote2_doc = vote2_rs.next() @@ -320,12 +320,12 @@ def test_valid_block_voting_with_transfer_transactions(monkeypatch, b): 'previous_block': block.id, 'is_block_valid': True, 'invalid_reason': None, - 'timestamp': '2'} + 'timestamp': '2222222222'} serialized_vote2 = util.serialize(vote2_doc['vote']).encode() assert vote2_doc['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialized_vote2, - vote2_doc['signature']) is True + vote2_doc['signature']) is True def test_unsigned_tx_in_block_voting(monkeypatch, b, user_pk): @@ -336,7 +336,7 @@ def test_unsigned_tx_in_block_voting(monkeypatch, b, user_pk): inpipe = Pipe() outpipe = Pipe() - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) genesis = b.create_genesis_block() vote_pipeline = vote.create_pipeline() vote_pipeline.setup(indata=inpipe, outdata=outpipe) @@ -357,12 +357,12 @@ def test_unsigned_tx_in_block_voting(monkeypatch, b, user_pk): 'previous_block': genesis.id, 'is_block_valid': False, 'invalid_reason': None, - 'timestamp': '1'} + 'timestamp': '1111111111'} serialized_vote = util.serialize(vote_doc['vote']).encode() assert vote_doc['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialized_vote, - vote_doc['signature']) is True + vote_doc['signature']) is True def test_invalid_id_tx_in_block_voting(monkeypatch, b, user_pk): @@ -373,7 +373,7 @@ def test_invalid_id_tx_in_block_voting(monkeypatch, b, user_pk): inpipe = Pipe() outpipe = Pipe() - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) genesis = b.create_genesis_block() vote_pipeline = vote.create_pipeline() vote_pipeline.setup(indata=inpipe, outdata=outpipe) @@ -396,12 +396,12 @@ def test_invalid_id_tx_in_block_voting(monkeypatch, b, user_pk): 'previous_block': genesis.id, 'is_block_valid': False, 'invalid_reason': None, - 'timestamp': '1'} + 'timestamp': '1111111111'} serialized_vote = util.serialize(vote_doc['vote']).encode() assert vote_doc['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialized_vote, - vote_doc['signature']) is True + vote_doc['signature']) is True def test_invalid_content_in_tx_in_block_voting(monkeypatch, b, user_pk): @@ -412,7 +412,7 @@ def test_invalid_content_in_tx_in_block_voting(monkeypatch, b, user_pk): inpipe = Pipe() outpipe = Pipe() - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) genesis = b.create_genesis_block() vote_pipeline = vote.create_pipeline() vote_pipeline.setup(indata=inpipe, outdata=outpipe) @@ -435,12 +435,12 @@ def test_invalid_content_in_tx_in_block_voting(monkeypatch, b, user_pk): 'previous_block': genesis.id, 'is_block_valid': False, 'invalid_reason': None, - 'timestamp': '1'} + 'timestamp': '1111111111'} serialized_vote = util.serialize(vote_doc['vote']).encode() assert vote_doc['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialized_vote, - vote_doc['signature']) is True + vote_doc['signature']) is True def test_invalid_block_voting(monkeypatch, b, user_pk): @@ -450,7 +450,7 @@ def test_invalid_block_voting(monkeypatch, b, user_pk): inpipe = Pipe() outpipe = Pipe() - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) genesis = b.create_genesis_block() vote_pipeline = vote.create_pipeline() vote_pipeline.setup(indata=inpipe, outdata=outpipe) @@ -470,12 +470,12 @@ def test_invalid_block_voting(monkeypatch, b, user_pk): 'previous_block': genesis.id, 'is_block_valid': False, 'invalid_reason': None, - 'timestamp': '1'} + 'timestamp': '1111111111'} serialized_vote = util.serialize(vote_doc['vote']).encode() assert vote_doc['node_pubkey'] == b.me assert crypto.PublicKey(b.me).verify(serialized_vote, - vote_doc['signature']) is True + vote_doc['signature']) is True def test_voter_considers_unvoted_blocks_when_single_node(monkeypatch, b): @@ -483,17 +483,17 @@ def test_voter_considers_unvoted_blocks_when_single_node(monkeypatch, b): outpipe = Pipe() - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) b.create_genesis_block() block_ids = [] # insert blocks in the database while the voter process is not listening # (these blocks won't appear in the changefeed) - monkeypatch.setattr('time.time', lambda: 2) + monkeypatch.setattr('time.time', lambda: 2222222222) block_1 = dummy_block(b) block_ids.append(block_1.id) b.write_block(block_1, durability='hard') - monkeypatch.setattr('time.time', lambda: 3) + monkeypatch.setattr('time.time', lambda: 3333333333) block_2 = dummy_block(b) block_ids.append(block_2.id) b.write_block(block_2, durability='hard') @@ -508,7 +508,7 @@ def test_voter_considers_unvoted_blocks_when_single_node(monkeypatch, b): outpipe.get() # create a new block that will appear in the changefeed - monkeypatch.setattr('time.time', lambda: 4) + monkeypatch.setattr('time.time', lambda: 4444444444) block_3 = dummy_block(b) block_ids.append(block_3.id) b.write_block(block_3, durability='hard') @@ -530,16 +530,16 @@ def test_voter_chains_blocks_with_the_previous_ones(monkeypatch, b): outpipe = Pipe() - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) b.create_genesis_block() block_ids = [] - monkeypatch.setattr('time.time', lambda: 2) + monkeypatch.setattr('time.time', lambda: 2222222222) block_1 = dummy_block(b) block_ids.append(block_1.id) b.write_block(block_1, durability='hard') - monkeypatch.setattr('time.time', lambda: 3) + monkeypatch.setattr('time.time', lambda: 3333333333) block_2 = dummy_block(b) block_ids.append(block_2.id) b.write_block(block_2, durability='hard') @@ -556,12 +556,13 @@ def test_voter_chains_blocks_with_the_previous_ones(monkeypatch, b): # retrive blocks from bigchain blocks = [b.get_block(_id) for _id in block_ids] + # retrieve votes votes = [list(b.backend.get_votes_by_block_id(_id))[0] for _id in block_ids] - assert votes[0]['vote']['voting_for_block'] in (blocks[0]['id'], blocks[1]['id']) - assert votes[1]['vote']['voting_for_block'] in (blocks[0]['id'], blocks[1]['id']) + assert ({v['vote']['voting_for_block'] for v in votes} == + {block['id'] for block in blocks}) def test_voter_checks_for_previous_vote(monkeypatch, b): @@ -570,10 +571,10 @@ def test_voter_checks_for_previous_vote(monkeypatch, b): inpipe = Pipe() outpipe = Pipe() - monkeypatch.setattr('time.time', lambda: 1) + monkeypatch.setattr('time.time', lambda: 1111111111) b.create_genesis_block() - monkeypatch.setattr('time.time', lambda: 2) + monkeypatch.setattr('time.time', lambda: 2222222222) block_1 = dummy_block(b) inpipe.put(block_1.to_dict()) assert len(list(b.backend.get_votes_by_block_id(block_1.id))) == 0 @@ -586,11 +587,11 @@ def test_voter_checks_for_previous_vote(monkeypatch, b): outpipe.get() # queue block for voting AGAIN - monkeypatch.setattr('time.time', lambda: 3) + monkeypatch.setattr('time.time', lambda: 3333333333) inpipe.put(block_1.to_dict()) # queue another block - monkeypatch.setattr('time.time', lambda: 4) + monkeypatch.setattr('time.time', lambda: 4444444444) block_2 = dummy_block(b) inpipe.put(block_2.to_dict())