class TestReadWriteHeader(unittest.TestCase): """ Test for reading and writing header data. Start a ringbuffer instance and write some data to the header block, then read it back. """ def setUp(self): """Test setup.""" os.system("dada_db -d 2> /dev/null ; dada_db -k dada") self.writer = Writer() self.writer.connect(0xdada) self.reader = Reader() self.reader.connect(0xdada) def tearDown(self): """Test teardown.""" self.writer.disconnect() self.reader.disconnect() os.system("dada_db -d -k dada 2> /dev/null") def test_writing_header(self): """ Header reading and writing test. Read a previously written header from the ringbuffer, and test if the headers are equal. """ self.writer.setHeader(HEADER_TEST_DATA) header = self.reader.getHeader() del header['__RAW_HEADER__'] self.assertDictEqual(header, HEADER_TEST_DATA)
""" Show how to read multiple datasets, separated by EODs. Version with iterors. """ import numpy as np from psrdada import Reader reader = Reader(0xdbda) nheader = 0 done = False while not done: nheader += 1 header = reader.getHeader() del header['__RAW_HEADER__'] # prettier output print(nheader, header) if 'QUIT' in header.keys(): print('Header contains the QUIT key, so we quit') done = True else: # loop over the pages until EOD is encountered # the EOD flag is (like mark_cleared etc.) automagically kept in sync npages = 0 for page in reader: npages += 1 data = np.asarray(page) print("page:", npages, np.sum(data))