Skip to content

Commit 6dd3fb0

Browse files
added large fixtures to enable full extractor integration tests
1 parent 8986e3c commit 6dd3fb0

6 files changed

Lines changed: 13 additions & 26 deletions

File tree

block/block/extractor/extract.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@
1111
import sys
1212

1313
import msgpack
14-
import pandas as pd
1514
from tqdm import tqdm
1615

1716
from block.extractor.body import deserialize_footer, deserialize_header
1817
from block.extractor.format import DB_OFFSET_BYTES, HEADER_LEN, SUBCACHE_MERKLE_ROOT_FORMAT, TX_HASH_FORMAT, TX_HASH_LEN
19-
from block.extractor.process import get_block_stats
2018
from block.extractor.state import XYMStateMap
2119
from block.extractor.statements import deserialize_statements, get_statement_paths
2220
from block.extractor.util import fmt_unpack
@@ -110,14 +108,6 @@ def main(args):
110108
print('statement data extraction complete!\n')
111109
print(f'statement data written to {os.path.join(args.output,args.statement_save_path)}')
112110

113-
# TODO: remove header output now that it is redundant with the process script?
114-
header_df = pd.DataFrame.from_records([get_block_stats(x) for x in blocks])
115-
header_df['dateTime'] = pd.to_datetime(header_df['timestamp'], origin=pd.to_datetime('2021-03-16 00:06:25'), unit='ms')
116-
header_df = header_df.set_index('dateTime').sort_index(axis=0)
117-
header_df.to_csv(os.path.join(args.output, args.header_save_path))
118-
119-
print(f'header data written to {os.path.join(args.output,args.header_save_path)}')
120-
121111
state_map.to_msgpack(os.path.join(args.output, args.state_save_path))
122112

123113
print(f'state data written to {os.path.join(args.output,args.state_save_path)}')
@@ -226,7 +216,6 @@ def parse_args(argv):
226216
parser.add_argument('--block_save_path', type=str, default='block_data.msgpack', help='file to write the extracted block data to')
227217
parser.add_argument('--statement_save_path', type=str, default='stmt_data.msgpack', help='file to write extracted statement data to')
228218
parser.add_argument('--state_save_path', type=str, default='state_map.msgpack', help='file to write the extracted chain state data to')
229-
parser.add_argument('--header_save_path', type=str, default='block_header_df.csv', help='file to write the extracted data to')
230219
parser.add_argument('--block_extension', type=str, default='.dat', help='extension of block files; must be unique')
231220
parser.add_argument('--statement_extension', type=str, default='.stmt', help='extension of block files; must be unique')
232221
parser.add_argument('--db_offset_bytes', type=int, default=DB_OFFSET_BYTES, help='padding bytes at start of storage files')

block/block/extractor/test/conftest.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55

66
from block.extractor.format import DB_OFFSET_BYTES
77

8-
# TODO: maybe better to build raw fixtures by re-encoding parsed fixtures?
9-
# TODO: fixtures need to cover all tx types, payload variations
10-
118

129
@pytest.fixture
1310
def fixture_raw_header():
@@ -149,7 +146,7 @@ def fixture_tx_stats():
149146
'timestamp': 0,
150147
'recipient_address': 'NAOTO55CLDBWQ4UG47RLCFMTKDZHUX2LGFZVJ7A',
151148
'message_size': 0,
152-
'mosaics': "[{'mosaic_id': 7777031834025731064, 'amount': 99780000}]",
149+
'mosaics': '[{"mosaic_id": 7777031834025731064, "amount": 99780000}]',
153150
'message': '681d3777a258c3687286e7e2b1159350f27a5f4b317354fc0000010000000000f82302a23f91ed6ba085f20500000000'
154151
}
155152
]
@@ -163,7 +160,6 @@ def fixture_extract_args():
163160
args.block_save_path = 'block_data.msgpack'
164161
args.statement_save_path = 'stmt_data.msgpack'
165162
args.state_save_path = 'state_map.msgpack'
166-
args.header_save_path = 'block_header_df.csv'
167163
args.block_extension = '.dat'
168164
args.statement_extension = '.stmt'
169165
args.db_offset_bytes = DB_OFFSET_BYTES
6.17 MB
Binary file not shown.
25.2 KB
Binary file not shown.

block/block/extractor/test/test_body.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ def test_deserialize_header(fixture_raw_header, fixture_parsed_header):
1010
def test_deserialize_footer(fixture_raw_footer, fixture_parsed_header, fixture_parsed_footer):
1111
footer = deserialize_footer(fixture_raw_footer, fixture_parsed_header)
1212
for key, value in footer:
13-
# should recurse for transactions list?
14-
# if key == 'transactions':
15-
# for txn, fix_txn in zip(value, fixture_parsed_footer[key]):
16-
# pass
17-
assert fixture_parsed_footer[key] == value
13+
if key == 'transactions':
14+
for txn, fix_txn in zip(value, fixture_parsed_footer[key]):
15+
for txn_value, fix_txn_value in zip(txn.values(), fix_txn.values()):
16+
assert txn_value == fix_txn_value
17+
else:
18+
assert fixture_parsed_footer[key] == value
1819

1920

2021
def test_deserialize_tx_payload(fixture_parsed_payload):

block/block/extractor/test/test_process.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@ def test_get_tx_stats(fixture_block, fixture_tx_stats):
1919
def test_decode_msgpack(fixture_parsed_footer, fixture_packed_footer):
2020
decoded = decode_msgpack(fixture_packed_footer)
2121
for key, value in decoded:
22-
# should recurse for transactions list?
23-
# if key == 'transactions':
24-
# for txn, fix_txn in zip(value, fixture_parsed_footer[key]):
25-
# pass
26-
assert fixture_parsed_footer[key] == value
22+
if key == 'transactions':
23+
for txn, fix_txn in zip(value, fixture_parsed_footer[key]):
24+
for txn_value, fix_txn_value in zip(txn.values(), fix_txn.values()):
25+
assert txn_value == fix_txn_value
26+
else:
27+
assert fixture_parsed_footer[key] == value
2728

2829

2930
def test_main(fixture_process_args):

0 commit comments

Comments
 (0)