Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public override async Task ProcessBatchAsync(ICollection<EventContext> contexts)
}

if (regressedContext is null)
return;
continue;

_logger.LogDebug("Marking stack and events as regressed in version: {Version}", regressedVersion);
stack.Status = StackStatus.Regressed;
Expand Down
40 changes: 40 additions & 0 deletions tests/Exceptionless.Tests/Pipeline/EventPipelineTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -808,6 +808,46 @@ public async Task EnsureSingleRegressionAsync()
Assert.Equal(2, contexts.Count(c => !c.IsRegression));
}

[Fact]
public async Task ProcessBatchAsync_ContinuesAfterStackWithoutRegression()
{
// Arrange
var fixedAtUtc = DateTime.UtcNow;
var organization = _organizationData.GenerateSampleOrganization(_billingManager, _plans);
var project = _projectData.GenerateSampleProject();
var firstContext = await _pipeline.RunAsync(
_eventData.GenerateEvent(projectId: project.Id, organizationId: organization.Id, source: "first-stack", occurrenceDate: fixedAtUtc.AddMinutes(-2)),
organization,
project);
var secondContext = await _pipeline.RunAsync(
_eventData.GenerateEvent(projectId: project.Id, organizationId: organization.Id, source: "second-stack", occurrenceDate: fixedAtUtc.AddMinutes(-2)),
organization,
project);

Assert.NotNull(firstContext.Stack);
Assert.NotNull(secondContext.Stack);
firstContext.Stack.MarkFixed(null, TimeProvider);
secondContext.Stack.MarkFixed(null, TimeProvider);
await _stackRepository.SaveAsync(firstContext.Stack, o => o.ImmediateConsistency().Cache());
await _stackRepository.SaveAsync(secondContext.Stack, o => o.ImmediateConsistency().Cache());
await RefreshDataAsync();

var contexts = new List<EventContext>
{
new(_eventData.GenerateEvent(stackId: firstContext.Stack.Id, projectId: project.Id, organizationId: organization.Id, occurrenceDate: fixedAtUtc.AddMinutes(-1)), organization, project),
new(_eventData.GenerateEvent(stackId: secondContext.Stack.Id, projectId: project.Id, organizationId: organization.Id, occurrenceDate: fixedAtUtc.AddMinutes(1)), organization, project)
};

// Act
await _pipeline.RunAsync(contexts);

// Assert
Assert.False(contexts[0].IsRegression);
Assert.Equal(StackStatus.Fixed, contexts[0].Stack?.Status);
Assert.True(contexts[1].IsRegression);
Assert.Equal(StackStatus.Regressed, contexts[1].Stack?.Status);
}

[Fact]
public async Task EnsureVersionedRegressionAsync()
{
Expand Down
Loading