def test_create_update_error_items(): FlowItem.delete().where(FlowItem.name == FLOW_NAME).execute() worktime = pendulum.datetime(2020, 1, 1, tz="Europe/Moscow") interval_timedelta = dt.timedelta(1) items = FlowItem.recreate_prev_items( flow_name=FLOW_NAME, worktime=worktime, offset_periods=[-1, -2], interval_timedelta=interval_timedelta, ) assert items is None for i in range(10): FlowItem.create( **{ FlowItem.name.name: FLOW_NAME, FlowItem.worktime.name: worktime - dt.timedelta(i), FlowItem.status.name: FlowStatus.error, } ) items = FlowItem.recreate_prev_items( flow_name=FLOW_NAME, worktime=worktime, offset_periods=[-1, -2], interval_timedelta=interval_timedelta, ) assert len(items) == 2 assert FlowItem.count_items(FLOW_NAME, statuses=[FlowStatus.add]) == 2 for i in items: assert i.retries == 0
def errors(): for name in list_notebook(): count = FlowItem.count_items(name, statuses=[Statuses.error_statuses]) if count > 0: count_text = typer.style(count, fg=typer.colors.RED, bold=True) else: count_text = typer.style(count, fg=typer.colors.GREEN, bold=True) name = typer.style(name, fg=typer.colors.WHITE, bold=True) typer.echo(f" {name} {count_text}")
def test_order_flow(): FlowItem.delete().where(FlowItem.name == FLOW_NAME).execute() CONFIG.work.schedule = ETLFlowConfig.WorkPolicy.SchedulePolicy( timezone="Europe/Moscow", start_time="00:00:00", from_date=dt.date.today() - dt.timedelta(5), interval="daily", ) config = dict(CONFIG) config.pop("name") rv = [(FLOW_NAME, config)] YamlHelper.iter_parse_file_from_dir = mock.Mock(return_value=rv) flows = list(order_flow(logger=logger)) assert len(flows) == 5 assert FlowItem.count_items(FLOW_NAME, statuses=[FlowStatus.run]) == len(flows)
def test_change_status(): FlowItem.delete().where(FlowItem.name == FLOW_NAME).execute() worktime = pendulum.datetime(2020, 1, 6, tz="Europe/Moscow") interval_timedelta = dt.timedelta(1) items = FlowItem.create_missing_items( flow_name=FLOW_NAME, start_time=worktime - dt.timedelta(5), end_time=worktime, interval_timedelta=interval_timedelta, ) FlowItem.change_status( FLOW_NAME, new_status=FlowStatus.success, from_time=worktime - dt.timedelta(5), to_time=worktime, ) assert FlowItem.count_items(FLOW_NAME, statuses=[FlowStatus.success]) == len(items)