private static void AssertDatabase(MigratedDatabaseReader reader)
        {
            const string validateForeignKeys =
                "PRAGMA foreign_keys;";

            reader.AssertReturnedDataIsValid(validateForeignKeys);
        }
        public void Given172Project_WhenUpgradedTo173_ThenProjectAsExpected()
        {
            // Given
            string sourceFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Migration.Core,
                                                               "MigrationTestProject172.rtd");
            var fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(nameof(Given172Project_WhenUpgradedTo173_ThenProjectAsExpected));
            string logFilePath    = TestHelper.GetScratchPadPath(string.Concat(nameof(Given172Project_WhenUpgradedTo173_ThenProjectAsExpected), ".log"));
            var    migrator       = new ProjectFileMigrator
            {
                LogPath = logFilePath
            };

            using (new FileDisposeHelper(logFilePath))
                using (new FileDisposeHelper(targetFilePath))
                {
                    // When
                    migrator.Migrate(fromVersionedFile, newVersion, targetFilePath);

                    // Then
                    using (var reader = new MigratedDatabaseReader(targetFilePath))
                    {
                        AssertTablesContentMigrated(reader, sourceFilePath);

                        AssertVersions(reader);
                        AssertDatabase(reader);

                        AssertMacroStabilityInwardsOutput(reader);
                    }

                    AssertLogDatabase(logFilePath);
                }
        }
Ejemplo n.º 3
0
        private static void AssertBackgroundData(MigratedDatabaseReader reader)
        {
            const string validateBackgroundData =
                "SELECT COUNT() = " +
                "(SELECT COUNT() FROM AssessmentSectionEntity) " +
                "FROM BackgroundDataEntity " +
                "WHERE [Name] = \"Bing Maps - Satelliet\" " +
                "AND [IsVisible] = 1 " +
                "AND [Transparency] = 0.0 " +
                "AND [BackgroundDataType] = 2 " +
                "AND [AssessmentSectionEntityId] IN " +
                "(SELECT [AssessmentSectionEntityId] FROM AssessmentSectionEntity);";

            reader.AssertReturnedDataIsValid(validateBackgroundData);

            const string validateBackgroundMetaData =
                "SELECT COUNT() = " +
                "(SELECT COUNT() FROM BackgroundDataEntity) " +
                "FROM BackgroundDataMetaEntity " +
                "WHERE [Key] = \"WellKnownTileSource\" " +
                "AND [Value] = \"2\" " +
                "AND [BackgroundDataEntityId] IN " +
                "(SELECT BackgroundDataEntityId FROM BackgroundDataEntity);";

            reader.AssertReturnedDataIsValid(validateBackgroundMetaData);
        }
Ejemplo n.º 4
0
        private static void AssertWaveImpactAsphaltCoverFailureMechanism(MigratedDatabaseReader reader)
        {
            const string validateCalculationOutputs =
                "SELECT COUNT() = 0 " +
                "FROM WaveImpactAsphaltCoverWaveConditionsOutputEntity";

            reader.AssertReturnedDataIsValid(validateCalculationOutputs);
        }
Ejemplo n.º 5
0
        private static void AssertHydraulicBoundaryLocations(MigratedDatabaseReader reader)
        {
            const string validateOutputs =
                "SELECT COUNT() = 0 " +
                "FROM HydraulicLocationOutputEntity";

            reader.AssertReturnedDataIsValid(validateOutputs);
        }
Ejemplo n.º 6
0
        private static void AssertSurfaceLines(MigratedDatabaseReader reader)
        {
            const string validateSurfaceLines =
                "SELECT COUNT(DISTINCT(Name)) = COUNT() " +
                "FROM SurfaceLineEntity;";

            reader.AssertReturnedDataIsValid(validateSurfaceLines);
        }
