diff --git a/Orm/Xtensive.Orm.Tests.Framework/StorageTestHelper.cs b/Orm/Xtensive.Orm.Tests.Framework/StorageTestHelper.cs
index 3b9a86d47..f6ecfcf22 100644
--- a/Orm/Xtensive.Orm.Tests.Framework/StorageTestHelper.cs
+++ b/Orm/Xtensive.Orm.Tests.Framework/StorageTestHelper.cs
@@ -6,7 +6,9 @@
using System;
using System.Collections.Generic;
+using System.Data.Common;
using System.Linq;
+using System.Threading;
using Xtensive.Orm.Providers;
using Xtensive.Sql;
using Xtensive.Sql.Model;
@@ -17,15 +19,13 @@ public static class StorageTestHelper
{
public static bool IsFetched(Session session, Key key)
{
- EntityState dummy;
- return session.EntityStateCache.TryGetItem(key, false, out dummy);
+ return session.EntityStateCache.TryGetItem(key, false, out var _);
}
- public static object GetNativeTransaction()
+ public static object GetNativeTransaction(Session session)
{
- var handler = Session.Demand().Handler;
- var sqlHandler = handler as SqlSessionHandler;
- if (sqlHandler!=null)
+ var handler = session.Handler;
+ if (handler is SqlSessionHandler sqlHandler)
return sqlHandler.Connection.ActiveTransaction;
throw new NotSupportedException();
}
@@ -66,6 +66,39 @@ public static void DemandSchemas(ConnectionInfo connectionInfo, params string[]
}
}
+ ///
+ /// Waits for full-text indexes of MS SQL to be populated.
+ /// Every now and then it gets state of them from database or waits timeout to be reached.
+ ///
+ ///
+ public static void WaitFullTextIndexesPopulated(Domain domain, TimeSpan timeout)
+ {
+ if (StorageProviderInfo.Instance.Provider == StorageProvider.SqlServer) {
+ var driver = TestSqlDriver.Create(domain.Configuration.ConnectionInfo);
+ using (var connection = driver.CreateConnection()) {
+
+ var date = DateTime.UtcNow.Add(timeout);
+ while (!CheckFtIndexesPopulated(connection) && DateTime.UtcNow < date) {
+ Thread.Sleep(TimeSpan.FromSeconds(2));
+ }
+ }
+ }
+
+ static bool CheckFtIndexesPopulated(SqlConnection connection)
+ {
+ connection.Open();
+ try {
+ using (var command = connection.CreateCommand()) {
+ command.CommandText = $"SELECT COUNT(*) FROM sys.fulltext_indexes WHERE has_crawl_completed = 0";
+ return ((int) command.ExecuteScalar()) == 0;
+ }
+ }
+ finally {
+ connection.Close();
+ }
+ }
+ }
+
private static void CreateUsers(SqlConnection connection, IEnumerable schemasToCreate)
{
var translator = connection.Driver.Translator;
@@ -86,14 +119,14 @@ private static void CreateSchemas(SqlConnection connection, Catalog catalog, IEn
private static void ExecuteQuery(SqlConnection connection, ISqlCompileUnit query)
{
- using (var command = connection.CreateCommand(query))
- command.ExecuteNonQuery();
+ using var command = connection.CreateCommand(query);
+ _ = command.ExecuteNonQuery();
}
private static void ExecuteQuery(SqlConnection connection, string query)
{
- using (var command = connection.CreateCommand(query))
- command.ExecuteNonQuery();
+ using var command = connection.CreateCommand(query);
+ _ = command.ExecuteNonQuery();
}
}
}
\ No newline at end of file
diff --git a/Orm/Xtensive.Orm.Tests/Linq/ContainsTableTest.cs b/Orm/Xtensive.Orm.Tests/Linq/ContainsTableTest.cs
index 45ab5f639..79ff8a9fc 100644
--- a/Orm/Xtensive.Orm.Tests/Linq/ContainsTableTest.cs
+++ b/Orm/Xtensive.Orm.Tests/Linq/ContainsTableTest.cs
@@ -5,13 +5,10 @@
// Created: 2016.12.09
using System;
-using System.Data.Common;
using System.Linq;
-using System.Threading;
using NUnit.Framework;
using Xtensive.Core;
using Xtensive.Orm.Providers;
-using Xtensive.Orm.Services;
using Xtensive.Orm.Tests.ObjectModel;
using Xtensive.Orm.Tests.ObjectModel.ChinookDO;
@@ -27,52 +24,29 @@ protected override void CheckRequirements()
protected override Domain BuildDomain(Xtensive.Orm.Configuration.DomainConfiguration configuration)
{
var domain = base.BuildDomain(configuration);
- if (StorageProviderInfo.Instance.Provider == StorageProvider.SqlServer) {
- using (var session = domain.OpenSession())
- using (var tx = session.OpenTransaction()) {
- var sqlAccessor = session.Services.Get();
- var timeout = DateTime.UtcNow.AddSeconds(20);
- while (!CheckFtIndexesPopulated(sqlAccessor.CreateCommand()) && DateTime.UtcNow < timeout) {
- Console.WriteLine("There are unpopulated FT indexes. Waiting");
- Thread.Sleep(TimeSpan.FromSeconds(2));
- }
- return domain;
- }
- }
- else {
- Thread.Sleep(TimeSpan.FromSeconds(6));
- }
+ StorageTestHelper.WaitFullTextIndexesPopulated(domain, TimeSpan.FromSeconds(20));
return domain;
-
-
- static bool CheckFtIndexesPopulated(DbCommand sqlCommand)
- {
- using (sqlCommand) {
- sqlCommand.CommandText = $"SELECT COUNT(*) FROM [{WellKnownDatabases.MultiDatabase.MainDb}].sys.fulltext_indexes WHERE has_crawl_completed=0";
- return ((int) sqlCommand.ExecuteScalar()) == 0;
- }
- }
}
[Test]
public void SearchByTypeWithoutFulltextIndexTest()
{
- Assert.Throws(() => Session.Query.ContainsTable(e => e.SimpleTerm("some text")).Run());
- Assert.Throws(() => Query.ContainsTable (e => e.SimpleTerm("some text")).Run());
+ _ = Assert.Throws(() => Session.Query.ContainsTable(e => e.SimpleTerm("some text")).Run());
+ _ = Assert.Throws(() => Query.ContainsTable (e => e.SimpleTerm("some text")).Run());
}
[Test]
public void NullSearchConditionBuilderTest()
{
- Assert.Throws(() => Session.Query.ContainsTable(null).Run());
- Assert.Throws(() => Query.ContainsTable(null).Run());
+ _ = Assert.Throws(() => Session.Query.ContainsTable(null).Run());
+ _ = Assert.Throws(() => Query.ContainsTable(null).Run());
}
[Test]
public void NegativeRank()
{
- Assert.Throws(() => Session.Query.ContainsTable(e => e.SimpleTerm("some text"), -1).Run());
- Assert.Throws(() => Query.ContainsTable(e => e.SimpleTerm("some text"), -1).Run());
+ _ = Assert.Throws(() => Session.Query.ContainsTable(e => e.SimpleTerm("some text"), -1).Run());
+ _ = Assert.Throws(() => Query.ContainsTable(e => e.SimpleTerm("some text"), -1).Run());
}
[Test]
diff --git a/Orm/Xtensive.Orm.Tests/Linq/FreeTextTest.cs b/Orm/Xtensive.Orm.Tests/Linq/FreeTextTest.cs
index bdb81ddd2..bf4509658 100644
--- a/Orm/Xtensive.Orm.Tests/Linq/FreeTextTest.cs
+++ b/Orm/Xtensive.Orm.Tests/Linq/FreeTextTest.cs
@@ -5,13 +5,10 @@
// Created: 2009.12.14
using System;
-using System.Data.Common;
using System.Collections.Generic;
using System.Linq;
-using System.Threading;
using NUnit.Framework;
using Xtensive.Orm.Providers;
-using Xtensive.Orm.Services;
using Xtensive.Orm.Tests.ObjectModel;
using Xtensive.Orm.Tests.ObjectModel.ChinookDO;
@@ -27,36 +24,14 @@ protected override void CheckRequirements()
protected override Domain BuildDomain(Xtensive.Orm.Configuration.DomainConfiguration configuration)
{
var domain = base.BuildDomain(configuration);
- if (StorageProviderInfo.Instance.Provider == StorageProvider.SqlServer) {
- using (var session = domain.OpenSession())
- using (var tx = session.OpenTransaction()) {
- var sqlAccessor = session.Services.Get();
- var timeout = DateTime.UtcNow.AddSeconds(20);
- while (!CheckFtIndexesPopulated(sqlAccessor.CreateCommand()) && DateTime.UtcNow < timeout) {
- Thread.Sleep(TimeSpan.FromSeconds(2));
- }
- return domain;
- }
- }
- else {
- Thread.Sleep(TimeSpan.FromSeconds(6));
- }
+ StorageTestHelper.WaitFullTextIndexesPopulated(domain, TimeSpan.FromSeconds(20));
return domain;
-
-
- static bool CheckFtIndexesPopulated(DbCommand sqlCommand)
- {
- using (sqlCommand) {
- sqlCommand.CommandText = $"SELECT COUNT(*) FROM [{WellKnownDatabases.MultiDatabase.MainDb}].sys.fulltext_indexes WHERE has_crawl_completed=0";
- return ((int) sqlCommand.ExecuteScalar()) == 0;
- }
- }
}
[Test]
public void ReuseFreeText1Test()
{
- Assert.Throws(
+ _ = Assert.Throws(
() => {
var result1 = TakeMatchesIncorrect("black babbath back").Count();
Assert.AreEqual(3, result1);
@@ -148,13 +123,13 @@ public void TopNByrankEmptyResultTest()
[Test]
public void NegativeTopNTest()
{
- Assert.Throws(() => Session.Query.FreeText("sfdgfdhghgf", -1));
+ _ = Assert.Throws(() => Session.Query.FreeText("sfdgfdhghgf", -1));
}
[Test]
public void ZeroTopNTest()
{
- Assert.Throws(() => Session.Query.FreeText("sfdgfhgfhhj", 0));
+ _ = Assert.Throws(() => Session.Query.FreeText("sfdgfhgfhhj", 0));
}
[Test]
diff --git a/Orm/Xtensive.Orm.Tests/Storage/NestedTransactionsTest.cs b/Orm/Xtensive.Orm.Tests/Storage/NestedTransactionsTest.cs
index 520ec616d..baa90b1fc 100644
--- a/Orm/Xtensive.Orm.Tests/Storage/NestedTransactionsTest.cs
+++ b/Orm/Xtensive.Orm.Tests/Storage/NestedTransactionsTest.cs
@@ -126,8 +126,9 @@ public void WrongNestedTransactionUsageTest()
outerScope.Complete();
AssertEx.ThrowsInvalidOperationException(outerScope.Dispose);
}
- Assert.IsNull(Session.Current.Transaction);
- Assert.IsNull(StorageTestHelper.GetNativeTransaction());
+ var currentSession = Session.Current;
+ Assert.IsNull(currentSession.Transaction);
+ Assert.IsNull(StorageTestHelper.GetNativeTransaction(currentSession));
}
[Test]
diff --git a/Orm/Xtensive.Orm.Tests/Storage/TransactionModesTest.cs b/Orm/Xtensive.Orm.Tests/Storage/TransactionModesTest.cs
index bf2d8bad7..5cb11e852 100644
--- a/Orm/Xtensive.Orm.Tests/Storage/TransactionModesTest.cs
+++ b/Orm/Xtensive.Orm.Tests/Storage/TransactionModesTest.cs
@@ -41,15 +41,10 @@ public void DefaultTransactionsTest()
track.Milliseconds++;
session.SaveChanges();
Assert.IsTrue(session.Handler.TransactionIsStarted);
- object dbTransaction;
- using (session.Activate()) {
- dbTransaction = StorageTestHelper.GetNativeTransaction();
- }
+ var dbTransaction = StorageTestHelper.GetNativeTransaction(session);
track.Milliseconds++;
session.SaveChanges();
- using (session.Activate()) {
- Assert.AreSame(dbTransaction, StorageTestHelper.GetNativeTransaction());
- }
+ Assert.AreSame(dbTransaction, StorageTestHelper.GetNativeTransaction(session));
track.Milliseconds++;
milliseconds = track.Milliseconds;
trackKey = track.Key;