Exemple #1
0
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()
Exemple #2
0
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:])
Exemple #3
0
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)))
Exemple #4
0
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()
Exemple #5
0
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)))
Exemple #6
0
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
Exemple #7
0
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()
Exemple #8
0
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()
Exemple #9
0
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)))