Ejemplo n.º 7
0
        private static void AssertStabilityPointStructuresFailureMechanism(MigratedDatabaseReader reader)
        {
            const string validateCalculationOutputs =
                "SELECT COUNT() = 0 " +
                "FROM StabilityPointStructuresOutputEntity";

            reader.AssertReturnedDataIsValid(validateCalculationOutputs);
        }
Ejemplo n.º 8
0
        private static void AssertForeshoreProfiles(MigratedDatabaseReader reader)
        {
            const string validateForeshoreProfiles =
                "SELECT COUNT() = 0 " +
                "FROM ForeshoreProfileEntity " +
                "WHERE Id != Name;";

            reader.AssertReturnedDataIsValid(validateForeshoreProfiles);
        }
Ejemplo n.º 9
0
        private static void AssertGrassCoverErosionOutwardsFailureMechanism(MigratedDatabaseReader reader)
        {
            const string validateCalculationOutputs =
                "SELECT COUNT() = 0 " +
                "FROM GrassCoverErosionOutwardsHydraulicLocationOutputEntity " +
                "JOIN GrassCoverErosionOutwardsWaveConditionsOutputEntity";

            reader.AssertReturnedDataIsValid(validateCalculationOutputs);
        }
        private static void AssertVersions(MigratedDatabaseReader reader)
        {
            const string validateVersion =
                "SELECT COUNT() = 1 " +
                "FROM [VersionEntity] " +
                "WHERE [Version] = \"17.3\";";

            reader.AssertReturnedDataIsValid(validateVersion);
        }
Ejemplo n.º 11
0
        private static void AssertDikeProfiles(MigratedDatabaseReader reader)
        {
            const string validateDikeProfiles =
                "SELECT COUNT(DISTINCT(Id)) = COUNT() " +
                "FROM DikeProfileEntity " +
                "GROUP BY [FailureMechanismEntityId]";

            reader.AssertReturnedDataIsValid(validateDikeProfiles);
        }
Ejemplo n.º 12
0
        private static void AssertStochasticSoilProfiles(MigratedDatabaseReader reader)
        {
            const string validateStochasticSoilProfiles =
                "SELECT " +
                "(SELECT COUNT() = (SELECT COUNT() FROM StochasticSoilProfileEntity WHERE [Type] = 1) FROM StochasticSoilProfileEntity) " +
                "AND " +
                "(SELECT COUNT() = 0 FROM StochasticSoilProfileEntity WHERE [Probability] NOT BETWEEN 0 AND 1 OR [Probability] IS NULL);";

            reader.AssertReturnedDataIsValid(validateStochasticSoilProfiles);
        }
Ejemplo n.º 13
0
        private static void AssertStochasticSoilModels(MigratedDatabaseReader reader)
        {
            const string validateStochasticSoilModels =
                "SELECT COUNT(DISTINCT(Name)) = COUNT() " +
                "FROM StochasticSoilModelEntity;";

            reader.AssertReturnedDataIsValid(validateStochasticSoilModels);

            AssertStochasticSoilProfiles(reader);
        }
Ejemplo n.º 14
0
        private static void AssertDuneErosionFailureMechanism(MigratedDatabaseReader reader)
        {
            const string validateFailureMechanisms =
                "SELECT COUNT() = (SELECT COUNT() FROM FailureMechanismEntity WHERE FailureMechanismType = 8) " +
                "FROM DuneErosionFailureMechanismMetaEntity " +
                "WHERE N = 2.0 " +
                "AND FailureMechanismEntityId IN " +
                "(SELECT FailureMechanismEntityId FROM FailureMechanismEntity WHERE FailureMechanismType = 8);";

            reader.AssertReturnedDataIsValid(validateFailureMechanisms);
        }
