Esempio n. 1
0
    def test_simple(self):
        """
        Read test data and pull out data particles one at a time.
        Assert that the results are those we expected.
        """
        self.stream_handle = StringIO(
            Flort_kn__stc_imodemParserUnitTestCase.TEST_DATA_SHORT
        )  #turn into a data stream to look like file ingestion
        self.parser = Flort_kn_stc_imodemParser(
            self.config, self.start_state, self.stream_handle,
            self.state_callback,
            self.pub_callback)  # last one is the link to the data source
        # next get engineering records
        result = self.parser.get_records(1)
        self.assert_result(result, 50, self.particle_a_eng, False)
        result = self.parser.get_records(1)
        self.assert_result(result, 76, self.particle_b_eng, False)
        result = self.parser.get_records(1)
        self.assert_result(result, 102, self.particle_c_eng, False)
        result = self.parser.get_records(1)
        self.assert_result(result, 128, self.particle_d_eng, True)

        # no data left, dont move the position
        result = self.parser.get_records(1)
        self.assertEqual(result, [])
        self.assertEqual(self.parser._state[StateKey.POSITION], 128)
        self.assertEqual(self.state_callback_value[StateKey.POSITION], 128)
        self.assert_(isinstance(self.publish_callback_value, list))
        self.assertEqual(self.publish_callback_value[0], self.particle_d_eng)
Esempio n. 2
0
    def test_get_many(self):
        """
	Read test data and pull out multiple data particles at one time.
	Assert that the results are those we expected.
	"""
        self.stream_handle = StringIO(
            Flort_kn__stc_imodemParserUnitTestCase.TEST_DATA_SHORT)
        self.parser = Flort_kn_stc_imodemParser(self.config, self.start_state,
                                                self.stream_handle,
                                                self.state_callback,
                                                self.pub_callback)

        # start with the start time record
        result = self.parser.get_records(4)
        self.assertEqual(result, [
            self.particle_a_eng, self.particle_b_eng, self.particle_c_eng,
            self.particle_d_eng
        ])
        self.assertEqual(self.parser._state[StateKey.POSITION], 128)
        self.assertEqual(self.state_callback_value[StateKey.POSITION], 128)
        self.assertEqual(self.publish_callback_value[0], self.particle_a_eng)
        self.assertEqual(self.publish_callback_value[1], self.particle_b_eng)
        self.assertEqual(self.publish_callback_value[2], self.particle_c_eng)
        self.assertEqual(self.publish_callback_value[3], self.particle_d_eng)
        self.assertEqual(self.file_ingested_value, True)
Esempio n. 3
0
    def _build_parser(self, parser_state, infile, data_key=None):
        """
        Build and return the parser
        """

        if data_key == DataParticleType.FLORT_KN_INSTRUMENT_TELEMETERED:
            config = self._parser_config.get(
                DataParticleType.FLORT_KN_INSTRUMENT_TELEMETERED)
            config.update({
                DataSetDriverConfigKeys.PARTICLE_MODULE:
                'mi.dataset.parser.flort_kn__stc_imodem',
                DataSetDriverConfigKeys.PARTICLE_CLASS:
                'Flort_kn_stc_imodemParserDataParticleTelemetered'
            })

        elif data_key == DataParticleType.FLORT_KN_INSTRUMENT_RECOVERED:
            config = self._parser_config.get(
                DataParticleType.FLORT_KN_INSTRUMENT_RECOVERED)
            config.update({
                DataSetDriverConfigKeys.PARTICLE_MODULE:
                'mi.dataset.parser.flort_kn__stc_imodem',
                DataSetDriverConfigKeys.PARTICLE_CLASS:
                'Flort_kn_stc_imodemParserDataParticleRecovered'
            })

        else:
            return None

        log.debug("My Config: %s", config)
        parser = Flort_kn_stc_imodemParser(
            config, parser_state, infile,
            lambda state, ingested: self._save_parser_state(
                state, data_key, ingested), self._data_callback,
            self._sample_exception_callback)
        return parser
Esempio n. 4
0
 def test_bad_flags(self):
     """
     test that we don't parse any records when the flags are not what we expect
     """
     with self.assertRaises(SampleException):
         self.stream_handle = StringIO(Flort_kn__stc_imodemParserUnitTestCase.TEST_DATA_BAD_FLAGS)
         self.parser = Flort_kn_stc_imodemParser(self.config, self.start_state, self.stream_handle,
                                                 self.state_callback, self.pub_callback)
