コード例 #1
0
        public void Reload(ProjectConfigItem projectConfig)
        {
            projectConfig.ThrowIfNull(nameof(projectConfig));

            using (ArtifactExtractor _currentArtifactExtractor = _artifactExtractorFactory.Create(projectConfig))
            {
                using (var dbCommands = _dbCommandsFactory.CreateDBCommand(projectConfig.DBConnectionInfo))
                {
                    IncrementalScriptFilesComparer = _scriptFilesComparerFactory.CreateScriptFilesComparer <IncrementalScriptFileType>(dbCommands, projectConfig.IncrementalScriptsFolderPath);
                    ScriptFilesComparers[IncrementalScriptFilesComparer.ScriptFileType.FileTypeCode] = IncrementalScriptFilesComparer;

                    RepeatableScriptFilesComparer = _scriptFilesComparerFactory.CreateScriptFilesComparer <RepeatableScriptFileType>(dbCommands, projectConfig.RepeatableScriptsFolderPath);
                    ScriptFilesComparers[RepeatableScriptFilesComparer.ScriptFileType.FileTypeCode] = RepeatableScriptFilesComparer;

                    if (projectConfig.DevEnvironment)
                    {
                        DevDummyDataScriptFilesComparer = _scriptFilesComparerFactory.CreateScriptFilesComparer <DevDummyDataScriptFileType>(dbCommands, projectConfig.DevDummyDataScriptsFolderPath);
                        ScriptFilesComparers[DevDummyDataScriptFilesComparer.ScriptFileType.FileTypeCode] = DevDummyDataScriptFilesComparer;
                    }
                    else
                    {
                        DevDummyDataScriptFilesComparer = null;
                    }
                }
            }
        }
コード例 #2
0
        public override void Execute(DBVersionsProcessContext processContext)
        {
            processContext.ThrowIfNull(nameof(processContext));


            using (ArtifactExtractor _currentArtifactExtractor = _artifactExtractorFactory.Create(processContext.ProjectConfig))
            {
                List <ActionStepBase> internalSteps = new List <ActionStepBase>();

                using (var dbCommands = _dbCommandsFactory.CreateDBCommand(processContext.ProjectConfig.DBConnectionInfo))
                {
                    ScriptFileTypeBase       incrementalFileType = ScriptFileTypeBase.Create <IncrementalScriptFileType>();
                    ExecuteScriptsByTypeStep incrementalExecuteScriptsByTypeStep = _executeScriptsByTypeStepFactory.Create(incrementalFileType.FileTypeCode, dbCommands);
                    internalSteps.Add(incrementalExecuteScriptsByTypeStep);


                    string lastIncStriptFilename = GetLastIncFilename(processContext);

                    TargetScripts targetScripts = null;
                    if (processContext.ProcessArgs != null)
                    {
                        targetScripts = (processContext.ProcessArgs as DBVersionsProcessArgs).TargetScripts;
                    }

                    //Comment: We run the repeatable files and ddd files, onlyif we have all the schema on the DB. mean, only if we executed all incremiental files.
                    if (targetScripts.IncScriptFileName.Trim().ToUpperInvariant() == lastIncStriptFilename.Trim().ToUpperInvariant() ||
                        targetScripts.IncScriptFileName.Trim().ToUpperInvariant() == RuntimeScriptFile.TargetLastScriptFileName.Trim().ToUpperInvariant())
                    {
                        ScriptFileTypeBase       repeatableFileType = ScriptFileTypeBase.Create <RepeatableScriptFileType>();
                        ExecuteScriptsByTypeStep repeatableFileTypeExecuteScriptsByTypeStep = _executeScriptsByTypeStepFactory.Create(repeatableFileType.FileTypeCode, dbCommands);
                        internalSteps.Add(repeatableFileTypeExecuteScriptsByTypeStep);


                        if (processContext.ScriptFilesState.DevDummyDataScriptFilesComparer != null)
                        {
                            ScriptFileTypeBase       devDummyDataFileType = ScriptFileTypeBase.Create <DevDummyDataScriptFileType>();
                            ExecuteScriptsByTypeStep devDummyDataFileTypeExecuteScriptsByTypeStep = _executeScriptsByTypeStepFactory.Create(devDummyDataFileType.FileTypeCode, dbCommands);
                            internalSteps.Add(devDummyDataFileTypeExecuteScriptsByTypeStep);
                        }
                    }


                    ExecuteInternalSteps(internalSteps, false);
                }
            }
        }