Ejemplo n.º 15
0
        public void Given164Project_WhenUpgradedTo171_ThenProjectAsExpected()
        {
            // Given
            string sourceFilePath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Migration.Core,
                                                               "MigrationTestProject164.rtd");
            var fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(nameof(Given164Project_WhenUpgradedTo171_ThenProjectAsExpected));
            string logFilePath    = TestHelper.GetScratchPadPath(string.Concat(nameof(Given164Project_WhenUpgradedTo171_ThenProjectAsExpected), ".log"));
            var    migrator       = new ProjectFileMigrator
            {
                LogPath = logFilePath
            };

            using (new FileDisposeHelper(logFilePath))
                using (new FileDisposeHelper(targetFilePath))
                {
                    // When
                    migrator.Migrate(fromVersionedFile, newVersion, targetFilePath);

                    // Then
                    using (var reader = new MigratedDatabaseReader(targetFilePath))
                    {
                        AssertTablesContentMigrated(reader, sourceFilePath);

                        AssertDuneErosionFailureMechanism(reader);
                        AssertClosingStructuresFailureMechanism(reader, sourceFilePath);
                        AssertGrassCoverErosionInwardsFailureMechanism(reader);
                        AssertGrassCoverErosionOutwardsFailureMechanism(reader);
                        AssertHeightStructuresFailureMechanism(reader);
                        AssertPipingFailureMechanism(reader);
                        AssertStabilityPointStructuresFailureMechanism(reader);
                        AssertStabilityStoneCoverFailureMechanism(reader);
                        AssertWaveImpactAsphaltCoverFailureMechanism(reader);

                        AssertHydraulicBoundaryLocations(reader);
                        AssertDikeProfiles(reader);
                        AssertForeshoreProfiles(reader);
                        AssertStochasticSoilModels(reader);
                        AssertSurfaceLines(reader);
                        AssertSoilLayers(reader, sourceFilePath);
                        AssertBackgroundData(reader);

                        AssertVersions(reader);
                        AssertDatabase(reader);
                    }

                    AssertLogDatabase(logFilePath);
                }
        }
        private static void AssertMacroStabilityInwardsOutput(MigratedDatabaseReader reader)
        {
            const string validateMacroStabilityInwardsCalculationOutput =
                "SELECT COUNT() = 0 " +
                "FROM [MacroStabilityInwardsCalculationOutputEntity]";

            reader.AssertReturnedDataIsValid(validateMacroStabilityInwardsCalculationOutput);

            const string validateMacroStabilityInwardsSemiProbabilisticOutput =
                "SELECT COUNT() = 0 " +
                "FROM [MacroStabilityInwardsSemiProbabilisticOutputEntity]";

            reader.AssertReturnedDataIsValid(validateMacroStabilityInwardsSemiProbabilisticOutput);
        }
Ejemplo n.º 17
0
        private static void AssertSoilLayers(MigratedDatabaseReader reader, string sourceFilePath)
        {
            string validateSoilLayers =
                $"ATTACH DATABASE[{sourceFilePath}] AS SOURCEPROJECT; " +
                "SELECT COUNT() = (SELECT COUNT() FROM [SOURCEPROJECT].SoilLayerEntity) " +
                "FROM SoilLayerEntity AS NEW " +
                "LEFT JOIN [SOURCEPROJECT].SoilLayerEntity AS OLD ON NEW.[SoilLayerEntityId] = OLD.[SoilLayerEntityId] " +
                "WHERE ((NEW.[DiameterD70CoefficientOfVariation] IS NULL AND OLD.[DiameterD70Deviation] IS NULL) " +
                "OR NEW.[DiameterD70CoefficientOfVariation] = ROUND(OLD.[DiameterD70Deviation] / OLD.[DiameterD70Mean], 6)) " +
                "AND ((NEW.[PermeabilityCoefficientOfVariation] IS NULL AND OLD.[PermeabilityDeviation] IS NULL) " +
                "OR NEW.[PermeabilityCoefficientOfVariation] = ROUND(OLD.[PermeabilityDeviation] / OLD.[PermeabilityMean], 6)); " +
                "DETACH SOURCEPROJECT;";

            reader.AssertReturnedDataIsValid(validateSoilLayers);
        }
