def test_loukupplan_amount(self): platon_ppos = Ppos('http://10.10.8.157:6789', self.address, chainid=102, privatekey=conf.PRIVATE_KEY) # platon_ppos = self.ppos_link () address1 = '0x51a9A03153a5c3c203F6D16233e3B7244844A457' privatekey1 = '25f9fdf3249bb47f239df0c59d23781c271e8b7e9a94e9e694c15717c1941502' # 签名转账 platon_ppos.send_raw_transaction('', Web3.toChecksumAddress(conf.ADDRESS), Web3.toChecksumAddress(address1), self.gasPrice, self.gas, self.value, conf.PRIVATE_KEY) balance = platon_ppos.eth.getBalance(address1) if balance > 0: try: loukupbalace = Web3.toWei(10000, 'ether') plan = [{'Epoch': 1, 'Amount': loukupbalace}] result = platon_ppos.CreateRestrictingPlan( address1, plan, privatekey1, from_address=address1, gasPrice=self.gasPrice, gas=self.gas) assert result['status'] == 'false' except: status = 1 assert status == 0, '创建锁仓计划失败' else: log.info('error:转账失败')
def test_fee_income(self): platon_ppos = Ppos('http://10.10.8.157:6789', self.address, chainid=102, privatekey=conf.PRIVATE_KEY) #platon_ppos = self.ppos_link () incentive_pool_balance_befor = platon_ppos.eth.getBalance( conf.INCENTIVEPOOLADDRESS) log.info('交易前激励池查询余额:{}'.format(incentive_pool_balance_befor)) # 签名转账 address1 = '0x51a9A03153a5c3c203F6D16233e3B7244844A457' privatekey1 = '25f9fdf3249bb47f239df0c59d23781c271e8b7e9a94e9e694c15717c1941502' try: platon_ppos.send_raw_transaction( '', Web3.toChecksumAddress(conf.ADDRESS), Web3.toChecksumAddress(address1), self.gasPrice, self.gas, self.value, conf.PRIVATE_KEY) balance = platon_ppos.eth.getBalance(address1) if balance == Web3.toWei(self.value, 'ether'): incentive_pool_balance_after = platon_ppos.eth.getBalance( conf.INCENTIVEPOOLADDRESS) log.info('交易前激励池查询余额:{}'.format(incentive_pool_balance_after)) difference = incentive_pool_balance_after - incentive_pool_balance_befor log.info('手续费的金额:{}'.format(difference)) assert difference == self.gas else: log.info("转账{}金额错误".format(Web3.toWei(self.value, 'ether'))) except: status = 1 assert status == 0, '转账失败'
def test_loukupplan_abnormal(self, number, amount): ''' 创建锁仓计划时,参数有效性验证 number : 锁仓解锁期 amount : 锁仓金额 :param number: :param amount: :return: ''' address1 = '0x9148528b98a0065D185F01dbc59baB88CdbE7Ad2' private_key1 = '6ccbf153f7409af1e5df7a1ef77daaca4759f0a6b50ef73fe9ccd5738cc2fda1' platon_ppos = Ppos('http://10.10.8.157:6789', self.address, chainid=102, privatekey=conf.PRIVATE_KEY) # platon_ppos = self.ppos_link () try: loukupbalace = Web3.toWei(amount, 'ether') plan = [{'Epoch': number, 'Amount': loukupbalace}] #当锁仓金额输入小于 1ether if number >= 1 and amount < 1: result = platon_ppos.CreateRestrictingPlan( address1, plan, conf.PRIVATE_KEY, from_address=conf.ADDRESS, gasPrice=self.gasPrice, gas=self.gas) assert result['status'] == 'false' #当锁仓解锁期输入非正整数倍 elif number < 0 or type(number) == float: result = platon_ppos.CreateRestrictingPlan( address1, plan, conf.PRIVATE_KEY, from_address=conf.ADDRESS, gasPrice=self.gasPrice, gas=self.gas) assert result['status'] == 'false' #当锁仓解锁期大于36个结算期 elif number > 36: result = platon_ppos.CreateRestrictingPlan( address1, plan, conf.PRIVATE_KEY, from_address=conf.ADDRESS, gasPrice=self.gasPrice, gas=self.gas) assert result['status'] == 'false' except: status = 1 assert status == 0, '创建锁仓计划失败'
def test_loukupplan(self): from_address = Web3.toChecksumAddress(conf.ADDRESS) to_address = Web3.toChecksumAddress( self.ppos_link(self.rpc_list).web3.personal.newAccount(self.pwd)) send_data = self.transfer_parameters(to_address, from_address) self.platon_ppos.eth.sendTransaction(send_data) toaddressbalace = self.platon_dpos1.eth.getBalance(to_address) loukupbalace = toaddressbalace / 4 plan = [{ 'Epoch': 3, 'Amount': loukupbalace }, { 'Epoch': 3, 'Amount': loukupbalace }] Ppos.CreateRestrictingPlan(to_address, plan, to_address) result = Ppos.GetRestrictingInfo(to_address, to_address)
def test_punishment_income(self): ''' 验证低出块率验证节点的处罚金自动转账到激励池 :return: ''' #随机获取其中一个正在出块的节点信息 node_info = get_node_list(conf.TWENTY_FIVENODE_YML) node_info_length = len(node_info) - 1 index = random.randint(0, node_info_length) node_data = node_info[0][index] print(node_data) platon_ppos = Ppos('http://10.10.8.157:6789', self.address, chainid=102, privatekey=conf.PRIVATE_KEY) # platon_ppos = self.ppos_link () incentive_pool_balance_befor = platon_ppos.eth.getBalance( conf.INCENTIVEPOOLADDRESS) log.info('处罚之前激励池查询余额:{}'.format(incentive_pool_balance_befor)) #停止其中一个正在出块的节点信息 try: self.auto = AutoDeployPlaton(cbft=self.cbft_json_path) self.auto.kill(node_data) platon_ppos = self.ppos_link(node_data['url']) if not platon_ppos.web3.isConnected(): platon_ppos = self.ppos_link() current_block = platon_ppos.eth.blockNumber() waiting_time = 250 - (current_block % 250) time.sleep(waiting_time + 1) incentive_pool_balance_after = platon_ppos.eth.getBalance( conf.INCENTIVEPOOLADDRESS) log.info('处罚之后激励池查询余额:{}'.format(incentive_pool_balance_after)) punishment_CandidateInfo = platon_ppos.getCandidateInfo( node_data['id']) if punishment_CandidateInfo['Status'] == 'True': punishment_amount = punishment_CandidateInfo['Data'][ 'Shares'] * (20 / 100) assert incentive_pool_balance_after == incentive_pool_balance_befor + punishment_amount else: log.info("查询处罚节点:{}质押信息失败".format(node_data['host'])) else: log.info("当前质押节点:{}链接正常".format(node_data['host'])) except: status = 1 assert status == 0, '停止节点:{}失败'.format(node_data['host'])
def test_Incentive_pool(self): platon_ppos = Ppos('http://10.10.8.157:6789', self.address, chainid=102, privatekey=conf.PRIVATE_KEY) #platon_ppos = self.ppos_link () lockupbalance = platon_ppos.eth.getBalance(conf.INCENTIVEPOOLADDRESS) log.info('激励池查询余额:{}'.format(lockupbalance)) INCENTIVEPOOL = self.initial_amount['INCENTIVEPOOL'] assert lockupbalance == INCENTIVEPOOL
def test_token_loukup(self): ''' 查询初始化链后基金会锁仓金额 以及查询初始锁仓计划信息的有效性 :return: ''' #platon_ppos = self.ppos_link () platon_ppos = Ppos('http://10.10.8.157:6789', self.address, chainid=102, privatekey=conf.PRIVATE_KEY) lockupbalance = platon_ppos.eth.getBalance( conf.FOUNDATIONLOCKUPADDRESS) FOUNDATIONLOCKUP = self.initial_amount['FOUNDATIONLOCKUP'] assert lockupbalance == FOUNDATIONLOCKUP result = platon_ppos.GetRestrictingInfo(conf.INCENTIVEPOOLADDRESS) print(result) if result['Status'] == 'True': assert result['Date']['balance'] == self.initial_amount[ 'FOUNDATIONLOCKUP'] else: log.info("初始锁仓金额:{},锁仓计划信息查询结果有误".format(lockupbalance))
def ppos_link(self, url=None, address=conf.ADDRESS, privatekey=conf.PRIVATE_KEY): if url is None: node_info = get_node_info(conf.TWENTY_FIVENODE_YML) self.rpc_list, enode_list, nodeid_list, ip_list, port_list = node_info.get( 'collusion') rpc_list_length = len(self.rpc_list) - 1 index = random.randint(0, rpc_list_length) url = self.rpc_list[index] self.platon_ppos = Ppos(url, address=address, chainid=101, privatekey=privatekey) return self.platon_ppos
def test_loukupplan(self): ''' 验证正常锁仓功能 参数输入: Epoch:1 Amount:50 ether :return: ''' platon_ppos = Ppos('http://10.10.8.157:6789', self.address, chainid=102, privatekey=conf.PRIVATE_KEY) #platon_ppos = self.ppos_link () address1 = '0x472599739f398c24ad8Cdc03476b20D6469eAf46' privatekey1 = '61279a4b654aef7c3065c0cf550cdce460682875c218de893544a4799b57cc41' #非签名转账 # platon_ppos.web3.personal.unlockAccount(conf.ADDRESS, conf.PASSWORD, 2222) # self.ppos_sendTransaction(address1,conf.ADDRESS,self.gas,self.gasPrice,Web3.toWei(10000,'ether')) #签名转账 platon_ppos.send_raw_transaction('', Web3.toChecksumAddress(conf.ADDRESS), Web3.toChecksumAddress(address1), self.gasPrice, self.gas, self.value, conf.PRIVATE_KEY) balance = platon_ppos.eth.getBalance(address1) log.info("发起锁仓账户的余额:{}", balance) if balance > 0: try: loukupbalace = Web3.toWei(50, 'ether') plan = [{'Epoch': 1, 'Amount': loukupbalace}] lockup_before = platon_ppos.eth.getBalance( conf.FOUNDATIONLOCKUPADDRESS) #创建锁仓计划 result = platon_ppos.CreateRestrictingPlan( address1, plan, privatekey1, from_address=address1, gasPrice=self.gasPrice) lockup_after = platon_ppos.eth.getBalance( conf.FOUNDATIONLOCKUPADDRESS) #查看锁仓计划明细 RestrictingInfo = platon_ppos.GetRestrictingInfo(address1) if result['status'] == 'True': assert RestrictingInfo['balance'] == loukupbalace else: log.info("查询锁仓计划信息返回状态为:{}".format(result['status'])) assert lockup_after == lockup_before + loukupbalace except: status = 1 assert status == 0, '创建锁仓计划失败'
def test_loukupplan_sameperiod(self, code): ''' 验证一个锁仓计划里有多个相同解锁期 code =1 :同个account在一个锁仓计划里有相同解锁期 code =2 :同个account在不同锁仓计划里有相同解锁期 :return: ''' platon_ppos = Ppos('http://10.10.8.157:6789', self.address, chainid=102, privatekey=conf.PRIVATE_KEY) # platon_ppos = self.ppos_link () address1 = '0x51a9A03153a5c3c203F6D16233e3B7244844A457' privatekey1 = '25f9fdf3249bb47f239df0c59d23781c271e8b7e9a94e9e694c15717c1941502' # 签名转账 platon_ppos.send_raw_transaction('', Web3.toChecksumAddress(conf.ADDRESS), Web3.toChecksumAddress(address1), self.gasPrice, self.gas, 1000, conf.PRIVATE_KEY) balance = platon_ppos.eth.getBalance(address1) if balance > 0: try: period1 = 1 period2 = 2 loukupbalace = Web3.toWei(100, 'ether') if code == 1: plan = [{ 'Epoch': period1, 'Amount': loukupbalace }, { 'Epoch': period1, 'Amount': loukupbalace }] result = platon_ppos.CreateRestrictingPlan( address1, plan, privatekey1, from_address=address1, gasPrice=self.gasPrice, gas=self.gas) assert result['status'] == 'True' RestrictingInfo = platon_ppos.GetRestrictingInfo(address1) json_data = json.loads(RestrictingInfo['Data']) assert json_data['Entry'][0]['amount'] == (loukupbalace + loukupbalace) elif code == 2: plan = [{ 'Epoch': period1, 'Amount': loukupbalace }, { 'Epoch': period2, 'Amount': loukupbalace }] result = platon_ppos.CreateRestrictingPlan( address1, plan, privatekey1, from_address=address1, gasPrice=self.gasPrice, gas=self.gas) assert result['status'] == 'True' loukupbalace2 = Web3.toWei(200, 'ether') plan = [{ 'Epoch': period1, 'Amount': loukupbalace2 }, { 'Epoch': period2, 'Amount': loukupbalace2 }] result1 = platon_ppos.CreateRestrictingPlan( address1, plan, privatekey1, from_address=address1, gasPrice=self.gasPrice, gas=self.gas) assert result1['status'] == 'True' RestrictingInfo = platon_ppos.GetRestrictingInfo(address1) json_data = json.loads(RestrictingInfo['Data']) assert json_data['Entry'][0]['amount'] == (loukupbalace + loukupbalace2) else: log.info('输入的code:{}有误'.format(code)) except: status = 1 assert status == 0, '创建锁仓计划失败' else: log.info('error:转账失败')
def test_loukupplan_Moredeadline(self, balace1, balace2): ''' 验证一个锁仓计划里有多个解锁期 amount : 锁仓 balace1 : 第一个锁仓期的锁仓金额 balace2 : 第二个锁仓期的锁仓金额 :return: ''' platon_ppos = Ppos('http://10.10.8.157:6789', self.address, chainid=102, privatekey=conf.PRIVATE_KEY) # platon_ppos = self.ppos_link () address1 = '0x51a9A03153a5c3c203F6D16233e3B7244844A457' privatekey1 = '25f9fdf3249bb47f239df0c59d23781c271e8b7e9a94e9e694c15717c1941502' # 签名转账 platon_ppos.send_raw_transaction('', Web3.toChecksumAddress(conf.ADDRESS), Web3.toChecksumAddress(address1), self.gasPrice, self.gas, self.value, conf.PRIVATE_KEY) balance = platon_ppos.eth.getBalance(address1) if balance > 0: try: loukupbalace1 = Web3.toWei(balace1, 'ether') loukupbalace2 = Web3.toWei(balace2, 'ether') if (loukupbalace1 + loukupbalace2) < self.value: plan = [{ 'Epoch': 1, 'Amount': loukupbalace1 }, { 'Epoch': 2, 'Amount': loukupbalace2 }] result = platon_ppos.CreateRestrictingPlan( address1, plan, privatekey1, from_address=address1, gasPrice=self.gasPrice, gas=self.gas) assert result['status'] == 'True' elif self.value <= (loukupbalace1 + loukupbalace2): plan = [{ 'Epoch': 1, 'Amount': loukupbalace1 }, { 'Epoch': 2, 'Amount': loukupbalace2 }] result = platon_ppos.CreateRestrictingPlan( address1, plan, privatekey1, from_address=address1, gasPrice=self.gasPrice, gas=self.gas) assert result['status'] == 'false' else: log.info('锁仓输入的金额:{}出现异常'.format( (loukupbalace1 + loukupbalace2))) except: status = 1 assert status == 0, '创建锁仓计划失败' else: log.info('error:转账失败')