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)