Exemplo n.º 1
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
        """
        file_path = os.path.join(RESOURCE_PATH, '11079364_PPB_PARS.txt')
        stream_handle = open(file_path, 'r')

        # 11079364_PPB_PARS_recov.yml has the metadata and the first 19
        # instrument particles in it
        expected_results = self.get_dict_from_yml(
            '11079364_PPB_PARS_recov.yml')

        parser = ParadJCsppParser(
            self.config.get(DataTypeKey.PARAD_J_CSPP_RECOVERED), None,
            stream_handle, self.state_callback, self.pub_callback,
            self.exception_callback)

        particles = parser.get_records(2)

        log.debug("Num particles: %s", len(particles))

        self.assertTrue(len(particles) == 2)

        for i in range(len(particles)):
            self.assert_result(expected_results['data'][i], particles[i])

        # position 1067 is the byte at the start of the 18th data record
        new_state = {
            StateKey.POSITION: 1067,
            StateKey.METADATA_EXTRACTED: True
        }

        parser.set_state(new_state)

        particles = parser.get_records(2)

        self.assertTrue(len(particles) == 2)

        # offset in the expected results, into the 18th result
        offset = 18
        for i in range(len(particles)):
            self.assert_result(expected_results['data'][i + offset],
                               particles[i])

        stream_handle.close()
    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
        """
        file_path = os.path.join(RESOURCE_PATH, '11079364_PPB_PARS.txt')
        stream_handle = open(file_path, 'r')

        # 11079364_PPB_PARS_recov.yml has the metadata and the first 19
        # instrument particles in it
        expected_results = self.get_dict_from_yml('11079364_PPB_PARS_recov.yml')

        parser = ParadJCsppParser(self.config.get(DataTypeKey.PARAD_J_CSPP_RECOVERED),
                                  None, stream_handle,
                                  self.state_callback, self.pub_callback,
                                  self.exception_callback)

        particles = parser.get_records(2)

        log.debug("Num particles: %s", len(particles))

        self.assertTrue(len(particles) == 2)

        for i in range(len(particles)):
            self.assert_result(expected_results['data'][i], particles[i])

        # position 1067 is the byte at the start of the 18th data record
        new_state = {StateKey.POSITION: 1067, StateKey.METADATA_EXTRACTED: True}

        parser.set_state(new_state)

        particles = parser.get_records(2)

        self.assertTrue(len(particles) == 2)

        # offset in the expected results, into the 18th result
        offset = 18
        for i in range(len(particles)):
            self.assert_result(expected_results['data'][i + offset], particles[i])

        stream_handle.close()