Index: Application/Ringtoets/test/Application.Ringtoets.Storage.Test/StorageSqLiteTest.cs =================================================================== diff -u -r2ae1c9433c3c28b32105b9778b682b5e512a0f00 -rc2694ebe86aef7b8ed7c9dd05a55eec101958a96 --- Application/Ringtoets/test/Application.Ringtoets.Storage.Test/StorageSqLiteTest.cs (.../StorageSqLiteTest.cs) (revision 2ae1c9433c3c28b32105b9778b682b5e512a0f00) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.Test/StorageSqLiteTest.cs (.../StorageSqLiteTest.cs) (revision c2694ebe86aef7b8ed7c9dd05a55eec101958a96) @@ -93,7 +93,7 @@ var expectedInnerExceptionMessage = "An error occurred while executing the command definition. See the inner exception for details."; var expectedInnerExceptionInnerExceptionMessage = "SQL logic error or missing database\r\nno such table: ProjectEntity"; - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { TestDelegate precondition = () => SqLiteDatabaseHelper.CreateDatabaseFile(tempRingtoetsFile, SqLiteDatabaseHelper.GetCorruptSchema()); Assert.DoesNotThrow(precondition, "Precondition failed: creating corrupt database file failed"); @@ -125,7 +125,7 @@ projectMock.Description = ""; projectMock.StorageId = 1L; - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { // Precondition SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, projectMock); @@ -166,7 +166,7 @@ // Setup var storage = new StorageSqLite(); - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { // Call TestDelegate test = () => storage.SaveProjectAs(tempRingtoetsFile, null); @@ -183,7 +183,7 @@ var project = new Project(); var storage = new StorageSqLite(); - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { // Call TestDelegate test = () => storage.SaveProjectAs(tempRingtoetsFile, project); @@ -200,9 +200,9 @@ var project = new Project(); var storage = new StorageSqLite(); - using (var fileDisposeHelper = new FileDisposeHelper(tempRingtoetsFile)) + using (var fileDisposeHelper = new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { - fileDisposeHelper.CreateFile(); + fileDisposeHelper.Create(); // Call TestDelegate test = () => storage.SaveProjectAs(tempRingtoetsFile, project); @@ -220,7 +220,7 @@ var project = new Project(); var storage = new StorageSqLite(); - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { // Call TestDelegate test = () => storage.SaveProjectAs(tempRingtoetsFile, project); @@ -265,7 +265,7 @@ var storage = new StorageSqLite(); Project storedProject = new Project(); - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { // Precondition SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, storedProject); @@ -322,7 +322,7 @@ var expectedMessage = String.Format(@"Fout bij het schrijven naar bestand '{0}'{1}: {2}", tempRingtoetsFile, "", String.Format("Het object '{0}' met id '{1}' is niet gevonden.", "project", projectWithIncorrectStorageId.StorageId)); - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { // Precondition SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, savedProject); @@ -350,9 +350,9 @@ var expectedInnerExceptionMessage = "An error occurred while executing the command definition. See the inner exception for details."; var expectedInnerExceptionInnerExceptionMessage = "SQL logic error or missing database\r\nno such table: ProjectEntity"; - using (var fileDisposeHelper = new FileDisposeHelper(tempRingtoetsFile)) + using (var fileDisposeHelper = new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { - fileDisposeHelper.CreateFile(); + fileDisposeHelper.Create(); TestDelegate precondition = () => SqLiteDatabaseHelper.CreateDatabaseFile(tempRingtoetsFile, SqLiteDatabaseHelper.GetCorruptSchema()); Assert.DoesNotThrow(precondition, "Precondition failed: creating corrupt database file failed"); @@ -386,7 +386,7 @@ }; var storage = new StorageSqLite(); - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { TestDelegate precondition = () => storage.SaveProjectAs(tempRingtoetsFile, project); Assert.DoesNotThrow(precondition, String.Format("Precondition: file '{0}' must be a valid Ringtoets database file.", tempRingtoetsFile)); @@ -424,7 +424,7 @@ StorageSqLite storageSqLite = new StorageSqLite(); Project storedProject = new Project(); - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, storedProject); Project loadedProject = storageSqLite.LoadProject(tempRingtoetsFile); @@ -445,7 +445,7 @@ Project storedProject = new Project(); var changedName = "some name"; - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, storedProject); Project loadedProject = storageSqLite.LoadProject(tempRingtoetsFile); @@ -467,7 +467,7 @@ Project storedProject = new Project(); var changedDescription = "some description"; - using (new FileDisposeHelper(tempRingtoetsFile)) + using (new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { SqLiteDatabaseHelper.CreateValidRingtoetsDatabase(tempRingtoetsFile, storedProject); Project loadedProject = storageSqLite.LoadProject(tempRingtoetsFile); @@ -491,9 +491,9 @@ mockRepository.ReplayAll(); var storage = new StorageSqLite(); - using (var fileDisposeHelper = new FileDisposeHelper(tempRingtoetsFile)) + using (var fileDisposeHelper = new FileDisposeHelperGarbageCollected(tempRingtoetsFile)) { - fileDisposeHelper.CreateFile(); + fileDisposeHelper.Create(); // Precondition, required to set the connection string TestDelegate precondition = () => storage.SaveProjectAs(tempRingtoetsFile, projectMock); @@ -508,4 +508,16 @@ mockRepository.VerifyAll(); } } + + internal class FileDisposeHelperGarbageCollected : FileDisposeHelper, IDisposable + { + public FileDisposeHelperGarbageCollected(string filePath) : base(filePath) {} + + void IDisposable.Dispose() + { + GC.Collect(); + GC.WaitForPendingFinalizers(); + base.Dispose(); + } + } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil.Test/SqLiteDatabaseHelperTest.cs =================================================================== diff -u -r2ae1c9433c3c28b32105b9778b682b5e512a0f00 -rc2694ebe86aef7b8ed7c9dd05a55eec101958a96 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil.Test/SqLiteDatabaseHelperTest.cs (.../SqLiteDatabaseHelperTest.cs) (revision 2ae1c9433c3c28b32105b9778b682b5e512a0f00) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil.Test/SqLiteDatabaseHelperTest.cs (.../SqLiteDatabaseHelperTest.cs) (revision c2694ebe86aef7b8ed7c9dd05a55eec101958a96) @@ -104,7 +104,7 @@ using (var fileDisposeHelper = new FileDisposeHelper(validPath)) { - fileDisposeHelper.CreateFile(); + fileDisposeHelper.Create(); // Call TestDelegate test = () => SqLiteDatabaseHelper.CreateDatabaseFile(validPath, validScript); @@ -154,6 +154,7 @@ // Assert Assert.DoesNotThrow(test); Assert.IsTrue(File.Exists(validPath)); + CallGarbageCollector(); } } @@ -172,5 +173,11 @@ Assert.IsTrue(query.Contains(expectedCreateVersionTable)); Assert.IsFalse(query.Contains(notExpectedCreateProjectEntityTable)); } + + private static void CallGarbageCollector() + { + GC.Collect(); + GC.WaitForPendingFinalizers(); + } } } \ No newline at end of file Index: Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/SqLiteDatabaseHelper.cs =================================================================== diff -u -r2ae1c9433c3c28b32105b9778b682b5e512a0f00 -rc2694ebe86aef7b8ed7c9dd05a55eec101958a96 --- Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/SqLiteDatabaseHelper.cs (.../SqLiteDatabaseHelper.cs) (revision 2ae1c9433c3c28b32105b9778b682b5e512a0f00) +++ Application/Ringtoets/test/Application.Ringtoets.Storage.TestUtil/SqLiteDatabaseHelper.cs (.../SqLiteDatabaseHelper.cs) (revision c2694ebe86aef7b8ed7c9dd05a55eec101958a96) @@ -52,8 +52,15 @@ using (var command = dbContext.CreateCommand()) { dbContext.Open(); - command.CommandText = databaseSchemaQuery; - command.ExecuteNonQuery(); + try + { + command.CommandText = databaseSchemaQuery; + command.ExecuteNonQuery(); + } + finally + { + SQLiteConnection.ClearAllPools(); + } } } } @@ -74,6 +81,10 @@ { Assert.Fail("Precondition failed: creating database file failed due to {0}", exception); } + finally + { + SQLiteConnection.ClearAllPools(); + } } /// Index: Core/Common/test/Core.Common.TestUtil.Test/FileDisposeHelperTest.cs =================================================================== diff -u -ra1d0c950e24eeef7e35cf3b79e7fcd9fd7af041c -rc2694ebe86aef7b8ed7c9dd05a55eec101958a96 --- Core/Common/test/Core.Common.TestUtil.Test/FileDisposeHelperTest.cs (.../FileDisposeHelperTest.cs) (revision a1d0c950e24eeef7e35cf3b79e7fcd9fd7af041c) +++ Core/Common/test/Core.Common.TestUtil.Test/FileDisposeHelperTest.cs (.../FileDisposeHelperTest.cs) (revision c2694ebe86aef7b8ed7c9dd05a55eec101958a96) @@ -65,7 +65,7 @@ using (var fileDisposeHelper = new FileDisposeHelper(filePath)) { // Call - fileDisposeHelper.CreateFile(); + fileDisposeHelper.Create(); // Assert Assert.IsTrue(File.Exists(filePath)); } Index: Core/Common/test/Core.Common.TestUtil/FileDisposeHelper.cs =================================================================== diff -u -ra1d0c950e24eeef7e35cf3b79e7fcd9fd7af041c -rc2694ebe86aef7b8ed7c9dd05a55eec101958a96 --- Core/Common/test/Core.Common.TestUtil/FileDisposeHelper.cs (.../FileDisposeHelper.cs) (revision a1d0c950e24eeef7e35cf3b79e7fcd9fd7af041c) +++ Core/Common/test/Core.Common.TestUtil/FileDisposeHelper.cs (.../FileDisposeHelper.cs) (revision c2694ebe86aef7b8ed7c9dd05a55eec101958a96) @@ -5,7 +5,7 @@ namespace Core.Common.TestUtil { /// - /// This class can be used to set a temporary files while testing. + /// This class can be used to set temporary files while testing. /// Disposing an instance of this class will delete the files. /// /// @@ -44,11 +44,11 @@ /// /// Creates the temporary files. /// - public void CreateFile() + public void Create() { foreach (var file in files) { - using (File.Create(file)) {} + CreateFile(file); } } @@ -57,14 +57,20 @@ /// public void Dispose() { - GC.Collect(); - GC.WaitForPendingFinalizers(); foreach (var file in files) { Dispose(file); } } + private static void CreateFile(string filename) + { + if (!string.IsNullOrWhiteSpace(filename)) + { + using (File.Create(filename)) {} + } + } + private static void Dispose(string filename) { if (!string.IsNullOrWhiteSpace(filename)) Index: Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs =================================================================== diff -u -rba840423eb72501cbad89c1a6d88642531efa8d5 -rc2694ebe86aef7b8ed7c9dd05a55eec101958a96 --- Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision ba840423eb72501cbad89c1a6d88642531efa8d5) +++ Ringtoets/Piping/src/Ringtoets.Piping.Data/PipingCalculation.cs (.../PipingCalculation.cs) (revision c2694ebe86aef7b8ed7c9dd05a55eec101958a96) @@ -20,9 +20,7 @@ // All rights reserved. using System; - using Core.Common.Base; -using Core.Common.Base.Data; using Ringtoets.Common.Data; using Ringtoets.Common.Placeholder; using Ringtoets.Piping.Data.Properties;