def test3(count=1000, msg='wasm'): import time import json code = N('counter') counter_id = N('counter') counter_begin = 0 itr = db.find_i64(code, code, code, counter_id) if itr >= 0: counter_begin = db.get_i64(itr) counter_begin = int.from_bytes(counter_begin, 'little') print('counter begin: ', counter_begin) transactions = [] for i in range(count): action = ['counter', 'count', msg+':'+str(i), {'counter':'active'}] transactions.append([action]) ret, cost = eosapi.push_transactions(transactions) assert ret print('total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f'%(cost/1e6, cost/count/1000, 1*1e6/(cost/count))) counter_end = 0 itr = db.find_i64(code, code, code, counter_id) if itr >= 0: counter_end = db.get_i64(itr) counter_end = int.from_bytes(counter_end, 'little') print('counter end: ', counter_end) itr = db.find_i64(code, code, code, N('msg')) if itr >= 0: msg = db.get_i64(itr) print('msg', msg)
def test2(count=100): import time import json code = N('counter') counter_id = N('counter') counter_begin = 0 itr = db.find_i64(code, code, code, counter_id) if itr >= 0: counter_begin = db.get_i64(itr) counter_begin = int.from_bytes(counter_begin, 'little') print('counter begin: ', counter_begin) actions = [] for i in range(count): action = ['counter', 'count', str(i), {'counter': 'active'}] actions.append(action) ret, cost = eosapi.push_actions(actions) assert ret print(ret['elapsed']) print(cost) print( 'total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f' % (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count))) counter_end = 0 itr = db.find_i64(code, code, code, counter_id) if itr >= 0: counter_end = db.get_i64(itr) counter_end = int.from_bytes(counter_end, 'little') print('counter end: ', counter_end) assert counter_begin + count == counter_end
def deploy_wast(): src_dir = os.path.dirname(os.path.abspath(__file__)) code = eosapi.N('backyard') for file_name in ('math.wast', ): print('deploy ', file_name) bin_code = None with open(os.path.join(src_dir, file_name), 'rb') as f: bin_code = eosapi.wast2wasm(f.read()) src_id = eosapi.hash64(file_name, 0) itr = db.find_i64(code, code, code, src_id) if itr >= 0: old_src = db.get_i64(itr) if old_src[1:] == bin_code: continue mod_name = file_name msg = int.to_bytes(len(mod_name), 1, 'little') msg += mod_name.encode('utf8') msg += int.to_bytes(3, 1, 'little') # compiled cpp bytecode msg += bin_code print(msg) print('++++++++++++++++deply:', file_name) r = eosapi.push_action('backyard', 'deploy', msg, {'backyard': 'active'}) assert r
def deploy_mpy(): debug.mp_set_max_execution_time(100 * 1000) src_dir = os.path.dirname(os.path.abspath(__file__)) code = eosapi.N('backyard') for file_name in libs: print('deploy ', file_name) src_code = eosapi.mp_compile(os.path.join(src_dir, file_name)) file_name = file_name.replace('.py', '.mpy') src_id = eosapi.hash64(file_name, 0) itr = db.find_i64(code, code, code, src_id) if itr >= 0: #Something went wrong in mp_compile. #Generating different bytecode each time with the same source code, walkaround this problem for now continue old_src = db.get_i64(itr) if old_src[1:] == src_code: continue mod_name = file_name msg = int.to_bytes(len(mod_name), 1, 'little') msg += mod_name.encode('utf8') msg += int.to_bytes(1, 1, 'little') # compiled python bytecode msg += src_code print('++++++++++++++++deply:', file_name) r = eosapi.push_action('backyard', 'deploy', msg, {'backyard': 'active'}) assert r
def test(name=None): code = N('counter') counter_id = N('counter') counter_begin = 0 itr = db.find_i64(code, code, code, counter_id) if itr >= 0: counter_begin = db.get_i64(itr) counter_begin = int.from_bytes(counter_begin, 'little') print('counter begin: ', counter_begin) r, cost = eosapi.push_action('counter', 'count', '', {'counter': 'active'}) counter_end = 0 itr = db.find_i64(code, code, code, counter_id) if itr >= 0: counter_end = db.get_i64(itr) counter_end = int.from_bytes(counter_end, 'little') print('counter end: ', counter_end) assert counter_begin + 1 == counter_end
def test_setcode1(): hello_code = b'hello,world' args = { 'account': 'hello', 'code_name': 'hello', 'code_type': 1, 'code': hello_code.hex() } r, cost = eosapi.push_action('eosio.code', 'setcode', args, {'hello': 'active'}) print('cost time:', cost) code = N('eosio.code') scope = code table = N('hello') id = N('hello') itr = db.find_i64(code, scope, table, id) print(itr) assert itr >= 0 co = db.get_i64(itr) print(co) assert co == hello_code
def need_update(self, src_dir, src_file, mpy=False): if mpy: id = eosapi.hash64(src_file.replace('.py', '.mpy')) else: id = eosapi.hash64(src_file) code = eosapi.N(self.account) itr = db.find_i64(code, code, code, id) if itr < 0: return True old_src = db.get_i64(itr) _full_file_path = os.path.join(src_dir, src_file) if not mpy: with open(_full_file_path, 'rb') as f: if old_src[1:] == f.read(): return False else: src_code = eosapi.mp_compile(_full_file_path) if old_src[1:] == src_code: return False return True
def deploy(): src_dir = os.path.dirname(os.path.abspath(__file__)) code = eosapi.N('backyard') for file_name in libs: src_code = open(os.path.join(src_dir, file_name), 'rb').read() src_id = eosapi.hash64(file_name, 0) itr = db.find_i64(code, code, code, src_id) if itr >= 0: old_src = db.get_i64(itr) if old_src[1:] == src_code: continue mod_name = file_name msg = int.to_bytes(len(mod_name), 1, 'little') msg += mod_name.encode('utf8') msg += int.to_bytes(0, 1, 'little') # source code msg += src_code print('++++++++++++++++deply:', file_name) r = eosapi.push_action('backyard', 'deploy', msg, {'backyard': 'active'}) assert r producer.produce_block()