Skip to content

Commit

Permalink
Test faster polling.
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastianStehle committed Jan 14, 2025
1 parent 701104f commit f17761c
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 10 deletions.
2 changes: 1 addition & 1 deletion events/Squidex.Events.Tests/EventStoreTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -536,7 +536,7 @@ private static EventData CreateEventData(int i)
await subscriptionRunning();
}

using (var cts = new CancellationTokenSource(30000))
using (var cts = new CancellationTokenSource(60_000))
{
while (!cts.IsCancellationRequested)
{
Expand Down
5 changes: 4 additions & 1 deletion events/Squidex.Events.Tests/MariaDbEventStoreFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@ public async Task InitializeAsync()
{
b.UseMySql(mariaDb.GetConnectionString(), ServerVersion.AutoDetect(mariaDb.GetConnectionString()));
})
.AddEntityFrameworkEventStore<TestContext>(TestHelpers.Configuration)
.AddEntityFrameworkEventStore<TestContext>(TestHelpers.Configuration, options =>
{
options.PollingInterval = TimeSpan.FromSeconds(0.1);
})
.AddMysqlAdapter()
.Services
.BuildServiceProvider();
Expand Down
5 changes: 4 additions & 1 deletion events/Squidex.Events.Tests/MongoEventStoreReplicaFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,10 @@ public async Task InitializeAsync()
services = new ServiceCollection()
.AddSingleton<IMongoClient>(_ => new MongoClient(mongoDb.GetConnectionString()))
.AddSingleton(c => c.GetRequiredService<IMongoClient>().GetDatabase("Test"))
.AddMongoEventStore(TestHelpers.Configuration)
.AddMongoEventStore(TestHelpers.Configuration, options =>
{
options.PollingInterval = TimeSpan.FromSeconds(0.1);
})
.Services
.BuildServiceProvider();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@ public async Task InitializeAsync()
services = new ServiceCollection()
.AddSingleton<IMongoClient>(_ => new MongoClient(mongoDb.GetConnectionString()))
.AddSingleton(c => c.GetRequiredService<IMongoClient>().GetDatabase("Test"))
.AddMongoEventStore(TestHelpers.Configuration)
.AddMongoEventStore(TestHelpers.Configuration, options =>
{
options.PollingInterval = TimeSpan.FromSeconds(0.1);
})
.Services
.BuildServiceProvider();

Expand Down
5 changes: 4 additions & 1 deletion events/Squidex.Events.Tests/MysqlEventStoreFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@ public async Task InitializeAsync()
{
b.UseMySql(mysql.GetConnectionString(), ServerVersion.AutoDetect(mysql.GetConnectionString()));
})
.AddEntityFrameworkEventStore<TestContext>(TestHelpers.Configuration)
.AddEntityFrameworkEventStore<TestContext>(TestHelpers.Configuration, options =>
{
options.PollingInterval = TimeSpan.FromSeconds(0.1);
})
.AddMysqlAdapter()
.Services
.BuildServiceProvider();
Expand Down
5 changes: 4 additions & 1 deletion events/Squidex.Events.Tests/PostgresEventStoreFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,10 @@ public async Task InitializeAsync()
{
b.UseNpgsql(postgresSql.GetConnectionString());
})
.AddEntityFrameworkEventStore<TestContext>(TestHelpers.Configuration)
.AddEntityFrameworkEventStore<TestContext>(TestHelpers.Configuration, options =>
{
options.PollingInterval = TimeSpan.FromSeconds(0.1);
})
.AddPostgresAdapter()
.Services
.BuildServiceProvider();
Expand Down
5 changes: 4 additions & 1 deletion events/Squidex.Events.Tests/SqlServerEventStoreFixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,10 @@ public async Task InitializeAsync()
{
b.UseSqlServer(msSql.GetConnectionString());
})
.AddEntityFrameworkEventStore<TestContext>(TestHelpers.Configuration)
.AddEntityFrameworkEventStore<TestContext>(TestHelpers.Configuration, options =>
{
options.PollingInterval = TimeSpan.FromSeconds(0.1);
})
.AddSqlServerAdapter()
.Services
.BuildServiceProvider();
Expand Down
19 changes: 16 additions & 3 deletions events/Squidex.Events/PollingSubscription.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,23 @@ public PollingSubscription(
{
try
{
await foreach (var storedEvent in eventStore.QueryAllAsync(streamFilter, streamPosition, ct: ct))
while (true)
{
await eventSubscriber.OnNextAsync(this, storedEvent);
streamPosition = storedEvent.EventPosition;
var hasAddedEvent = false;
await foreach (var storedEvent in eventStore.QueryAllAsync(streamFilter, streamPosition, ct: ct))
{
await eventSubscriber.OnNextAsync(this, storedEvent);

streamPosition = storedEvent.EventPosition;
hasAddedEvent = true;
}

if (!hasAddedEvent)
{
break;
}

await Task.Delay(100, ct);
}
}
catch (Exception ex)
Expand Down

0 comments on commit f17761c

Please sign in to comment.