github.com/platonnetwork/platon-go@v0.7.6/cases/tests/govern/test_platon_version.py (about) 1 from dacite import from_dict 2 from tests.lib import Genesis 3 from tests.lib.utils import assert_code, wait_block_number, upload_platon 4 from tests.lib.client import get_client_by_nodeid 5 import pytest 6 import time, os 7 from tests.govern.test_voting_statistics import submitvpandvote 8 from common.log import log 9 10 11 class TestPlatonVersion: 12 @pytest.mark.P2 13 def test_VE_DE_001(self, new_genesis_env, client_noconsensus): 14 genesis = from_dict(data_class=Genesis, data=new_genesis_env.genesis_config) 15 genesis.config.genesisVersion = client_noconsensus.pip.cfg.version2 16 new_genesis_env.set_genesis(genesis.to_dict()) 17 new_genesis_env.deploy_all() 18 client = client_noconsensus 19 address, _ = client.economic.account.generate_account(client.node.web3, 10 ** 18 * 10000000) 20 result = client.staking.create_staking(0, address, address) 21 assert_code(result, 0) 22 23 @pytest.mark.P2 24 def test_VE_DE_002(self, new_genesis_env, client_noconsensus): 25 genesis = from_dict(data_class=Genesis, data=new_genesis_env.genesis_config) 26 genesis.config.genesisVersion = client_noconsensus.pip.cfg.version1 27 new_genesis_env.set_genesis(genesis.to_dict()) 28 new_genesis_env.deploy_all() 29 client = client_noconsensus 30 address, _ = client.economic.account.generate_account(client.node.web3, 10 ** 18 * 10000000) 31 result = client.staking.create_staking(0, address, address) 32 assert_code(result, 301005) 33 34 @pytest.mark.P2 35 def test_VE_DE_004(self, new_genesis_env, client_noconsensus): 36 genesis = from_dict(data_class=Genesis, data=new_genesis_env.genesis_config) 37 genesis.config.genesisVersion = client_noconsensus.pip.cfg.version3 38 new_genesis_env.set_genesis(genesis.to_dict()) 39 new_genesis_env.deploy_all() 40 client = client_noconsensus 41 address, _ = client.economic.account.generate_account(client.node.web3, 10 ** 18 * 10000000) 42 result = client.staking.create_staking(0, address, address) 43 assert_code(result, 0) 44 45 @pytest.mark.P2 46 def test_VE_DE_005(self, new_genesis_env, client_noconsensus): 47 genesis = from_dict(data_class=Genesis, data=new_genesis_env.genesis_config) 48 genesis.config.genesisVersion = client_noconsensus.pip.cfg.version7 49 new_genesis_env.set_genesis(genesis.to_dict()) 50 new_genesis_env.deploy_all() 51 client = client_noconsensus 52 address, _ = client.economic.account.generate_account(client.node.web3, 10 ** 18 * 10000000) 53 result = client.staking.create_staking(0, address, address) 54 assert_code(result, 301004) 55 56 @pytest.mark.P2 57 def test_VE_DE_006(self, new_genesis_env, client_noconsensus): 58 genesis = from_dict(data_class=Genesis, data=new_genesis_env.genesis_config) 59 genesis.config.genesisVersion = client_noconsensus.pip.cfg.version8 60 new_genesis_env.set_genesis(genesis.to_dict()) 61 new_genesis_env.deploy_all() 62 client = client_noconsensus 63 address, _ = client.economic.account.generate_account(client.node.web3, 10 ** 18 * 10000000) 64 result = client.staking.create_staking(0, address, address) 65 assert_code(result, 301004) 66 67 @pytest.mark.P2 68 def test_VE_AD_002(self, new_genesis_env): 69 genesis = from_dict(data_class=Genesis, data=new_genesis_env.genesis_config) 70 genesis.config.genesisVersion = 1796 71 file = os.path.join(os.path.dirname(new_genesis_env.cfg.genesis_tmp), 'genesis_tmp2.json') 72 genesis.to_file(file) 73 consensus_node = new_genesis_env.get_rand_node() 74 test_node = new_genesis_env.get_a_normal_node() 75 test_node.clean() 76 test_node.deploy_me(file) 77 test_node.admin.addPeer(consensus_node.enode) 78 time.sleep(5) 79 assert test_node.web3.net.peerCount == 0 80 assert test_node.block_number == 0 81 82 @pytest.mark.P2 83 def test_VE_AD_001(self, new_genesis_env, all_clients): 84 consensus_node = new_genesis_env.get_rand_node() 85 test_node = new_genesis_env.get_a_normal_node() 86 test_node.clean() 87 test_node.deploy_me(new_genesis_env.cfg.genesis_tmp) 88 test_node.admin.addPeer(consensus_node.enode) 89 time.sleep(5) 90 assert test_node.web3.net.peerCount > 0, 'Join the chain failed' 91 assert test_node.block_number > 0, "Non-consensus node sync block failed, block height: {}".format(test_node.block_number) 92 time.sleep(5) 93 client = get_client_by_nodeid(test_node.node_id, all_clients) 94 address, _ = client.economic.account.generate_account(client.node.web3, 10**18 * 10000000) 95 result = client.staking.create_staking(0, address, address) 96 assert_code(result, 0) 97 98 @pytest.mark.P2 99 def test_VE_AD_004(self, new_genesis_env, clients_consensus): 100 submitvpandvote(clients_consensus) 101 proposalinfo = clients_consensus[0].pip.get_effect_proposal_info_of_vote() 102 log.info('Get version proposal information : {}'.format(proposalinfo)) 103 wait_block_number(clients_consensus[0].node, proposalinfo.get('ActiveBlock')) 104 genesis = from_dict(data_class=Genesis, data=new_genesis_env.genesis_config) 105 genesis.config.genesisVersion = 2049 106 file = os.path.join(os.path.dirname(new_genesis_env.cfg.genesis_tmp), 'genesis_tmp2.json') 107 genesis.to_file(file) 108 consensus_node = new_genesis_env.get_rand_node() 109 test_node = new_genesis_env.get_a_normal_node() 110 test_node.clean() 111 test_node.deploy_me(file) 112 test_node.admin.addPeer(consensus_node.enode) 113 time.sleep(5) 114 assert test_node.web3.net.peerCount == 0 115 assert test_node.block_number == 0 116 117 @pytest.mark.P2 118 def test_VE_AD_003(self, new_genesis_env, clients_consensus, all_clients): 119 submitvpandvote(clients_consensus) 120 proposalinfo = clients_consensus[0].pip.get_effect_proposal_info_of_vote() 121 log.info('Get version proposal information : {}'.format(proposalinfo)) 122 wait_block_number(clients_consensus[0].node, proposalinfo.get('ActiveBlock')) 123 consensus_node = new_genesis_env.get_rand_node() 124 test_node = new_genesis_env.get_a_normal_node() 125 test_node.clean() 126 test_node.deploy_me(new_genesis_env.cfg.genesis_tmp) 127 test_node.admin.addPeer(consensus_node.enode) 128 time.sleep(5) 129 assert test_node.web3.net.peerCount > 0, 'Join the chain failed' 130 assert test_node.block_number > 0, "Non-consensus node sync block failed, block height: {}".format(test_node.block_number) 131 time.sleep(5) 132 client = get_client_by_nodeid(test_node.node_id, all_clients) 133 address, _ = client.economic.account.generate_account(client.node.web3, 10**18 * 10000000) 134 result = client.staking.create_staking(0, address, address) 135 assert_code(result, 301004) 136 upload_platon(test_node, client.pip.cfg.PLATON_NEW_BIN) 137 test_node.restart() 138 result = client.staking.create_staking(0, address, address) 139 assert_code(result, 0)