def test_unexpected(self): """ Test with an unexpected line, confirm we get an exception """ with self.assertRaises(SampleException): with open(os.path.join(RESOURCE_PATH, 'unexpected.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) n_test = 4 # there are 4 lines in the file, but should get stuck on the 3rd particles = parser.get_records(n_test)
def test_tspfb_telem(self): """ Test a simple case that we can parse a single $TSPFB message """ with open(os.path.join(RESOURCE_PATH, 'tspfb.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) particles = parser.get_records(1) self.assert_particles(particles, "tspfb_telem.yml", RESOURCE_PATH) self.assertEqual(self.exception_callback_value, [])
def test_tspna_with_nans_telem(self): """ Test a simple case that we can parse a single $TSPNA message """ # this file also is missing a newline at the end of the file which tests the case of a missing line terminator with open(os.path.join(RESOURCE_PATH, 'tspna_with_nan.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) particles = parser.get_records(1) self.assert_particles(particles, "tspma_telem_nans.yml", RESOURCE_PATH) self.assertEqual(self.exception_callback_value, [])
def test_tspna_with_nans_telem(self): """ Test a simple case that we can parse a single $TSPNA message """ # this file also is missing a newline at the end of the file which tests the case of a missing line terminator with open(os.path.join(RESOURCE_PATH, 'tspna_with_nan.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) particles = parser.get_records(1) self.assertEqual(self.exception_callback_value, [])
def test_tspwa_with_dplog(self): """ Test a file with many tspwas that we ignore dplog marker lines """ with open(os.path.join(RESOURCE_PATH, '20140804.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) # request more particles than are available particles = parser.get_records(26) # make sure we only get the available number of particles self.assertEqual(len(particles), 23) self.assertEqual(self.exception_callback_value, [])
def test_unexpected(self): """ Test with an unexpected line, confirm we get an exception """ with open(os.path.join(RESOURCE_PATH, 'unexpected.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) # there are 4 lines in the file, 3rd, has error, TSPSA record is ignored n_test = 4 particles = parser.get_records(n_test) self.assertEqual(len(particles), 2) self.assertEqual(len(self.exception_callback_value), 1) self.assert_(isinstance(self.exception_callback_value[0], RecoverableSampleException))
def test_bad_number_samples(self): """ Test bad number of samples for all data particle types except tspwa (since that size is fixed in the regex) """ with open(os.path.join(RESOURCE_PATH, 'bad_num_samples.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) n_test = 4 # number of particles to test particles = parser.get_records(n_test) # make sure none of the particles succeeded self.assertEqual(len(particles), 0) # check that there were 3 recoverable sample exceptions self.assertEqual(len(self.exception_callback_value), n_test) for i in range(0, n_test): self.assert_(isinstance(self.exception_callback_value[i], RecoverableSampleException))
def test_simple(self): """ Test a simple telemetered and recovered case with all the particle types """ with open(os.path.join(RESOURCE_PATH, '20140825.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) particles = parser.get_records(6) self.assert_particles(particles, "20140825_telem.yml", RESOURCE_PATH) with open(os.path.join(RESOURCE_PATH, '20140825.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=False) particles = parser.get_records(6) self.assert_particles(particles, "20140825_recov.yml", RESOURCE_PATH) self.assertEqual(self.exception_callback_value, [])
def test_bug_11462(self): """ Test sample files from Redmine ticket #11462 NaN values were found in other record types causing parser to fail. Verify parser parses files without error """ with open(os.path.join(RESOURCE_PATH, '20150730.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) tspwa_records = 24 tspna_records = 24 tspfb_records = 24 tsp_records = tspfb_records + tspna_records + tspwa_records particles = parser.get_records(tsp_records + 10) self.assertEqual(len(particles), tsp_records) self.assertEqual(self.exception_callback_value, [])
def test_bug_10046(self): """ Test sample files from Redmine ticket #10046 NaN values were found in other record types causing parser to fail. Verify parser parses files without error """ with open(os.path.join(RESOURCE_PATH, '20150314.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=True) particles = parser.get_records(200) self.assertEqual(len(particles), 120) self.assertEqual(self.exception_callback_value, []) with open(os.path.join(RESOURCE_PATH, '20150315.wavss.log'), 'r') as file_handle: parser = WavssADclParser(file_handle, self.exception_callback, is_telemetered=False) particles = parser.get_records(200) self.assertEqual(len(particles), 120) self.assertEqual(self.exception_callback_value, [])
def process(self): """ Process a file by opening the file and instantiating a parser and driver @return: processed particle data handler object """ log = get_logger() with open(self._sourceFilePath, "r") as file_handle: def exception_callback(exception): log.warn("Exception: %s", exception) self._particleDataHdlrObj.setParticleDataCaptureFailure() # instantiate the parser parser = WavssADclParser(file_handle, exception_callback, True) # instantiate the driver driver = DataSetDriver(parser, self._particleDataHdlrObj) # start the driver processing the file driver.processFileStream() return self._particleDataHdlrObj