public override void Process(EventContext ctx) { if (ctx.Stack == null || !ctx.Stack.DateFixed.HasValue || ctx.Stack.DateFixed.Value >= ctx.Event.Date.UtcDateTime) { return; } Log.Trace().Message("Marking event as an regression.").Write(); _stackRepository.MarkAsRegressed(ctx.Stack.Id); _eventRepository.MarkAsRegressedByStack(ctx.Event.OrganizationId, ctx.Stack.Id); _stackRepository.InvalidateCache(ctx.Event.ProjectId, ctx.Event.StackId, ctx.SignatureHash); ctx.Event.IsFixed = false; ctx.IsRegression = true; }
public override void Process(EventContext ctx) { if (ctx.StackInfo == null || !ctx.StackInfo.DateFixed.HasValue || ctx.StackInfo.DateFixed.Value >= ctx.Event.Date.UtcDateTime) { return; } Log.Trace().Message("Marking event as an regression.").Write(); _stackRepository.MarkAsRegressed(ctx.StackInfo.Id); _eventRepository.MarkAsRegressedByStack(ctx.StackInfo.Id); string signatureHash = ctx.GetProperty <string>("__SignatureHash"); _stackRepository.InvalidateCache(ctx.Event.StackId, signatureHash, ctx.Event.ProjectId); ctx.Event.IsFixed = false; ctx.IsRegression = true; }
public void MarkAsRegressedTest() { RemoveData(); _repository.Add(StackData.GenerateStack(id: TestConstants.StackId, projectId: TestConstants.ProjectId, organizationId: TestConstants.OrganizationId, dateFixed: DateTime.Now.SubtractMonths(1))); _client.Refresh(); var stack = _repository.GetById(TestConstants.StackId); Assert.NotNull(stack); Assert.False(stack.IsRegressed); Assert.NotNull(stack.DateFixed); _repository.MarkAsRegressed(TestConstants.StackId); _client.Refresh(); stack = _repository.GetById(TestConstants.StackId); Assert.NotNull(stack); Assert.True(stack.IsRegressed); Assert.Null(stack.DateFixed); }
public override async Task ProcessBatchAsync(ICollection <EventContext> contexts) { var stacks = contexts.Where(c => c.Stack != null && c.Stack.DateFixed.HasValue && c.Stack.DateFixed.Value < c.Event.Date.UtcDateTime).GroupBy(c => c.Event.StackId); foreach (var stackGroup in stacks) { try { var context = stackGroup.First(); Log.Trace().Message("Marking stack and events as regression.").Write(); _stackRepository.MarkAsRegressed(context.Stack.Id); _eventRepository.MarkAsRegressedByStack(context.Event.OrganizationId, context.Stack.Id); _stackRepository.InvalidateCache(context.Event.ProjectId, context.Event.StackId, context.SignatureHash); bool isFirstEvent = true; foreach (var ctx in stackGroup) { ctx.Event.IsFixed = false; // Only mark the first event context as regressed. ctx.IsRegression = isFirstEvent; isFirstEvent = false; } } catch (Exception ex) { foreach (var context in stackGroup) { bool cont = false; try { cont = HandleError(ex, context); } catch {} if (!cont) { context.SetError(ex.Message, ex); } } } } }