Skip to content

Commit

Permalink
remove some magic mining constants in functional tests
Browse files Browse the repository at this point in the history
  • Loading branch information
instagibbs committed Jan 23, 2019
1 parent 82cf681 commit d4a2b9e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 13 deletions.
18 changes: 11 additions & 7 deletions test/functional/interface_rest.py
Expand Up @@ -22,6 +22,8 @@
hex_str_to_bytes, hex_str_to_bytes,
) )


from test_framework.messages import CBlockHeader

class ReqType(Enum): class ReqType(Enum):
JSON = 1 JSON = 1
BIN = 2 BIN = 2
Expand Down Expand Up @@ -211,28 +213,30 @@ def run_test(self):
self.test_rest_request('/block/{}'.format(bb_hash)) self.test_rest_request('/block/{}'.format(bb_hash))
self.nodes[0].reconsiderblock(bb_hash) self.nodes[0].reconsiderblock(bb_hash)


BLOCK_HEADER_SIZE = len(CBlockHeader().serialize())

# Check binary format # Check binary format
response = self.test_rest_request("/block/{}".format(bb_hash), req_type=ReqType.BIN, ret_type=RetType.OBJ) response = self.test_rest_request("/block/{}".format(bb_hash), req_type=ReqType.BIN, ret_type=RetType.OBJ)
assert_greater_than(int(response.getheader('content-length')), 80) assert_greater_than(int(response.getheader('content-length')), BLOCK_HEADER_SIZE)
response_bytes = response.read() response_bytes = response.read()


# Compare with block header # Compare with block header
response_header = self.test_rest_request("/headers/1/{}".format(bb_hash), req_type=ReqType.BIN, ret_type=RetType.OBJ) response_header = self.test_rest_request("/headers/1/{}".format(bb_hash), req_type=ReqType.BIN, ret_type=RetType.OBJ)
assert_equal(int(response_header.getheader('content-length')), 80) assert_equal(int(response_header.getheader('content-length')), BLOCK_HEADER_SIZE)
response_header_bytes = response_header.read() response_header_bytes = response_header.read()
assert_equal(response_bytes[:80], response_header_bytes) assert_equal(response_bytes[:BLOCK_HEADER_SIZE], response_header_bytes)


# Check block hex format # Check block hex format
response_hex = self.test_rest_request("/block/{}".format(bb_hash), req_type=ReqType.HEX, ret_type=RetType.OBJ) response_hex = self.test_rest_request("/block/{}".format(bb_hash), req_type=ReqType.HEX, ret_type=RetType.OBJ)
assert_greater_than(int(response_hex.getheader('content-length')), 160) assert_greater_than(int(response_hex.getheader('content-length')), BLOCK_HEADER_SIZE*2)
response_hex_bytes = response_hex.read().strip(b'\n') response_hex_bytes = response_hex.read().strip(b'\n')
assert_equal(binascii.hexlify(response_bytes), response_hex_bytes) assert_equal(binascii.hexlify(response_bytes), response_hex_bytes)


# Compare with hex block header # Compare with hex block header
response_header_hex = self.test_rest_request("/headers/1/{}".format(bb_hash), req_type=ReqType.HEX, ret_type=RetType.OBJ) response_header_hex = self.test_rest_request("/headers/1/{}".format(bb_hash), req_type=ReqType.HEX, ret_type=RetType.OBJ)
assert_greater_than(int(response_header_hex.getheader('content-length')), 160) assert_greater_than(int(response_header_hex.getheader('content-length')), BLOCK_HEADER_SIZE*2)
response_header_hex_bytes = response_header_hex.read(160) response_header_hex_bytes = response_header_hex.read(BLOCK_HEADER_SIZE*2)
assert_equal(binascii.hexlify(response_bytes[:80]), response_header_hex_bytes) assert_equal(binascii.hexlify(response_bytes[:BLOCK_HEADER_SIZE]), response_header_hex_bytes)


# Check json format # Check json format
block_json_obj = self.test_rest_request("/block/{}".format(bb_hash)) block_json_obj = self.test_rest_request("/block/{}".format(bb_hash))
Expand Down
12 changes: 6 additions & 6 deletions test/functional/mining_basic.py
Expand Up @@ -131,10 +131,10 @@ def assert_submitblock(block, result_str_1, result_str_2=None):


self.log.info("getblocktemplate: Test bad tx count") self.log.info("getblocktemplate: Test bad tx count")
# The tx count is immediately after the block header # The tx count is immediately after the block header
TX_COUNT_OFFSET = 80 BLOCK_HEADER_SIZE = len(CBlockHeader().serialize())
bad_block_sn = bytearray(block.serialize()) bad_block_sn = bytearray(block.serialize())
assert_equal(bad_block_sn[TX_COUNT_OFFSET], 1) assert_equal(bad_block_sn[BLOCK_HEADER_SIZE], 1)
bad_block_sn[TX_COUNT_OFFSET] += 1 bad_block_sn[BLOCK_HEADER_SIZE] += 1
assert_raises_rpc_error(-22, "Block decode failed", node.getblocktemplate, {'data': b2x(bad_block_sn), 'mode': 'proposal', 'rules': ['segwit']}) assert_raises_rpc_error(-22, "Block decode failed", node.getblocktemplate, {'data': b2x(bad_block_sn), 'mode': 'proposal', 'rules': ['segwit']})


self.log.info("getblocktemplate: Test bad bits") self.log.info("getblocktemplate: Test bad bits")
Expand Down Expand Up @@ -164,9 +164,9 @@ def assert_submitblock(block, result_str_1, result_str_2=None):
assert_submitblock(bad_block, 'prev-blk-not-found', 'prev-blk-not-found') assert_submitblock(bad_block, 'prev-blk-not-found', 'prev-blk-not-found')


self.log.info('submitheader tests') self.log.info('submitheader tests')
assert_raises_rpc_error(-22, 'Block header decode failed', lambda: node.submitheader(hexdata='xx' * 80)) assert_raises_rpc_error(-22, 'Block header decode failed', lambda: node.submitheader(hexdata='xx' * BLOCK_HEADER_SIZE))
assert_raises_rpc_error(-22, 'Block header decode failed', lambda: node.submitheader(hexdata='ff' * 78)) assert_raises_rpc_error(-22, 'Block header decode failed', lambda: node.submitheader(hexdata='ff' * (BLOCK_HEADER_SIZE-2)))
assert_raises_rpc_error(-25, 'Must submit previous header', lambda: node.submitheader(hexdata='ff' * 80)) assert_raises_rpc_error(-25, 'Must submit previous header', lambda: node.submitheader(hexdata='ff' * BLOCK_HEADER_SIZE))


block.nTime += 1 block.nTime += 1
block.solve() block.solve()
Expand Down

0 comments on commit d4a2b9e

Please sign in to comment.