forked from cerc-io/laconicd-deprecated
		
	fix(rpc): get_proof test fail because block numbers are not high enough (#1239)
* Problem: get_proof test fail because block numbers are not high enough Solution: - wait for app block height rather than tendermint block height * Update tests/integration_tests/test_types.py * keep get_proof response the same as geth Co-authored-by: Daniel Burckhardt <daniel.m.burckhardt@gmail.com>
This commit is contained in:
		
							parent
							
								
									989192028f
								
							
						
					
					
						commit
						94cab52ca1
					
				| @ -44,9 +44,8 @@ func (b *Backend) GetProof(address common.Address, storageKeys []string, blockNr | ||||
| 	height := blockNum.Int64() | ||||
| 	_, err = b.GetTendermintBlockByNumber(blockNum) | ||||
| 	if err != nil { | ||||
| 		// Get 'latest' proof if query is in the future
 | ||||
| 		// this imitates geth behavior
 | ||||
| 		height = 0 | ||||
| 		// the error message imitates geth behavior
 | ||||
| 		return nil, errors.New("header not found") | ||||
| 	} | ||||
| 	ctx := rpctypes.ContextWithHeight(height) | ||||
| 
 | ||||
|  | ||||
| @ -11,8 +11,8 @@ from .utils import ( | ||||
|     KEYS, | ||||
|     deploy_contract, | ||||
|     send_transaction, | ||||
|     w3_wait_for_block, | ||||
|     w3_wait_for_new_blocks, | ||||
|     wait_for_block, | ||||
| ) | ||||
| 
 | ||||
| 
 | ||||
| @ -178,7 +178,9 @@ def send_and_get_hash(w3, tx_value=10): | ||||
| 
 | ||||
| 
 | ||||
| def test_get_proof(ethermint, geth): | ||||
|     wait_for_block(ethermint.cosmos_cli(), 3) | ||||
|     # on ethermint the proof query will fail for block numbers <= 2 | ||||
|     # so we must wait for several blocks | ||||
|     w3_wait_for_block(ethermint.w3, 3) | ||||
|     eth_rpc = ethermint.w3.provider | ||||
|     geth_rpc = geth.w3.provider | ||||
|     make_same_rpc_calls( | ||||
| @ -192,7 +194,7 @@ def test_get_proof(ethermint, geth): | ||||
|         eth_rpc, | ||||
|         geth_rpc, | ||||
|         "eth_getProof", | ||||
|         ["0x57f96e6b86cdefdb3d412547816a82e3e0ebf9d2", ["0x0"], "0x32"], | ||||
|         ["0x57f96e6b86cdefdb3d412547816a82e3e0ebf9d2", ["0x0"], "0x1024"], | ||||
|     ) | ||||
| 
 | ||||
|     _ = send_and_get_hash(ethermint.w3) | ||||
|  | ||||
| @ -92,6 +92,21 @@ def wait_for_block(cli, height, timeout=240): | ||||
|         raise TimeoutError(f"wait for block {height} timeout") | ||||
| 
 | ||||
| 
 | ||||
| def w3_wait_for_block(w3, height, timeout=240): | ||||
|     for i in range(timeout * 2): | ||||
|         try: | ||||
|             current_height = w3.eth.block_number | ||||
|         except Exception as e: | ||||
|             print(f"get json-rpc block number failed: {e}", file=sys.stderr) | ||||
|         else: | ||||
|             if current_height >= height: | ||||
|                 break | ||||
|             print("current block height", current_height) | ||||
|         time.sleep(0.5) | ||||
|     else: | ||||
|         raise TimeoutError(f"wait for block {height} timeout") | ||||
| 
 | ||||
| 
 | ||||
| def deploy_contract(w3, jsonfile, args=(), key=KEYS["validator"]): | ||||
|     """ | ||||
|     deploy contract and return the deployed contract instance | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user