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")
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}")
def test_counter_init(): with create_timer("Counter") as timer: assert timer.name == "Counter"
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
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