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

Add rdrgen test

parent 6872712e
No related branches found
No related tags found
No related merge requests found
*.h5 filter=lfs diff=lfs merge=lfs -text
File added
from datetime import datetime
import os
import subprocess
from StringIO import StringIO
import h5py
import edosl0util.rdrgen as m
from edosl0util.jpssrdr import decode_rdr_blob
from edosl0util.stream import jpss_packet_stream
snpp_base_time = 1698019234000000 # from CDFCB vol I "Time of First Ascending Node" table
cris_gran_len = 31997000
def test_calc_iet_granule():
run = lambda t: m.calc_iet_granule(snpp_base_time, cris_gran_len, t)
gran = 1880240293174000
prev_gran = 1880240261177000
next_gran = 1880240325171000
assert run(gran) == gran
assert run(gran + 1) == gran
assert run(gran - 1) == prev_gran
assert run(gran + cris_gran_len) == next_gran
def test_calc_iet_aggregate():
grans_per_aggr = 15
run = lambda t: m.calc_iet_aggregate(snpp_base_time, cris_gran_len, grans_per_aggr, t)
aggr = 1880240037198000
aggr_len = grans_per_aggr * cris_gran_len
assert run(aggr - 1) == aggr - aggr_len
assert run(aggr) == aggr
assert run(aggr + aggr_len - 1) == aggr
assert run(aggr + aggr_len) == aggr + aggr_len
def test_can_reproduce_rdr_from_class():
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
blob = m.build_rdr_blob('snpp', jpss_packet_stream(StringIO(pkt_buf.tobytes())))
m.write_rdr('snpp', blob, distributor='arch', origin='nob-', domain='ops',
creation_time=datetime(2017, 9, 13, 22, 3, 40, 173580),
gran_creation_time=datetime(2017, 9, 12, 1, 37, 43, 474383),
orbit_number=30441, software_ver='I2.0.03.00')
# 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, 'rdr.h5'],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
assert p.communicate()[0] == ''
assert p.returncode == 0
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