Ejemplo n.º 18
0
        private static void AssertClosingStructuresFailureMechanism(MigratedDatabaseReader reader, string sourceFilePath)
        {
            string validateFailureMechanisms =
                $"ATTACH DATABASE[{sourceFilePath}] AS SOURCEPROJECT; " +
                "SELECT COUNT() = (SELECT COUNT() FROM [SOURCEPROJECT].ClosingStructureFailureMechanismMetaEntity) " +
                "FROM ClosingStructuresFailureMechanismMetaEntity;" +
                "DETACH SOURCEPROJECT;";

            reader.AssertReturnedDataIsValid(validateFailureMechanisms);

            const string validateCalculationOutputs =
                "SELECT COUNT() = 0 " +
                "FROM ClosingStructuresOutputEntity";

            reader.AssertReturnedDataIsValid(validateCalculationOutputs);
        }
Ejemplo n.º 19
0
        private static void AssertPipingFailureMechanism(MigratedDatabaseReader reader)
        {
            const string validateFailureMechanisms =
                "SELECT COUNT() = 0 " +
                "FROM [PipingFailureMechanismMetaEntity] " +
                "WHERE [StochasticSoilModelSourcePath] != \"\"" +
                "OR [SurfaceLineSourcePath] != \"\";";

            reader.AssertReturnedDataIsValid(validateFailureMechanisms);

            const string validateCalculationOutputs =
                "SELECT COUNT() = 0 " +
                "FROM PipingCalculationOutputEntity " +
                "JOIN PipingSemiProbabilisticOutputEntity";

            reader.AssertReturnedDataIsValid(validateCalculationOutputs);
        }
Ejemplo n.º 20
0
        private static void AssertGrassCoverErosionInwardsFailureMechanism(MigratedDatabaseReader reader)
        {
            const string validateFailureMechanisms =
                "SELECT COUNT() = 0 " +
                "FROM [GrassCoverErosionInwardsFailureMechanismMetaEntity] " +
                "WHERE [DikeProfileCollectionSourcePath] != \"\";";

            reader.AssertReturnedDataIsValid(validateFailureMechanisms);

            const string validateCalculations =
                "SELECT COUNT() = 0 " +
                "FROM [GrassCoverErosionInwardsCalculationEntity] " +
                "WHERE [OvertoppingRateCalculationType] != 1;";

            reader.AssertReturnedDataIsValid(validateCalculations);

            const string validateCalculationOutputs =
                "SELECT COUNT() = 0 " +
                "FROM [GrassCoverErosionInwardsDikeHeightOutputEntity] " +
                "JOIN [GrassCoverErosionInwardsOutputEntity];";

            reader.AssertReturnedDataIsValid(validateCalculationOutputs);
        }
        private static void AssertTablesContentMigrated(MigratedDatabaseReader reader, string sourceFilePath)
        {
            string[] tables =
            {
                "AssessmentSectionEntity",
                "BackgroundDataEntity",
                "BackgroundDataMetaEntity",
                "CalculationGroupEntity",
                "ClosingStructureEntity",
                "ClosingStructuresCalculationEntity",
                "ClosingStructuresFailureMechanismMetaEntity",
                "ClosingStructuresOutputEntity",
                "ClosingStructuresSectionResultEntity",
                "DikeProfileEntity",
                "DuneErosionFailureMechanismMetaEntity",
                "DuneErosionSectionResultEntity",
                "DuneLocationEntity",
                "DuneLocationOutputEntity",
                "FailureMechanismEntity",
                "FailureMechanismSectionEntity",
                "FaultTreeIllustrationPointEntity",
                "FaultTreeIllustrationPointStochastEntity",
                "FaultTreeSubmechanismIllustrationPointEntity",
                "ForeshoreProfileEntity",
                "GeneralResultFaultTreeIllustrationPointEntity",
                "GeneralResultFaultTreeIllustrationPointStochastEntity",
                "GeneralResultSubMechanismIllustrationPointEntity",
                "GeneralResultSubMechanismIllustrationPointStochastEntity",
                "GrassCoverErosionInwardsCalculationEntity",
                "GrassCoverErosionInwardsDikeHeightOutputEntity",
                "GrassCoverErosionInwardsFailureMechanismMetaEntity",
                "GrassCoverErosionInwardsOutputEntity",
                "GrassCoverErosionInwardsOvertoppingRateOutputEntity",
                "GrassCoverErosionInwardsSectionResultEntity",
                "GrassCoverErosionOutwardsFailureMechanismMetaEntity",
                "GrassCoverErosionOutwardsHydraulicLocationEntity",
                "GrassCoverErosionOutwardsHydraulicLocationOutputEntity",
                "GrassCoverErosionOutwardsSectionResultEntity",
                "GrassCoverErosionOutwardsWaveConditionsCalculationEntity",
                "GrassCoverErosionOutwardsWaveConditionsOutputEntity",
                "GrassCoverSlipOffInwardsSectionResultEntity",
                "GrassCoverSlipOffOutwardsSectionResultEntity",
                "HeightStructureEntity",
                "HeightStructuresCalculationEntity",
                "HeightStructuresFailureMechanismMetaEntity",
                "HeightStructuresOutputEntity",
                "HeightStructuresSectionResultEntity",
                "HydraulicLocationEntity",
                "HydraulicLocationOutputEntity",
                "IllustrationPointResultEntity",
                "MacroStabilityInwardsCalculationEntity",
                "MacroStabilityInwardsCharacteristicPointEntity",
                "MacroStabilityInwardsFailureMechanismMetaEntity",
                "MacroStabilityInwardsPreconsolidationStressEntity",
                "MacroStabilityInwardsSectionResultEntity",
                "MacroStabilityInwardsSoilLayerOneDEntity",
                "MacroStabilityInwardsSoilLayerTwoDEntity",
                "MacroStabilityInwardsSoilProfileOneDEntity",
                "MacroStabilityInwardsSoilProfileTwoDEntity",
                "MacroStabilityInwardsSoilProfileTwoDSoilLayerTwoDEntity",
                "MacroStabilityInwardsStochasticSoilProfileEntity",
                "MacrostabilityOutwardsSectionResultEntity",
                "MicrostabilitySectionResultEntity",
                "PipingCalculationEntity",
                "PipingCalculationOutputEntity",
                "PipingCharacteristicPointEntity",
                "PipingFailureMechanismMetaEntity",
                "PipingSectionResultEntity",
                "PipingSemiProbabilisticOutputEntity",
                "PipingSoilLayerEntity",
                "PipingSoilProfileEntity",
                "PipingStochasticSoilProfileEntity",
                "PipingStructureSectionResultEntity",
                "ProjectEntity",
                "StabilityPointStructureEntity",
                "StabilityPointStructuresCalculationEntity",
                "StabilityPointStructuresFailureMechanismMetaEntity",
                "StabilityPointStructuresOutputEntity",
                "StabilityPointStructuresSectionResultEntity",
                "StabilityStoneCoverFailureMechanismMetaEntity",
                "StabilityStoneCoverSectionResultEntity",
                "StabilityStoneCoverWaveConditionsCalculationEntity",
                "StabilityStoneCoverWaveConditionsOutputEntity",
                "StochastEntity",
                "StochasticSoilModelEntity",
                "StrengthStabilityLengthwiseConstructionSectionResultEntity",
                "SubMechanismIllustrationPointEntity",
                "SubMechanismIllustrationPointStochastEntity",
                "SurfaceLineEntity",
                "TechnicalInnovationSectionResultEntity",
                "TopLevelFaultTreeIllustrationPointEntity",
                "TopLevelSubMechanismIllustrationPointEntity",
                "VersionEntity",
                "WaterPressureAsphaltCoverSectionResultEntity",
                "WaveImpactAsphaltCoverFailureMechanismMetaEntity",
                "WaveImpactAsphaltCoverSectionResultEntity",
                "WaveImpactAsphaltCoverWaveConditionsCalculationEntity",
                "WaveImpactAsphaltCoverWaveConditionsOutputEntity"
            };

            foreach (string table in tables)
            {
                string validateMigratedTable =
                    $"ATTACH DATABASE \"{sourceFilePath}\" AS SOURCEPROJECT; " +
                    $"SELECT COUNT() = (SELECT COUNT() FROM [SOURCEPROJECT].{table}) " +
                    $"FROM {table};" +
                    "DETACH SOURCEPROJECT;";
                reader.AssertReturnedDataIsValid(validateMigratedTable);
            }
        }
Ejemplo n.º 22
0
        private static void AssertTablesContentMigrated(MigratedDatabaseReader reader, string sourceFilePath)
        {
            string[] tables =
            {
                "AssessmentSectionEntity",
                "CalculationGroupEntity",
                "CharacteristicPointEntity",
                "ClosingStructureEntity",
                "ClosingStructuresCalculationEntity",
                "ClosingStructuresSectionResultEntity",
                "DikeProfileEntity",
                "DuneErosionSectionResultEntity",
                "FailureMechanismEntity",
                "FailureMechanismSectionEntity",
                "ForeshoreProfileEntity",
                "GrassCoverErosionInwardsCalculationEntity",
                "GrassCoverErosionInwardsFailureMechanismMetaEntity",
                "GrassCoverErosionInwardsSectionResultEntity",
                "GrassCoverErosionOutwardsFailureMechanismMetaEntity",
                "GrassCoverErosionOutwardsHydraulicLocationEntity",
                "GrassCoverErosionOutwardsSectionResultEntity",
                "GrassCoverErosionOutwardsWaveConditionsCalculationEntity",
                "GrassCoverSlipOffInwardsSectionResultEntity",
                "GrassCoverSlipOffOutwardsSectionResultEntity",
                "HeightStructureEntity",
                "HeightStructuresCalculationEntity",
                "HeightStructuresFailureMechanismMetaEntity",
                "HeightStructuresSectionResultEntity",
                "HydraulicLocationEntity",
                "MacrostabilityInwardsSectionResultEntity",
                "MacrostabilityOutwardsSectionResultEntity",
                "MicrostabilitySectionResultEntity",
                "PipingCalculationEntity",
                "PipingFailureMechanismMetaEntity",
                "PipingSectionResultEntity",
                "PipingStructureSectionResultEntity",
                "ProjectEntity",
                "SoilLayerEntity",
                "SoilProfileEntity",
                "StabilityPointStructureEntity",
                "StabilityPointStructuresCalculationEntity",
                "StabilityPointStructuresFailureMechanismMetaEntity",
                "StabilityPointStructuresSectionResultEntity",
                "StabilityStoneCoverSectionResultEntity",
                "StabilityStoneCoverWaveConditionsCalculationEntity",
                "StochasticSoilModelEntity",
                "StochasticSoilProfileEntity",
                "StrengthStabilityLengthwiseConstructionSectionResultEntity",
                "SurfaceLineEntity",
                "TechnicalInnovationSectionResultEntity",
                "VersionEntity",
                "WaterPressureAsphaltCoverSectionResultEntity",
                "WaveImpactAsphaltCoverSectionResultEntity",
                "WaveImpactAsphaltCoverWaveConditionsCalculationEntity"
            };

            foreach (string table in tables)
            {
                string validateMigratedTable =
                    $"ATTACH DATABASE[{sourceFilePath}] AS SOURCEPROJECT; " +
                    $"SELECT COUNT() = (SELECT COUNT() FROM [SOURCEPROJECT].{table}) " +
                    $"FROM {table};" +
                    "DETACH SOURCEPROJECT;";
                reader.AssertReturnedDataIsValid(validateMigratedTable);
            }
        }