diff --git a/src/Versions.props b/src/Versions.props index 61dea1f9..18c9db7f 100644 --- a/src/Versions.props +++ b/src/Versions.props @@ -6,7 +6,7 @@ 6.1.3 2.5.0 10.0.1 - 10.0.0 + 10.0.1 1.5.6 diff --git a/src/YesSql.Core/ConfigurationExtensions.cs b/src/YesSql.Core/ConfigurationExtensions.cs index b84a8f08..0320ec67 100644 --- a/src/YesSql.Core/ConfigurationExtensions.cs +++ b/src/YesSql.Core/ConfigurationExtensions.cs @@ -17,5 +17,12 @@ public static IConfiguration UseBlockIdGenerator(this IConfiguration configurati return configuration; } + + public static IConfiguration WithThreadSafetyChecks(this IConfiguration configuration, bool? enabled = null) + { + configuration.EnableThreadSafetyChecks = enabled ?? true; + + return configuration; + } } } diff --git a/test/YesSql.Tests/CoreTests.cs b/test/YesSql.Tests/CoreTests.cs index 9e20cb98..d5ba2fba 100644 --- a/test/YesSql.Tests/CoreTests.cs +++ b/test/YesSql.Tests/CoreTests.cs @@ -6628,51 +6628,6 @@ await session.SaveAsync(new Article Assert.Equal(10, result); } - [Fact] - public virtual async Task ShouldDetectThreadSafetyIssues() - { - try - { - _store.Configuration.EnableThreadSafetyChecks = true; - - await using var session = _store.CreateSession(); - - _store.Configuration.EnableThreadSafetyChecks = false; - - var person = new Person { Firstname = "Bill" }; - await session.SaveAsync(person); - await session.SaveChangesAsync(); - - Task[] tasks = null; - - var throws = Assert.ThrowsAsync(async () => - { - tasks = Enumerable.Range(0, 10).Select(x => Task.Run(DoWork)).ToArray(); - await Task.WhenAll(tasks); - }); - - await Task.WhenAny(throws, Task.Delay(5000)); - - Assert.True(throws.IsCompleted, "The timeout was reached before the expected exception was thrown"); - - async Task DoWork() - { - while (true) - { - var p = await session.Query().FirstOrDefaultAsync(); - Assert.NotNull(p); - - person.Firstname = "Bill" + RandomNumberGenerator.GetInt32(100); - await session.FlushAsync(); - } - } - } - finally - { - _store.Configuration.EnableThreadSafetyChecks = false; - } - } - #region FilterTests [Fact] @@ -7233,26 +7188,17 @@ public virtual async Task ShouldNotTriggerThreadSafetyOnCancel() { // https://github.com/sebastienros/yessql/issues/618 - _store.Configuration.EnableThreadSafetyChecks = true; - - try + await using (var session = _store.CreateSession()) { - await using (var session = _store.CreateSession()) - { - var index = new PropertyIndex { Name = "Home" }; + var index = new PropertyIndex { Name = "Home" }; - await session.SaveAsync(index); + await session.SaveAsync(index); - await Assert.ThrowsAsync(async () => - { - // Try saving an index directly to force an exception which should trigger cancel. - await session.FlushAsync(); - }); - } - } - finally - { - _store.Configuration.EnableThreadSafetyChecks = false; + await Assert.ThrowsAsync(async () => + { + // Try saving an index directly to force an exception which should trigger cancel. + await session.FlushAsync(); + }); } } diff --git a/test/YesSql.Tests/MySqlTests.cs b/test/YesSql.Tests/MySqlTests.cs index cead03eb..fb4294e3 100644 --- a/test/YesSql.Tests/MySqlTests.cs +++ b/test/YesSql.Tests/MySqlTests.cs @@ -33,8 +33,8 @@ protected override IConfiguration CreateConfiguration() .UseMySql(ConnectionString) .SetTablePrefix(TablePrefix) .UseBlockIdGenerator() - .SetIdentityColumnSize(IdentityColumnSize.Int64) - ; + .WithThreadSafetyChecks() + .SetIdentityColumnSize(IdentityColumnSize.Int64); } [Fact] diff --git a/test/YesSql.Tests/PostgreSqlLegacyIdentityTests.cs b/test/YesSql.Tests/PostgreSqlLegacyIdentityTests.cs index f2a8b165..165dfc26 100644 --- a/test/YesSql.Tests/PostgreSqlLegacyIdentityTests.cs +++ b/test/YesSql.Tests/PostgreSqlLegacyIdentityTests.cs @@ -21,8 +21,8 @@ protected override IConfiguration CreateConfiguration() .UsePostgreSql(ConnectionStringBuilder.ConnectionString) .SetTablePrefix(TablePrefix) .UseBlockIdGenerator() - .SetIdentityColumnSize(IdentityColumnSize.Int32) - ; + .WithThreadSafetyChecks() + .SetIdentityColumnSize(IdentityColumnSize.Int32); } [Fact(Skip = "Skip to make test faster in this configuration")] diff --git a/test/YesSql.Tests/PostgreSqlTests.cs b/test/YesSql.Tests/PostgreSqlTests.cs index 4a885817..aaac8917 100644 --- a/test/YesSql.Tests/PostgreSqlTests.cs +++ b/test/YesSql.Tests/PostgreSqlTests.cs @@ -32,8 +32,8 @@ protected override IConfiguration CreateConfiguration() .UsePostgreSql(ConnectionStringBuilder.ConnectionString, "BabyYoda") .SetTablePrefix(TablePrefix) .UseBlockIdGenerator() - .SetIdentityColumnSize(IdentityColumnSize.Int64) - ; + .WithThreadSafetyChecks() + .SetIdentityColumnSize(IdentityColumnSize.Int64); } [Fact(Skip = "Postgres locks on the table")] diff --git a/test/YesSql.Tests/SqlServer2017Tests.cs b/test/YesSql.Tests/SqlServer2017Tests.cs index dc8812e7..79a8a4b4 100644 --- a/test/YesSql.Tests/SqlServer2017Tests.cs +++ b/test/YesSql.Tests/SqlServer2017Tests.cs @@ -1,4 +1,5 @@ using Xunit; +using YesSql.Provider.SqlServer; using YesSql.Tests.Fixtures; namespace YesSql.Tests diff --git a/test/YesSql.Tests/SqlServer2019Tests.cs b/test/YesSql.Tests/SqlServer2019Tests.cs index 1507fd5f..c9ddc772 100644 --- a/test/YesSql.Tests/SqlServer2019Tests.cs +++ b/test/YesSql.Tests/SqlServer2019Tests.cs @@ -1,4 +1,5 @@ using Xunit; +using YesSql.Provider.SqlServer; using YesSql.Tests.Fixtures; namespace YesSql.Tests diff --git a/test/YesSql.Tests/SqlServerTests.cs b/test/YesSql.Tests/SqlServerTests.cs index 3d36a102..6dd878d7 100644 --- a/test/YesSql.Tests/SqlServerTests.cs +++ b/test/YesSql.Tests/SqlServerTests.cs @@ -31,7 +31,7 @@ protected override IConfiguration CreateConfiguration() .SetTablePrefix(TablePrefix) .UseBlockIdGenerator() .SetIdentityColumnSize(IdentityColumnSize.Int64) - ; + .WithThreadSafetyChecks(); } [Fact] diff --git a/test/YesSql.Tests/SqliteLegacyIdentityTests.cs b/test/YesSql.Tests/SqliteLegacyIdentityTests.cs index c4acd45f..287d8253 100644 --- a/test/YesSql.Tests/SqliteLegacyIdentityTests.cs +++ b/test/YesSql.Tests/SqliteLegacyIdentityTests.cs @@ -24,8 +24,8 @@ protected override IConfiguration CreateConfiguration() .UseSqLite(connectionString) .SetTablePrefix(TablePrefix) .UseDefaultIdGenerator() - .SetIdentityColumnSize(IdentityColumnSize.Int32) - ; + .WithThreadSafetyChecks() + .SetIdentityColumnSize(IdentityColumnSize.Int32); } [Fact(Skip = "Skip to make test faster in this configuration")] diff --git a/test/YesSql.Tests/SqliteTests.cs b/test/YesSql.Tests/SqliteTests.cs index 1f5bc89a..d267e441 100644 --- a/test/YesSql.Tests/SqliteTests.cs +++ b/test/YesSql.Tests/SqliteTests.cs @@ -31,8 +31,8 @@ protected override IConfiguration CreateConfiguration() .UseSqLite(connectionString) .SetTablePrefix(TablePrefix) .UseDefaultIdGenerator() - .SetIdentityColumnSize(IdentityColumnSize.Int64) - ; + .WithThreadSafetyChecks() + .SetIdentityColumnSize(IdentityColumnSize.Int64); } [Fact(Skip = "Alter column is not supported by Sqlite")]