public async Task CheckUsagesAsync() { var today = DateTime.Today; foreach (var kvp in state.Value.Targets) { var target = kvp.Value; var from = GetFromDate(today, target.NumDays); if (!target.Triggered.HasValue || target.Triggered < from) { var usage = await usageTracker.GetMonthlyCallsAsync(target.AppId.Id.ToString(), today); var limit = kvp.Value.Limits; if (usage > limit) { kvp.Value.Triggered = today; var @event = new AppUsageExceeded { AppId = target.AppId, CallsCurrent = usage, CallsLimit = limit, RuleId = kvp.Key }; await state.WriteEventAsync(Envelope.Create <IEvent>(@event)); } } } await state.WriteAsync(); }
public async Task CheckUsagesAsync() { var today = DateTime.Today; foreach (var(key, target) in state.Value.Targets) { var from = GetFromDate(today, target.NumDays); if (target.Triggered == null || target.Triggered < from) { var costs = await usageTracker.GetMonthCallsAsync(target.AppId.Id.ToString(), today, null); var limit = target.Limits; if (costs > limit) { target.Triggered = today; var @event = new AppUsageExceeded { AppId = target.AppId, CallsCurrent = costs, CallsLimit = limit, RuleId = key }; await state.WriteEventAsync(Envelope.Create <IEvent>(@event)); } } } await state.WriteAsync(); }
public void Should_not_trigger_precheck_if_rule_id_not_matchs() { var ctx = Context(); var @event = new AppUsageExceeded(); var result = sut.Trigger(Envelope.Create <AppEvent>(@event), ctx); Assert.True(result); }
public async Task Should_create_enriched_event() { var @event = new AppUsageExceeded { CallsCurrent = 80, CallsLimit = 120 }; var result = await sut.CreateEnrichedEventAsync(Envelope.Create <AppEvent>(@event)) as EnrichedUsageExceededEvent; Assert.Equal(@event.CallsCurrent, result !.CallsCurrent); Assert.Equal(@event.CallsLimit, result !.CallsLimit); }
public void Should_trigger_precheck_if_event_type_correct_and_rule_id_matchs() { var ctx = Context(); var @event = new AppUsageExceeded { RuleId = ctx.RuleId }; var result = sut.Trigger(Envelope.Create <AppEvent>(@event), ctx); Assert.True(result); }
public async Task Should_create_enriched_event() { var ctx = Context(); var @event = new AppUsageExceeded { CallsCurrent = 80, CallsLimit = 120 }; var result = await sut.CreateEnrichedEventsAsync(Envelope.Create <AppEvent>(@event), ctx, default).ToListAsync(); var enrichedEvent = result.Single() as EnrichedUsageExceededEvent; Assert.Equal(@event.CallsCurrent, enrichedEvent !.CallsCurrent); Assert.Equal(@event.CallsLimit, enrichedEvent !.CallsLimit); }