def test2(count): import time import json contracts = [] functions = [] args = [] per = [] for i in range(count): functions.append('sayhello') arg = str(i) args.append(arg) contracts.append('rpctest') per.append({'rpctest': 'active'}) ret = eosapi.push_messages(contracts, functions, args, per, True, rawargs=True) assert ret cost = ret['cost_time'] print( 'total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f' % (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count))) eosapi.produce_block()
def test2(count=100): contracts = [] functions = [] args = [] per = [] for i in range(count): functions.append('setgreeting') arg = str(i) args.append(arg) contracts.append('greeter') per.append({'greeter': 'active'}) ret = eosapi.push_messages(contracts, functions, args, per, True) assert ret cost = ret['cost_time'] print( 'total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f' % (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count))) eosapi.produce_block() code = eosapi.N('greeter') id = eosapi.hash64('greeting', 0) greeting = 0 itr = eoslib.db_find_i64(code, code, code, id) if itr >= 0: greeting = eoslib.db_get_i64(itr) print(greeting[1:])
def test2(count, wasm=False): import time import json contracts = [] functions = [] args = [] per = [] for i in range(count): functions.append(b'issue') arg = str(i) args.append({ "to": "currency", "quantity": "1000.0000 CUR", "memo": "" }) contracts.append(b'currency') per.append({b'currency': b'active'}) ret = eosapi.push_messages(contracts, functions, args, per, True) assert ret eosapi.produce_block() cost = ret['cost_time'] print( 'total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f' % (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count)))
def call3(count): import time import json contracts = [] functions = [] args = [] pers = [] for i in range(count): functions.append('call') arg = str(i) args.append(arg) contracts.append('kitties') pers.append({'kitties': 'active'}) ret, cost = eosapi.push_messages(contracts, functions, args, pers, True, rawargs=True) 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))) eosapi.produce_block()
def test3(count, d=0): keys = list(wallet.list_keys().keys()) for i in range(0, count): currency = 'curre'+n2s(i) # currency = 'currency' key1 = keys[i] key2 = keys[10000+i] if not eosapi.get_account(currency).permissions: r = eosapi.create_account('eosio', currency, key1, key2) assert r if d: if d==1: r = eosapi.set_contract(currency,'../../programs/pyeos/contracts/currency/currency.py','../../contracts/currency/currency.abi', 1) elif d == 2: with open('../../programs/pyeos/contracts/currency/currency.mpy', 'wb') as f: data = eosapi.mp_compile('../../programs/pyeos/contracts/currency/currency.py') f.write(data) r = eosapi.set_contract(currency,'../../programs/pyeos/contracts/currency/currency.mpy','../../contracts/currency/currency.abi', 1) elif d == 3: wast = '../../build/contracts/currency/currency.wast' key_words = b"hello,world\\00" wast = '../../build/contracts/currency/currency.wast' with open(wast, 'rb') as f: data = f.read() #data.find(key_words) replace_str = b"%s\\00"%(currency.encode('utf8'),) replace_str.zfill(len(key_words)) #replace key works with custom words to break the effect of code cache mechanism data = data.replace(key_words, replace_str) with open('currency2.wast', 'wb') as f: f.write(data) r = eosapi.set_contract(currency, 'currency2.wast', '../../build/contracts/currency/currency.abi',0) else: assert 0 eosapi.produce_block() accounts = [] functions = [] args = [] per = [] for i in range(0, count): currency = 'curre'+n2s(i) accounts.append(currency) per.append({currency:'active'}) functions.append('issue') arg = str(i) args.append({"to":currency,"quantity":"1000.0000 CUR","memo":""}) ret = eosapi.push_messages(accounts, functions, args, per, True, rawargs=False) assert ret if ret: cost = ret['cost_time'] eosapi.produce_block() print('total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f'%(cost/1e6, cost/count/1000, 1*1e6/(cost/count)))
def test2(count): import time import json if not eosapi.get_account('counter').permissions: init() code = N('counter') counter_id = N('counter') counter_begin = 0 itr = eoslib.db_find_i64(code, code, code, counter_id) if itr >= 0: counter_begin = eoslib.db_get_i64(itr) counter_begin = int.from_bytes(counter_begin, 'little') print('counter begin: ', counter_begin) contracts = [] functions = [] args = [] per = [] for i in range(count): functions.append('count') arg = str(i) args.append(arg) contracts.append('counter') per.append({'counter': 'active'}) ret = eosapi.push_messages(contracts, functions, args, per, True) assert ret cost = ret['cost_time'] print( 'total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f' % (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count))) eosapi.produce_block() counter_end = 0 itr = eoslib.db_find_i64(code, code, code, counter_id) if itr >= 0: counter_end = eoslib.db_get_i64(itr) counter_end = int.from_bytes(counter_end, 'little') print('counter end: ', counter_end) assert counter_begin + count == counter_end
def wasm_test(count): import time contracts = [] functions = [] args = [] per = [] start = time.time() for i in range(count): functions.append('issue') arg = {"to": "currency", "quantity": "1000.0000 CUR", "memo": str(i)} args.append(str(arg).replace("'", '"')) contracts.append('currency') per.append({'currency': 'active'}) ret = eosapi.push_messages(contracts, functions, args, per, True, False) assert ret cost = ret['cost_time'] print(cost, cost / count, 1 / (cost / count)) eosapi.produce_block()
def py_timeit(count): import time contracts = [] functions = [] args = [] per = [] start = time.time() for i in range(count): args.append(str(i + 100)) contracts.append('hello') per.append({'hello': 'active'}) ret = eosapi.push_messages(contracts, functions, args, per, True, rawargs=True) assert ret cost = ret['cost_time'] print(cost, cost / count, 1 / (cost / count)) eosapi.produce_block()
def test3(count, d=0): keys = list(wallet.list_keys().keys()) for i in range(0, count): currency = 'curre' + n2s(i) # currency = 'currency' key1 = keys[i] key2 = keys[10000 + i] if not eosapi.get_account(currency).permissions: r = eosapi.create_account('eosio', currency, key1, key2) assert r deploy_contract(currency, d) eosapi.produce_block() time.sleep(0.5) accounts = [] functions = [] args = [] per = [] for i in range(0, count): currency = 'curre' + n2s(i) accounts.append(currency) per.append({currency: 'active'}) functions.append('issue') arg = str(i) args.append({"to": currency, "quantity": "1000.0000 CUD", "memo": ""}) ret = eosapi.push_messages(accounts, functions, args, per, True) assert ret eosapi.produce_block() cost = ret['cost_time'] print( 'total cost time:%.3f s, cost per action: %.3f ms, actions per second: %.3f' % (cost / 1e6, cost / count / 1000, 1 * 1e6 / (cost / count)))