Add full task signature to check gas tasks
This commit is contained in:
parent
ae711b0727
commit
1473187abc
@ -173,9 +173,11 @@ def check_gas(self, tx_hashes, chain_spec_dict, txs=[], address=None, gas_requir
|
|||||||
:rtype: param txs, unchanged
|
:rtype: param txs, unchanged
|
||||||
"""
|
"""
|
||||||
chain_spec = ChainSpec.from_dict(chain_spec_dict)
|
chain_spec = ChainSpec.from_dict(chain_spec_dict)
|
||||||
|
logg.debug('txs {} tx_hashes {}'.format(txs, tx_hashes))
|
||||||
|
|
||||||
addresses = []
|
addresspass = None
|
||||||
if len(txs) == 0:
|
if len(txs) == 0:
|
||||||
|
addresspass = []
|
||||||
for i in range(len(tx_hashes)):
|
for i in range(len(tx_hashes)):
|
||||||
o = get_tx(chain_spec_dict, tx_hashes[i])
|
o = get_tx(chain_spec_dict, tx_hashes[i])
|
||||||
txs.append(o['signed_tx'])
|
txs.append(o['signed_tx'])
|
||||||
@ -184,7 +186,8 @@ def check_gas(self, tx_hashes, chain_spec_dict, txs=[], address=None, gas_requir
|
|||||||
if address == None:
|
if address == None:
|
||||||
address = tx['from']
|
address = tx['from']
|
||||||
elif address != tx['from']:
|
elif address != tx['from']:
|
||||||
raise ValueError('txs passed to check gas must all have same sender')
|
raise ValueError('txs passed to check gas must all have same sender; had {} got {}'.format(address, tx['from']))
|
||||||
|
addresspass.append(address)
|
||||||
|
|
||||||
if not is_checksum_address(address):
|
if not is_checksum_address(address):
|
||||||
raise ValueError('invalid address {}'.format(address))
|
raise ValueError('invalid address {}'.format(address))
|
||||||
@ -193,7 +196,6 @@ def check_gas(self, tx_hashes, chain_spec_dict, txs=[], address=None, gas_requir
|
|||||||
|
|
||||||
conn = RPCConnection.connect(chain_spec)
|
conn = RPCConnection.connect(chain_spec)
|
||||||
|
|
||||||
# TODO: it should not be necessary to pass address explicitly, if not passed should be derived from the tx
|
|
||||||
gas_balance = 0
|
gas_balance = 0
|
||||||
try:
|
try:
|
||||||
o = balance(address)
|
o = balance(address)
|
||||||
@ -204,6 +206,9 @@ def check_gas(self, tx_hashes, chain_spec_dict, txs=[], address=None, gas_requir
|
|||||||
conn.disconnect()
|
conn.disconnect()
|
||||||
raise EthError('gas_balance call for {}: {}'.format(address, e))
|
raise EthError('gas_balance call for {}: {}'.format(address, e))
|
||||||
|
|
||||||
|
if gas_required == None:
|
||||||
|
gas_required = MAXIMUM_FEE_UNITS
|
||||||
|
|
||||||
logg.debug('address {} has gas {} needs {}'.format(address, gas_balance, gas_required))
|
logg.debug('address {} has gas {} needs {}'.format(address, gas_balance, gas_required))
|
||||||
session = SessionBase.create_session()
|
session = SessionBase.create_session()
|
||||||
gas_provider = AccountRole.get_address('GAS_GIFTER', session=session)
|
gas_provider = AccountRole.get_address('GAS_GIFTER', session=session)
|
||||||
@ -274,7 +279,8 @@ def check_gas(self, tx_hashes, chain_spec_dict, txs=[], address=None, gas_requir
|
|||||||
queue=queue,
|
queue=queue,
|
||||||
)
|
)
|
||||||
ready_tasks.append(s)
|
ready_tasks.append(s)
|
||||||
celery.group(ready_tasks)()
|
t = celery.group(ready_tasks)()
|
||||||
|
logg.debug('group {}'.format(t))
|
||||||
|
|
||||||
return txs
|
return txs
|
||||||
|
|
||||||
|
@ -22,7 +22,6 @@ def init_celery_tasks(
|
|||||||
@pytest.fixture(scope='session')
|
@pytest.fixture(scope='session')
|
||||||
def celery_includes():
|
def celery_includes():
|
||||||
return [
|
return [
|
||||||
# 'cic_eth.eth.bancor',
|
|
||||||
'cic_eth.eth.erc20',
|
'cic_eth.eth.erc20',
|
||||||
'cic_eth.eth.tx',
|
'cic_eth.eth.tx',
|
||||||
'cic_eth.ext.tx',
|
'cic_eth.ext.tx',
|
||||||
@ -47,8 +46,8 @@ def celery_config():
|
|||||||
bq = tempfile.mkdtemp()
|
bq = tempfile.mkdtemp()
|
||||||
bp = tempfile.mkdtemp()
|
bp = tempfile.mkdtemp()
|
||||||
rq = tempfile.mkdtemp()
|
rq = tempfile.mkdtemp()
|
||||||
logg.debug('celery broker queue {} processed {}'.format(bq, bp))
|
logg.debug('celery broker session queue {} processed {}'.format(bq, bp))
|
||||||
logg.debug('celery backend store {}'.format(rq))
|
logg.debug('celery backend session store {}'.format(rq))
|
||||||
yield {
|
yield {
|
||||||
'broker_url': 'filesystem://',
|
'broker_url': 'filesystem://',
|
||||||
'broker_transport_options': {
|
'broker_transport_options': {
|
||||||
@ -58,12 +57,11 @@ def celery_config():
|
|||||||
},
|
},
|
||||||
'result_backend': 'file://{}'.format(rq),
|
'result_backend': 'file://{}'.format(rq),
|
||||||
}
|
}
|
||||||
logg.debug('cleaning up celery filesystem backend files {} {} {}'.format(bq, bp, rq))
|
logg.debug('cleaning up celery session filesystem backend files {} {} {}'.format(bq, bp, rq))
|
||||||
shutil.rmtree(bq)
|
shutil.rmtree(bq)
|
||||||
shutil.rmtree(bp)
|
shutil.rmtree(bp)
|
||||||
shutil.rmtree(rq)
|
shutil.rmtree(rq)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='session')
|
@pytest.fixture(scope='session')
|
||||||
def celery_worker_parameters():
|
def celery_worker_parameters():
|
||||||
return {
|
return {
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
# standard imports
|
||||||
|
import logging
|
||||||
|
|
||||||
# external imports
|
# external imports
|
||||||
import celery
|
import celery
|
||||||
from chainlib.connection import RPCConnection
|
from chainlib.connection import RPCConnection
|
||||||
@ -24,6 +27,8 @@ from chainqueue.db.enum import StatusBits
|
|||||||
from cic_eth.eth.gas import cache_gas_data
|
from cic_eth.eth.gas import cache_gas_data
|
||||||
from cic_eth.error import OutOfGasError
|
from cic_eth.error import OutOfGasError
|
||||||
|
|
||||||
|
logg = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
def test_task_check_gas_ok(
|
def test_task_check_gas_ok(
|
||||||
default_chain_spec,
|
default_chain_spec,
|
||||||
@ -36,14 +41,14 @@ def test_task_check_gas_ok(
|
|||||||
):
|
):
|
||||||
|
|
||||||
rpc = RPCConnection.connect(default_chain_spec, 'default')
|
rpc = RPCConnection.connect(default_chain_spec, 'default')
|
||||||
nonce_oracle = OverrideNonceOracle(agent_roles['ALICE'], 42)
|
nonce_oracle = RPCNonceOracle(agent_roles['ALICE'], conn=eth_rpc)
|
||||||
gas_oracle = OverrideGasOracle(price=1000000000, limit=21000)
|
gas_oracle = OverrideGasOracle(price=1000000000, limit=21000)
|
||||||
c = Gas(default_chain_spec, signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle)
|
c = Gas(default_chain_spec, signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle)
|
||||||
(tx_hash_hex, tx_signed_raw_hex) = c.create(agent_roles['ALICE'], agent_roles['BOB'], 100 * (10 ** 6), tx_format=TxFormat.RLP_SIGNED)
|
(tx_hash_hex, tx_signed_raw_hex) = c.create(agent_roles['ALICE'], agent_roles['BOB'], 100 * (10 ** 6), tx_format=TxFormat.RLP_SIGNED)
|
||||||
|
|
||||||
queue_create(
|
queue_create(
|
||||||
default_chain_spec,
|
default_chain_spec,
|
||||||
42,
|
0,
|
||||||
agent_roles['ALICE'],
|
agent_roles['ALICE'],
|
||||||
tx_hash_hex,
|
tx_hash_hex,
|
||||||
tx_signed_raw_hex,
|
tx_signed_raw_hex,
|
||||||
@ -64,11 +69,14 @@ def test_task_check_gas_ok(
|
|||||||
tx_hash_hex,
|
tx_hash_hex,
|
||||||
],
|
],
|
||||||
default_chain_spec.asdict(),
|
default_chain_spec.asdict(),
|
||||||
|
[],
|
||||||
|
None,
|
||||||
|
8000000,
|
||||||
],
|
],
|
||||||
queue=None
|
queue=None
|
||||||
)
|
)
|
||||||
t = s.apply_async()
|
t = s.apply_async()
|
||||||
r = t.get_leaf()
|
t.get_leaf()
|
||||||
assert t.successful()
|
assert t.successful()
|
||||||
|
|
||||||
init_database.commit()
|
init_database.commit()
|
||||||
@ -117,6 +125,9 @@ def test_task_check_gas_insufficient(
|
|||||||
tx_hash_hex,
|
tx_hash_hex,
|
||||||
],
|
],
|
||||||
default_chain_spec.asdict(),
|
default_chain_spec.asdict(),
|
||||||
|
[],
|
||||||
|
None,
|
||||||
|
None,
|
||||||
],
|
],
|
||||||
queue=None
|
queue=None
|
||||||
)
|
)
|
||||||
@ -150,13 +161,13 @@ def test_task_check_gas_low(
|
|||||||
r = eth_rpc.do(o)
|
r = eth_rpc.do(o)
|
||||||
|
|
||||||
rpc = RPCConnection.connect(default_chain_spec, 'default')
|
rpc = RPCConnection.connect(default_chain_spec, 'default')
|
||||||
nonce_oracle = OverrideNonceOracle(whoever, 42)
|
nonce_oracle = RPCNonceOracle(whoever, conn=eth_rpc)
|
||||||
c = Gas(default_chain_spec, signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle)
|
c = Gas(default_chain_spec, signer=eth_signer, nonce_oracle=nonce_oracle, gas_oracle=gas_oracle)
|
||||||
(tx_hash_hex, tx_signed_raw_hex) = c.create(whoever, agent_roles['BOB'], 100 * (10 ** 6), tx_format=TxFormat.RLP_SIGNED)
|
(tx_hash_hex, tx_signed_raw_hex) = c.create(whoever, agent_roles['BOB'], 100 * (10 ** 6), tx_format=TxFormat.RLP_SIGNED)
|
||||||
|
|
||||||
queue_create(
|
queue_create(
|
||||||
default_chain_spec,
|
default_chain_spec,
|
||||||
42,
|
0,
|
||||||
whoever,
|
whoever,
|
||||||
tx_hash_hex,
|
tx_hash_hex,
|
||||||
tx_signed_raw_hex,
|
tx_signed_raw_hex,
|
||||||
@ -178,10 +189,13 @@ def test_task_check_gas_low(
|
|||||||
],
|
],
|
||||||
default_chain_spec.asdict(),
|
default_chain_spec.asdict(),
|
||||||
],
|
],
|
||||||
|
[],
|
||||||
|
None,
|
||||||
|
None,
|
||||||
queue=None
|
queue=None
|
||||||
)
|
)
|
||||||
t = s.apply_async()
|
t = s.apply_async()
|
||||||
r = t.get_leaf()
|
t.get_leaf()
|
||||||
assert t.successful()
|
assert t.successful()
|
||||||
|
|
||||||
init_database.commit()
|
init_database.commit()
|
||||||
|
Loading…
Reference in New Issue
Block a user