コード例 #3
0
        public void AssertThatAllFilesInFolderExistWithTheSameHashInTheDB_RunAgainAfterRepetableFilesChanged(string testName, ProjectConfigItem projectConfig)
        {
            DataTable dbScriptsExecutionHistoryFilesTable = _dbHandler.GetTable(projectConfig.DBConnectionInfo, DBCommandsConsts.DBScriptsExecutionHistoryFilesFullTableName);

            if (!projectConfig.DevEnvironment)
            {
                using (ArtifactExtractor artifactExtractor = new ArtifactExtractor(projectConfig))
                {
                    AssertMatchIncrementalFilesWithDBExecuted(testName, projectConfig, dbScriptsExecutionHistoryFilesTable);

                    AssertMatchRepeatableFilesWithDBExecuted_ForRunAgainAfterRepetableFilesChanged(testName, projectConfig, dbScriptsExecutionHistoryFilesTable);

                    AssertDevDummyDataFilesWithDBExecuted_DeliveryEnv(testName, projectConfig, dbScriptsExecutionHistoryFilesTable);
                }
            }
            else
            {
                AssertMatchIncrementalFilesWithDBExecuted(testName, projectConfig, dbScriptsExecutionHistoryFilesTable);

                AssertMatchRepeatableFilesWithDBExecuted_ForRunAgainAfterRepetableFilesChanged(testName, projectConfig, dbScriptsExecutionHistoryFilesTable);

                //      AssertDevDummyDataFilesWithDBExecuted_RunAgainAfterRepetableFilesChanged(testName, projectConfig, dbScriptsExecutionHistoryFilesTable);
            }
        }
コード例 #4
0
        public void AssertThatAllFilesInTheDBExistWithTheSameHashInTheFolder(string testName, ProjectConfigItem projectConfig)
        {
            ArtifactExtractor artifactExtractor = null;

            if (!projectConfig.DevEnvironment)
            {
                artifactExtractor = new ArtifactExtractor(projectConfig);
            }

            DataTable dbScriptsExecutionHistoryFilesTable = _dbHandler.GetTable(projectConfig.DBConnectionInfo, DBCommandsConsts.DBScriptsExecutionHistoryFilesFullTableName);


            string[] arrIncAllScriptFiles = Directory.GetFiles(projectConfig.IncrementalScriptsFolderPath, $"{_incrementalScriptFileType.Prefix}*.sql", SearchOption.AllDirectories);
            Dictionary <string, FileInfo> incSctipFilesDictionary = arrIncAllScriptFiles.Select(e => new FileInfo(e)).ToDictionary(e => e.Name);

            List <DataRow> incExecutionHistoryFilesDBRows =
                dbScriptsExecutionHistoryFilesTable.Rows.Cast <DataRow>().Where(row => Convert.ToString(row["ScriptFileType"]) == _incrementalScriptFileType.FileTypeCode).ToList();

            foreach (DataRow executedScriptRow in incExecutionHistoryFilesDBRows)
            {
                string filename = Convert.ToString(executedScriptRow["Filename"]);

                AssertFileFromDBExistInDictionaryFolderFiles(testName, incSctipFilesDictionary, filename);

                FileInfo fiScriptFile = incSctipFilesDictionary[filename];

                AssertScriptFileAndDBRowHasSameHash(testName, fiScriptFile, executedScriptRow);
            }


            string[] arrRptAllScriptFiles = Directory.GetFiles(projectConfig.RepeatableScriptsFolderPath, $"{_repeatableScriptFileType.Prefix}*.sql", SearchOption.AllDirectories);
            Dictionary <string, FileInfo> rptSctipFilesDictionary = arrRptAllScriptFiles.Select(e => new FileInfo(e)).ToDictionary(e => e.Name);


            List <DataRow> rptExecutionHistoryFilesDBRows =
                dbScriptsExecutionHistoryFilesTable.Rows.Cast <DataRow>().Where(row => Convert.ToString(row["ScriptFileType"]) == _repeatableScriptFileType.FileTypeCode).ToList();

            foreach (DataRow executedScriptRow in rptExecutionHistoryFilesDBRows)
            {
                string filename = Convert.ToString(executedScriptRow["Filename"]);

                AssertFileFromDBExistInDictionaryFolderFiles(testName, rptSctipFilesDictionary, filename);

                FileInfo fiScriptFile = rptSctipFilesDictionary[filename];

                AssertScriptFileAndDBRowHasSameHash(testName, fiScriptFile, executedScriptRow);
            }


            if (projectConfig.DevEnvironment)
            {
                string[] arrDddAllScriptFiles = Directory.GetFiles(projectConfig.DevDummyDataScriptsFolderPath, $"{_devDummyDataScriptFileType.Prefix}*.sql", SearchOption.AllDirectories);
                Dictionary <string, FileInfo> dddSctipFilesDictionary = arrDddAllScriptFiles.Select(e => new FileInfo(e)).ToDictionary(e => e.Name);


                List <DataRow> dddExecutionHistoryFilesDBRows =
                    dbScriptsExecutionHistoryFilesTable.Rows.Cast <DataRow>().Where(row => Convert.ToString(row["ScriptFileType"]) == _devDummyDataScriptFileType.FileTypeCode).ToList();

                foreach (DataRow executedScriptRow in dddExecutionHistoryFilesDBRows)
                {
                    string filename = Convert.ToString(executedScriptRow["Filename"]);

                    AssertFileFromDBExistInDictionaryFolderFiles(testName, dddSctipFilesDictionary, filename);

                    FileInfo fiScriptFile = dddSctipFilesDictionary[filename];

                    AssertScriptFileAndDBRowHasSameHash(testName, fiScriptFile, executedScriptRow);
                }
            }



            if (artifactExtractor != null)
            {
                artifactExtractor.Dispose();
                artifactExtractor = null;
            }
        }