Skip to content
Snippets Groups Projects
Commit b549dd45 authored by Greg Quinn's avatar Greg Quinn
Browse files

Fix rdrgen tests

parent eaa1e42b
No related branches found
No related tags found
No related merge requests found
......@@ -40,9 +40,10 @@ def test_can_reproduce_cris_rdr(tmpdir):
str(tmpdir))
def verify_rdr_reproduction(orig_file_name, tmp_dir):
def verify_rdr_reproduction(orig_file_name, tmp_dir, **build_rdr_opts):
orig_file = os.path.join(os.path.dirname(__file__), orig_file_name)
new_file, = m.build_rdr('snpp', generate_rdr_packets(orig_file), output_dir=tmp_dir)
new_file, = m.build_rdr('snpp', generate_rdr_packets(orig_file), output_dir=tmp_dir,
**build_rdr_opts)
new_file = os.path.join(tmp_dir, new_file)
with h5py.File(orig_file, 'r') as orig_h5, h5py.File(new_file, 'a') as new_h5:
root_attrs = ['Distributor', 'N_Dataset_Source', 'N_HDF_Creation_Date',
......@@ -51,7 +52,7 @@ def verify_rdr_reproduction(orig_file_name, tmp_dir):
aggr_attrs = ['AggregateBeginningOrbitNumber', 'AggregateEndingOrbitNumber']
gran_attrs = ['N_Beginning_Orbit_Number', 'N_Creation_Date', 'N_Creation_Time',
'N_IDPS_Mode', 'N_Software_Version', 'N_Granule_Version',
'N_Reference_ID']
'N_Reference_ID', 'N_JPSS_Document_Ref']
def copy_attrs(get_obj, attrs):
orig_obj = get_obj(orig_h5)
new_obj = get_obj(new_h5)
......@@ -73,50 +74,9 @@ def verify_rdr_reproduction(orig_file_name, tmp_dir):
assert p.returncode == 0
def test_can_reproduce_rdr_from_class():
def test_can_reproduce_rdr_from_class(tmpdir):
class_rdr_file = 'RNSCA_npp_d20170912_t0001170_e0001370_b30441_c20170913220340173580_nobu_ops.h5'
class_rdr_path = os.path.join(os.path.dirname(__file__), class_rdr_file)
# read buffer of raw packets from the RDR
with h5py.File(class_rdr_path, 'r') as class_h5_file:
class_blob = (
class_h5_file['All_Data/SPACECRAFT-DIARY-RDR_All/RawApplicationPackets_0'][:])
rdr_info = decode_rdr_blob(class_blob)
ini = rdr_info.header.ap_storage_offset
fin = ini + rdr_info.header.next_pkt_pos
pkt_buf = class_blob[ini:fin]
# generate new RDR from packets, injecting matching metadata from CLASS file
rdr_type = m.SpacecraftDiaryRdrType
gran_iet = 1883865714000000
aggr_level = 1
pkt_stream = jpss_packet_stream(BytesIO(pkt_buf.tobytes()))
blob = m.build_rdr_blob('snpp', pkt_stream, rdr_type, gran_iet)
tmp_dir = '/tmp'
writer = m.RdrWriter(
'snpp', [rdr_type], gran_iet, aggr_level, tmp_dir,
distributor='arch', origin='nob-', domain='ops',
creation_time=datetime(2017, 9, 13, 22, 3, 40, 173580),
orbit_num=30441, software_ver='I2.0.03.00')
writer.write_aggregate(rdr_type, gran_iet, aggr_level)
writer.write_granule(rdr_type, gran_iet, blob,
creation_time=datetime(2017, 9, 12, 1, 37, 43, 474383))
writer.close()
# file names should be identical
assert writer.file_name == class_rdr_file
# use h5diff to verify files match. -p option is needed to allow some slop
# in comparing N_Percent_Missing_Data
p = subprocess.Popen(
['h5diff', '-c', '-p', '1e-6',
class_rdr_path, os.path.join(tmp_dir, writer.file_name)],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
stdout, _ = p.communicate()
assert stdout.decode() == ''
assert p.returncode == 0
verify_rdr_reproduction(class_rdr_file, str(tmpdir), aggr_level=1)
class TestGranulation(object):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment