Exemple #1
0
def test_counter_finish_event():
    with create_timer("Counter") as timer:
        with mock.patch(
                "base_python.cdk.utils.event_timing.EventTimer.finish_event"
        ) as mock_finish_event:
            timer.finish_event("test_event")
            mock_finish_event.assert_called_with("test_event")
Exemple #2
0
def test_report_is_ordered_by_name_by_default():
    names = ["j", "b", "g", "d", "e", "f", "c", "h", "i", "a"]

    with create_timer("Source Counter") as timer:
        for name in names:
            timer.start_event(name)
            timer.finish_event()
        report = timer.report().split("\n")[1:]  # ignore the first line
        report_names = [line.split(" ")[0] for line in report]
        assert report_names == sorted(names)
    def read(
            self,
            logger: AirbyteLogger,
            config: Mapping[str, Any],
            catalog: ConfiguredAirbyteCatalog,
            state: MutableMapping[str,
                                  Any] = None) -> Iterator[AirbyteMessage]:
        """Implements the Read operation from the Airbyte Specification. See https://docs.airbyte.io/architecture/airbyte-specification."""
        connector_state = copy.deepcopy(state or {})
        logger.info(f"Starting syncing {self.name}")
        # TODO assert all streams exist in the connector
        # get the streams once in case the connector needs to make any queries to generate them
        stream_instances = {s.name: s for s in self.streams(config)}
        with create_timer(self.name) as timer:
            for configured_stream in catalog.streams:
                try:
                    stream_instance = stream_instances[
                        configured_stream.stream.name]
                    timer.start_event(configured_stream.stream.name)
                    yield from self._read_stream(
                        logger=logger,
                        stream_instance=stream_instance,
                        configured_stream=configured_stream,
                        connector_state=connector_state,
                    )
                    timer.end_event()
                except Exception as e:
                    logger.exception(
                        f"Encountered an exception while reading stream {self.name}"
                    )
                    raise e
                finally:
                    logger.info(f"Finished syncing {self.name}")
                    logger.info(timer.report())

        logger.info(f"Finished syncing {self.name}")
Exemple #4
0
def test_counter_init():
    with create_timer("Counter") as timer:
        assert timer.name == "Counter"
Exemple #5
0
def test_double_finish_is_safely_ignored():
    with create_timer("Source Counter") as timer:
        timer.start_event("test_event")
        timer.finish_event()
        timer.finish_event()
        assert timer.count == 1
Exemple #6
0
def test_timer_multiple_events():
    with create_timer("Counter") as timer:
        for i in range(10):
            timer.start_event("test_event")
            timer.finish_event()
        assert timer.count == 10