Index: DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/OperationalIntegrationTests.cs =================================================================== diff -u -r2015 -r2023 --- DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/OperationalIntegrationTests.cs (.../OperationalIntegrationTests.cs) (revision 2015) +++ DamEngine/trunk/src/Deltares.DamEngine.IntegrationTests/IntegrationTests/OperationalIntegrationTests.cs (.../OperationalIntegrationTests.cs) (revision 2023) @@ -23,6 +23,7 @@ using System.Text; using Deltares.DamEngine.Interface; using Deltares.DamEngine.Io; +using Deltares.DamEngine.Io.XmlOutput; using Deltares.DamEngine.TestHelpers; using NUnit.Framework; @@ -37,8 +38,6 @@ private const double tolerance = 0.0005; [Test] - // This test is exactly the same as RunMultiCore_UsingTestFiles_HasExpectedResultsInOutputFile - // except that the other test runs multicore public void Run_UsingTestFiles_HasExpectedResultsInOutputFile() { const string calcDir = "TestOperationalIntegration"; @@ -70,37 +69,46 @@ } [Test] - // This test is exactly the same as Run_UsingTestFiles_HasExpectedResultsInOutputFile - // except that this test runs multicore - public void RunMultiCore_UsingTestFiles_HasExpectedResultsInOutputFile() + // This test runs the same project as Run_UsingTestFiles_HasExpectedResultsInOutputFile + // except that it runs it with both single core and multi core. + // The output of both runs must be the same + public void CompareResultFromMultiCoreRunWithSingleCoreRun() { - const string calcDir = "TestOperationalIntegrationMultiCore"; + var calcDir = "TestOperationalIntegrationSingleCore"; + var outputFileName = @"TestFiles\OperationalSet2SingleCore.output.xml"; + var output = RunTestProjectCores(calcDir, outputFileName, 1); + var outputSingleCore = DamXmlSerialization.SaveOutputAsXmlString(output); + + calcDir = "TestOperationalIntegrationMultiCore"; + outputFileName = @"TestFiles\OperationalSet2MultiCore.output.xml"; + output = RunTestProjectCores(calcDir, outputFileName, 4); + var outputMultiCore = DamXmlSerialization.SaveOutputAsXmlString(output); + + Assert.AreEqual(outputSingleCore, outputMultiCore); + } + + private Output RunTestProjectCores(string calcDir, string outputFileName, int coreCount) + { if (Directory.Exists(calcDir)) { Directory.Delete(calcDir, true); // delete previous results } Directory.CreateDirectory(calcDir); - // Based on "DamLive\trunk\src\Deltares.DamLive.Tests\TestData\DamLive\Set2\\output.damx" - const int multiCoreCount = 4; const string inputFileName = @"TestFiles\OperationalSet2.xml"; - const string outputFileName = @"TestFiles\OperationalSet2MultiCore.output.xml"; string inputString = File.ReadAllText(inputFileName); inputString = XmlAdapter.ChangeValueInXml(inputString, "ProjectPath", ""); // Current directory will be used inputString = XmlAdapter.ChangeValueInXml(inputString, "CalculationMap", calcDir); // Current directory will be used inputString = XmlAdapter.ChangeValueInXml(inputString, "MapForSoilgeometries2D", @"TestFiles\output.Geometries\"); inputString = XmlAdapter.ChangeValueInXml(inputString, "SoilDatabaseName", @"TestFiles\output0.soilmaterials.mdb"); - inputString = XmlAdapter.ChangeValueInXml(inputString, "MaxCalculationCores", multiCoreCount.ToString()); + inputString = XmlAdapter.ChangeValueInXml(inputString, "MaxCalculationCores", coreCount.ToString()); EngineInterface engineInterface = new EngineInterface(inputString); Assert.IsNotNull(engineInterface.DamProjectData); string outputString = engineInterface.Run(); File.WriteAllText(outputFileName, outputString, Encoding.Unicode); Assert.IsNotNull(outputString); - var output = DamXmlSerialization.LoadOutputFromXmlString(outputString); - Assert.AreEqual(1.226, output.Results.OperationalOutputTimeSeries[0].Entries.TimeSerieEntry[0].Value, tolerance); - Assert.AreEqual(1.244, output.Results.OperationalOutputTimeSeries[1].Entries.TimeSerieEntry[0].Value, tolerance); - Assert.AreEqual(1.311, output.Results.OperationalOutputTimeSeries[2].Entries.TimeSerieEntry[0].Value, tolerance); + return DamXmlSerialization.LoadOutputFromXmlString(outputString); } }