Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }