private static IEnumerable <TestCaseData> ProjectFilesToMigrate()
        {
            string unsupportedProjectFilePath = ProjectMigrationTestHelper.GetOutdatedUnSupportedProjectFilePath();
            var    unsupportedVersionedFile   = new ProjectVersionedFile(unsupportedProjectFilePath);
            string unsupportedVersion         = unsupportedVersionedFile.GetVersion();

            string supportedProjectFilePath = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();
            var    supportedVersionedFile   = new ProjectVersionedFile(supportedProjectFilePath);
            string supportedVersion         = supportedVersionedFile.GetVersion();

            yield return(new TestCaseData(unsupportedProjectFilePath, unsupportedVersion, false).SetName("UnsupportedProjectVersion"));

            yield return(new TestCaseData(supportedProjectFilePath, supportedVersion, true).SetName("SupportedProjectVersion"));
        }
Exemple #2
0
        public void GetVersion_FileDoesNotExist_ThrowsCriticalFileReadException()
        {
            // Setup
            string filePath = TestHelper.GetTestDataPath(nameof(GetVersion_FileDoesNotExist_ThrowsCriticalFileReadException));

            var sourceFile = new ProjectVersionedFile(filePath);

            // Precondition
            Assert.IsFalse(File.Exists(filePath), $"File should not exist at location '{filePath}'");

            // Call
            TestDelegate call = () => sourceFile.GetVersion();

            // Assert
            Assert.Throws <CriticalFileReadException>(call);
        }
Exemple #3
0
        public void GetVersion_FileCannotBeRead_ThrowsCriticalFileReadException()
        {
            // Setup
            string file     = Path.GetRandomFileName();
            string filePath = TestHelper.GetScratchPadPath(file);

            var sourceFile = new ProjectVersionedFile(filePath);

            using (var fileDisposeHelper = new FileDisposeHelper(filePath))
            {
                fileDisposeHelper.LockFiles();

                // Call
                TestDelegate call = () => sourceFile.GetVersion();

                // Assert
                Assert.Throws <CriticalFileReadException>(call);
            }
        }
Exemple #4
0
        public void Migrate_ValidFilesWithoutLogFile_SavesFileAtNewLocation()
        {
            // Setup
            const string newVersion        = "17.1";
            string       sourceFilePath    = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();
            var          fromVersionedFile = new ProjectVersionedFile(sourceFilePath);

            string targetFilePath = TestHelper.GetScratchPadPath(nameof(Migrate_ValidFilesWithoutLogFile_SavesFileAtNewLocation));
            var    migrator       = new ProjectFileMigrator();

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

                // Assert
                var toVersionedFile = new ProjectVersionedFile(targetFilePath);
                Assert.AreEqual(newVersion, toVersionedFile.GetVersion());
            }
        }
        private static void IsVersionSupportedCommand(string location)
        {
            ValidateIsVersionSupportedArgument(location);

            var    versionedFile = new ProjectVersionedFile(location);
            var    migrator      = new ProjectFileMigrator();
            string version       = versionedFile.GetVersion();

            bool isSupported = migrator.IsVersionSupported(version);

            if (isSupported)
            {
                System.Console.WriteLine(Resources.CommandSupported_File_Able_To_Migrate_To_Version_0, currentDatabaseVersion);
            }
            else
            {
                ConsoleHelper.WriteErrorLine(MigrationCoreStorageResources.Migrate_From_Version_0_To_Version_1_Not_Supported,
                                             version, currentDatabaseVersion);
            }
        }
Exemple #6
0
        public MigrationRequired ShouldMigrate(string filePath)
        {
            if (filePath == null)
            {
                throw new ArgumentNullException(nameof(filePath));
            }

            ValidateProjectPath(filePath, nameof(filePath), Resources.ProjectMigrator_Source_Descriptor);

            var    versionedFile = new ProjectVersionedFile(filePath);
            string version       = versionedFile.GetVersion();

            if (version.Equals(currentDatabaseVersion))
            {
                return(MigrationRequired.No);
            }

            if (!fileMigrator.IsVersionSupported(version))
            {
                string errorMessage = string.Format(MigrationCoreStorageResources.Migrate_From_Version_0_To_Version_1_Not_Supported,
                                                    version, currentDatabaseVersion);
                log.Error(errorMessage);
                return(MigrationRequired.NotSupported);
            }

            string query = string.Format(Resources.ProjectMigrator_Migrate_Outdated_project_file_update_to_current_version_0_inquire,
                                         currentDatabaseVersion);

            if (inquiryHelper.InquireContinuation(query))
            {
                return(MigrationRequired.Yes);
            }

            GenerateMigrationCancelledLogMessage(filePath);
            return(MigrationRequired.Aborted);
        }
Exemple #7
0
        public void GivenMigratorAndSupportedFile_WhenValidTargetLocationGiven_ThenFileSuccessfullyMigrates()
        {
            // Given
            string sourceFilePath = ProjectMigrationTestHelper.GetOutdatedSupportedProjectFilePath();

            string targetFile = $"{nameof(ProjectMigratorTest)}." +
                                $"{nameof(GivenMigratorAndSupportedFile_WhenValidTargetLocationGiven_ThenFileSuccessfullyMigrates)}.rtd";
            string targetFilePath = Path.Combine(TestHelper.GetScratchPadPath(), testDirectory, targetFile);

            var mocks         = new MockRepository();
            var inquiryHelper = mocks.Stub <IInquiryHelper>();

            mocks.ReplayAll();

            var logDirectory = $"{nameof(GivenMigratorAndSupportedFile_WhenValidTargetLocationGiven_ThenFileSuccessfullyMigrates)}_log";

            using (new DirectoryDisposeHelper(TestHelper.GetScratchPadPath(), logDirectory))
                using (new UseCustomSettingsHelper(new TestSettingsHelper
                {
                    TempPath = TestHelper.GetScratchPadPath(logDirectory)
                }))
                {
                    var migrator = new ProjectMigrator(inquiryHelper);

                    var migrationSuccessful = false;

                    // When
                    void Call() => migrationSuccessful = migrator.Migrate(sourceFilePath, targetFilePath);

                    // Then
                    string expectedMessage = $"Het projectbestand '{sourceFilePath}' is succesvol gemigreerd naar '{targetFilePath}' " +
                                             $"(versie {currentDatabaseVersion}).";
                    var migrationLog = new StringBuilder();
                    migrationLog.AppendLine("Door de migratie is het project aangepast. Bekijk het migratierapport door op details te klikken.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 16.4 naar versie 17.1:");
                    migrationLog.AppendLine("* Alle berekende resultaten zijn verwijderd.");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie kruin en binnentalud'");
                    migrationLog.AppendLine("    - De naam van dijkprofiel '1' is veranderd naar '102' en wordt ook gebruikt als ID.");
                    migrationLog.AppendLine("    - De naam van dijkprofiel '10' is veranderd naar '104' en wordt ook gebruikt als ID.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 17.1 naar versie 17.2:");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + De omgevingswaarde is gelijk gesteld aan 1/30000.");
                    migrationLog.AppendLine("  + De signaleringsparameter is gelijk gesteld aan 1/30000 (voorheen de waarde van de norm).");
                    migrationLog.AppendLine("  + De norm van het traject is gelijk gesteld aan de signaleringsparameter.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Hoogte kunstwerk'");
                    migrationLog.AppendLine("    - Het ID van kunstwerk 'Id' is veranderd naar 'Id00003'.");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP7'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Betrouwbaarheid sluiting kunstwerk'");
                    migrationLog.AppendLine("    - Het ID van kunstwerk 'id' is veranderd naar 'id00002'.");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP8'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Golfklappen op asfaltbekleding'");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP9'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie buitentalud'");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP10'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Stabiliteit steenzetting'");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP11'.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Sterkte en stabiliteit puntconstructies'");
                    migrationLog.AppendLine("    - Het ID van kunstwerk 'anId' is veranderd naar 'anId000000002'.");
                    migrationLog.AppendLine("    - Het ID van voorlandprofiel 'FP' is veranderd naar 'FP12'.");
                    migrationLog.AppendLine("* Traject: 'Demo traject'");
                    migrationLog.AppendLine("  + De omgevingswaarde is gelijk gesteld aan 1/1000.");
                    migrationLog.AppendLine("  + De signaleringsparameter is gelijk gesteld aan 1/30000 (voorheen de waarde van de norm).");
                    migrationLog.AppendLine("  + De norm van het traject is gelijk gesteld aan de signaleringsparameter.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 17.2 naar versie 17.3:");
                    migrationLog.AppendLine("* Geen aanpassingen.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 17.3 naar versie 18.1:");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Piping'");
                    migrationLog.AppendLine("    - De waarde '3.2' voor de verschuiving van parameter 'Verzadigd gewicht' van ondergrondlaag 'HotPinkLayer' is ongeldig en is veranderd naar NaN.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Sterkte en stabiliteit langsconstructies'");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Technische innovaties'");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Wateroverdruk bij asfaltbekleding'");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Betrouwbaarheid sluiting kunstwerk'");
                    migrationLog.AppendLine("    - De waarde van '0' van parameter 'Aantal identieke doorstroomopeningen' van berekening 'Nieuwe berekening' is ongeldig en is veranderd naar 1.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Macrostabiliteit buitenwaarts'");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Golfklappen op asfaltbekleding'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie buitentalud'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding afschuiven binnentalud'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding afschuiven buitentalud'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Microstabiliteit'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Piping bij kunstwerk'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Stabiliteit steenzetting'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Duinafslag'");
                    migrationLog.AppendLine("    - Alle resultaten voor de gedetailleerde toets van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("    - Alle resultaten voor de toets op maat van dit faalmechanisme konden niet worden omgezet naar een geldig resultaat en zijn verwijderd.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 18.1 naar versie 19.1:");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + Er worden standaardwaarden conform WBI2017 gebruikt voor de HLCD bestandsinformatie.");
                    migrationLog.AppendLine("  + De waarde voor de transparantie van de achtergrondkaart is aangepast naar 0.60.");
                    migrationLog.AppendLine("* Traject: 'Demo traject'");
                    migrationLog.AppendLine("  + Er worden standaardwaarden conform WBI2017 gebruikt voor de HLCD bestandsinformatie.");
                    migrationLog.AppendLine("  + De waarde voor de transparantie van de achtergrondkaart is aangepast naar 0.60.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 19.1 naar versie 21.1:");
                    migrationLog.AppendLine("* Geen aanpassingen.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 21.1 naar versie 22.1:");
                    migrationLog.AppendLine("* De oorspronkelijke faalmechanismen zijn omgezet naar het nieuwe formaat.\r\n* Alle toetsoordelen zijn verwijderd.");
                    migrationLog.AppendLine("* Traject: 'assessmentSection'");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie kruin en binnentalud'");
                    migrationLog.AppendLine("    - De waarden van de doelkans voor HBN en overslagdebiet zijn veranderd naar de trajectnorm.");
                    migrationLog.AppendLine("* Traject: 'Demo traject'");
                    migrationLog.AppendLine("  + Faalmechanisme: 'Grasbekleding erosie kruin en binnentalud'");
                    migrationLog.AppendLine("    - De waarden van de doelkans voor HBN en overslagdebiet zijn veranderd naar de trajectnorm.");
                    migrationLog.AppendLine("Gevolgen van de migratie van versie 22.1 naar versie 22.2:");
                    migrationLog.AppendLine("* Geen aanpassingen.");

                    Tuple <string, LogLevelConstant>[] expectedLogMessagesAndLevel =
                    {
                        Tuple.Create(expectedMessage,         LogLevelConstant.Info),
                        Tuple.Create(migrationLog.ToString(), LogLevelConstant.Info)
                    };
                    TestHelper.AssertLogMessagesWithLevelAreGenerated(Call, expectedLogMessagesAndLevel, 2);

                    Assert.IsTrue(migrationSuccessful);

                    var toVersionedFile = new ProjectVersionedFile(targetFilePath);
                    Assert.AreEqual(currentDatabaseVersion, toVersionedFile.GetVersion());
                }

            string logPath = Path.Combine(TestHelper.GetScratchPadPath(), logDirectory, "RiskeerMigrationLog.sqlite");

            Assert.IsFalse(File.Exists(logPath));

            mocks.VerifyAll();
        }