Esempio n. 5
0
def parse(basePythonCodePath, sourceFilePath, particleDataHdlrObj):
    with open(sourceFilePath,"r") as fil :
        parser = Flort_kn_stc_imodemParser(
            {DataSetDriverConfigKeys.PARTICLE_MODULE:"mi.dataset.parser.flort_kn__stc_imodem",DataSetDriverConfigKeys.PARTICLE_CLASS:"Flort_kn_stc_imodemParserDataParticleTelemetered"},
            None,
            fil,
            lambda state,file : None,
            lambda state : None)
        driver = DataSetDriver(parser, particleDataHdlrObj)
        driver.processFileStream()
    return particleDataHdlrObj
Esempio n. 6
0
    def test_bad_data(self):
        """
        Ensure that bad data causes us to miss records.
        """
        self.stream_handle = StringIO(Flort_kn__stc_imodemParserUnitTestCase.TEST_DATA_BAD_ENG)
        self.parser = Flort_kn_stc_imodemParser(self.config, self.start_state, self.stream_handle,
                                                self.state_callback, self.pub_callback)

        # next get engineering records
        result = self.parser.get_records(4)
        if len(result) == 4:
            self.fail("We got 4 records, the bad data should only make 3")
Esempio n. 7
0
 def test_mid_state_start(self):
     """
     Test starting the parser in a state in the middle of processing
     """
     new_state = {StateKey.POSITION: 76}
     self.stream_handle = StringIO(Flort_kn__stc_imodemParserUnitTestCase.TEST_DATA_SHORT)
     self.parser = Flort_kn_stc_imodemParser(self.config, new_state, self.stream_handle,
                                             self.state_callback, self.pub_callback)
     result = self.parser.get_records(1)
     self.assert_result(result, 102, self.particle_c_eng, False)
     result = self.parser.get_records(1)
     self.assert_result(result, 128, self.particle_d_eng, True)
Esempio n. 8
0
def parse(unused, source_file_path, particle_data_handler):
    with open(source_file_path, "r") as fil:
        parser = Flort_kn_stc_imodemParser(
            {
                DataSetDriverConfigKeys.PARTICLE_MODULE:
                "mi.dataset.parser.flort_kn__stc_imodem",
                DataSetDriverConfigKeys.PARTICLE_CLASS:
                "Flort_kn_stc_imodemParserDataParticleRecovered"
            }, None, fil, lambda state, f: None, lambda state: None)
        driver = DataSetDriver(parser, particle_data_handler)
        driver.processFileStream()
    return particle_data_handler
Esempio n. 9
0
    def test_long_stream(self):
        """
        Test a long stream of data
        """
        self.stream_handle = StringIO(Flort_kn__stc_imodemParserUnitTestCase.TEST_DATA)
        self.parser = Flort_kn_stc_imodemParser(self.config, self.start_state, self.stream_handle,
                                                self.state_callback, self.pub_callback)

        result = self.parser.get_records(32)
        self.assertEqual(result[0], self.particle_a_eng)
        self.assertEqual(result[-1], self.particle_last_eng)
        self.assertEqual(self.parser._state[StateKey.POSITION], 856)
        self.assertEqual(self.state_callback_value[StateKey.POSITION], 856)
        self.assertEqual(self.publish_callback_value[-1], self.particle_last_eng)
Esempio n. 10
0
    def _build_parser(self, stream_handle):

        parser_config = {
            DataSetDriverConfigKeys.PARTICLE_MODULE:
            "mi.dataset.parser.flort_kn__stc_imodem",
            DataSetDriverConfigKeys.PARTICLE_CLASS:
            "Flort_kn_stc_imodemParserDataParticle"
        }

        parser = Flort_kn_stc_imodemParser(parser_config, None, stream_handle,
                                           lambda state, f: None,
                                           lambda state: None)

        return parser
Esempio n. 11
0
    def test_set_state(self):
        """
        Test changing to a new state after initializing the parser and
        reading data, as if new data has been found and the state has
        changed
        """
        new_state = {StateKey.POSITION: 76}
        self.stream_handle = StringIO(Flort_kn__stc_imodemParserUnitTestCase.TEST_DATA_SHORT)
        self.parser = Flort_kn_stc_imodemParser(self.config, self.start_state, self.stream_handle,
                                                self.state_callback, self.pub_callback)

        # set the new state, the essentially skips engineering a and b
        self.parser.set_state(new_state)
        result = self.parser.get_records(1)
        self.assert_result(result, 102, self.particle_c_eng, False)
        result = self.parser.get_records(1)
        self.assert_result(result, 128, self.particle_d_eng, True)