public void CleanProjectFileForRemoteExecutionTest_NothingToClean()
        {
            Initialization init = GetInitializationObject();

            //Create the build package...
            SqlSyncBuildData buildData = init.CreateSqlSyncSqlBuildDataObject();

            init.AddInsertScript(ref buildData, true);
            init.AddFailureScript(ref buildData, true, true);
            init.AddFailureScript(ref buildData, true, true);
            foreach (SqlSyncBuildData.ScriptRow row in buildData.Script)
            {
                row.FileName = Path.GetFileName(row.FileName);
            }

            string zipFileName = init.GetTrulyUniqueFile() + ".sbm";
            string path        = Path.GetDirectoryName(zipFileName);

            SqlBuildFileHelper.PackageProjectFileIntoZip(buildData, path, zipFileName, false);

            byte[]           expected = File.ReadAllBytes(zipFileName);
            byte[]           actual;
            SqlSyncBuildData cleanedBuildData;

            actual = SqlBuildFileHelper.CleanProjectFileForRemoteExecution(zipFileName, out cleanedBuildData);
            Assert.IsTrue(cleanedBuildData.GetXml().ToString().Length > 100);
            Assert.AreEqual(buildData.GetXml().ToString().Length, cleanedBuildData.GetXml().ToString().Length);
            Assert.IsTrue(1500 <= actual.Length, string.Format("Actual length of cleaned XML {0}.\r\n{1}", actual.Length.ToString(), cleanedBuildData.GetXml())); //can't get exact length due to variations in guids and dates.
            Assert.IsTrue(expected.Length == actual.Length);

            Assert.IsTrue(cleanedBuildData.ScriptRun.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.Build.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.CodeReview.Rows.Count == 0);
            Assert.AreEqual(buildData.Script.Rows.Count, cleanedBuildData.Script.Rows.Count);
        }
        public void PackageSbxFileIntoSbmFileTest_Success()
        {
            string folder = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());

            Directory.CreateDirectory(folder);

            string sbxFile = Path.Combine(folder, "sbx_package_tester.sbx");
            string script1 = Path.Combine(folder, "CreateTestTablesScript.sql");
            string script2 = Path.Combine(folder, "LoggingTable.sql");

            File.WriteAllBytes(sbxFile, Properties.Resources.sbx_package_tester);
            File.WriteAllText(script1, Properties.Resources.CreateTestTablesScript);
            File.WriteAllText(script2, Properties.Resources.LoggingTable);


            string sbmProjectFileName = Path.Combine(folder, "test.sbm");
            bool   expected           = true;
            bool   actual;

            actual = SqlBuildFileHelper.PackageSbxFileIntoSbmFile(sbxFile, sbmProjectFileName);

            Directory.Delete(folder, true);

            Assert.AreEqual(expected, actual);
        }
        public void PackageSbxFilesIntoSbmFilesTest_SingleSbx()
        {
            string directoryName = Path.GetTempPath() + Guid.NewGuid().ToString();

            Directory.CreateDirectory(directoryName);

            string sbxBuildControlFileName = Path.Combine(directoryName, "sbx_package_tester.sbx");
            string script1 = Path.Combine(directoryName, "CreateTestTablesScript.sql");
            string script2 = Path.Combine(directoryName, "LoggingTable.sql");

            File.WriteAllBytes(sbxBuildControlFileName, Properties.Resources.sbx_package_tester);
            File.WriteAllText(script1, Properties.Resources.CreateTestTablesScript);
            File.WriteAllText(script2, Properties.Resources.LoggingTable);

            string message         = string.Empty;
            string messageExpected = string.Empty;

            List <string> actual;

            actual = SqlBuildFileHelper.PackageSbxFilesIntoSbmFiles(directoryName, out message);
            Directory.Delete(directoryName, true);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(1, actual.Count);
            Assert.IsTrue(actual[0] == Path.Combine(directoryName, "sbx_package_tester.sbm"));
        }
        public void CalculateBuildPackageSHA1SignatureFromBatchCollectionTest_BatchOrder()
        {
            ScriptBatch batch1 = new ScriptBatch(
                "File1.sql",
                new string[] { "Line one goes here", "Line 2 goes there" },
                Guid.NewGuid().ToString());

            ScriptBatch batch2 = new ScriptBatch(
                "File2.sql",
                new string[] { "My Batch Line one goes here", "Second batch Line 2 goes there" },
                Guid.NewGuid().ToString());


            ScriptBatchCollection scriptBatchColl = new ScriptBatchCollection();

            scriptBatchColl.Add(batch1);
            scriptBatchColl.Add(batch2);

            string order12 = SqlBuildFileHelper.CalculateBuildPackageSHA1SignatureFromBatchCollection(scriptBatchColl);

            scriptBatchColl = new ScriptBatchCollection();
            scriptBatchColl.Add(batch2);
            scriptBatchColl.Add(batch1);

            string order21 = SqlBuildFileHelper.CalculateBuildPackageSHA1SignatureFromBatchCollection(scriptBatchColl);

            Assert.AreNotEqual(order12, order21);
        }
示例#5
0
        internal static bool RebuildBuildManagerFile(int defaultTimeout, string buildFileName, List <RebuilderData> rebuildData)
        {
            string tempPath = System.IO.Path.GetTempPath() + System.Guid.NewGuid();

            Directory.CreateDirectory(tempPath);
            try
            {
                string projFileName = Path.Combine(tempPath, SqlSync.SqlBuild.XmlFileNames.MainProjectFile);

                for (int i = 0; i < rebuildData.Count; i++)
                {
                    File.WriteAllText(Path.Combine(tempPath, rebuildData[i].ScriptFileName), rebuildData[i].ScriptText);
                }

                SqlSyncBuildData buildData = SqlBuildFileHelper.CreateShellSqlSyncBuildDataObject();
                buildData.AcceptChanges();

                if (!SqlBuildFileHelper.PackageProjectFileIntoZip(buildData, tempPath, buildFileName))
                {
                    return(false);
                }

                if (!ZipHelper.UnpackZipPackage(tempPath, buildFileName, false))
                {
                    return(false);
                }

                for (int i = 0; i < rebuildData.Count; i++)
                {
                    SqlBuildFileHelper.AddScriptFileToBuild(ref buildData,
                                                            projFileName,
                                                            rebuildData[i].ScriptFileName,
                                                            rebuildData[i].Sequence + 1,
                                                            string.Empty,
                                                            true,
                                                            true,
                                                            rebuildData[i].Database,
                                                            false,
                                                            buildFileName,
                                                            false,
                                                            false,
                                                            System.Environment.UserName,
                                                            defaultTimeout,
                                                            rebuildData[i].ScriptId,
                                                            rebuildData[i].Tag);
                }

                SqlBuildFileHelper.SaveSqlBuildProjectFile(ref buildData, projFileName, buildFileName);

                return(true);
            }
            finally
            {
                if (Directory.Exists(tempPath))
                {
                    Directory.Delete(tempPath, true);
                }
            }
        }
        public void CalculateBuildPackageSHA1_CompareMethodologyTest()
        {
            //Set up directory and files...
            string projectFileExtractionPath = Path.GetTempPath() + Guid.NewGuid().ToString() + "\\";

            if (!Directory.Exists(projectFileExtractionPath))
            {
                Directory.CreateDirectory(projectFileExtractionPath);
            }

            string file1 = "File1.sql";

            File.WriteAllText(projectFileExtractionPath + file1, Properties.Resources.CreateDatabaseScript);

            string file2 = "File2.sql";

            File.WriteAllText(projectFileExtractionPath + file2, Properties.Resources.CreateTestTablesScript);

            string file3 = "File3.sql";

            File.WriteAllText(projectFileExtractionPath + file3, Properties.Resources.LoggingTable);


            SqlSyncBuildData buildData = SqlBuildFileHelper.CreateShellSqlSyncBuildDataObject();

            SqlSyncBuildData.ScriptRow row1 = buildData.Script.NewScriptRow();
            row1.BuildOrder           = 1;
            row1.FileName             = file1;
            row1.StripTransactionText = true;

            SqlSyncBuildData.ScriptRow row2 = buildData.Script.NewScriptRow();
            row2.BuildOrder           = 2;
            row2.FileName             = file2;
            row2.StripTransactionText = true;

            SqlSyncBuildData.ScriptRow row3 = buildData.Script.NewScriptRow();
            row3.BuildOrder           = 3;
            row3.FileName             = file3;
            row3.StripTransactionText = true;

            buildData.Script.Rows.Add(row1);
            buildData.Script.Rows.Add(row2);
            buildData.Script.Rows.Add(row3);


            string fromPath = SqlBuildFileHelper.CalculateBuildPackageSHA1SignatureFromPath(projectFileExtractionPath, buildData);


            ScriptBatchCollection batch = SqlBuildHelper.LoadAndBatchSqlScripts(buildData, projectFileExtractionPath);
            string fromBatch            = SqlBuildFileHelper.CalculateBuildPackageSHA1SignatureFromBatchCollection(batch);

            if (Directory.Exists(projectFileExtractionPath))
            {
                Directory.Delete(projectFileExtractionPath, true);
            }

            Assert.AreEqual(fromPath, fromBatch);
        }
        public void PackageSbxFileIntoSbmFileTest_EmptySbxName()
        {
            string sbxBuildControlFileName = string.Empty;
            string sbmProjectFileName      = @"C:\test.sbm";
            bool   expected = false;
            bool   actual;

            actual = SqlBuildFileHelper.PackageSbxFileIntoSbmFile(sbxBuildControlFileName, sbmProjectFileName);
            Assert.AreEqual(expected, actual);
        }
        public void CreateShellSqlSyncBuildDataObjectTest()
        {
            SqlSyncBuildData actual;

            actual = SqlBuildFileHelper.CreateShellSqlSyncBuildDataObject();
            Assert.IsNotNull(actual);
            Assert.AreEqual(1, actual.SqlSyncBuildProject.Rows.Count);
            Assert.AreEqual(1, actual.Scripts.Rows.Count);
            Assert.AreEqual(1, actual.Builds.Rows.Count);
            Assert.AreEqual(false, actual.SqlSyncBuildProject[0].ScriptTagRequired);
        }
        public void CalculateBuildPackageSHA1SignatureFromPathTest_GetHashSuccessfully()
        {
            //Set up directory and files...
            string projectFileExtractionPath = Path.GetTempPath() + Guid.NewGuid().ToString() + "\\";

            if (!Directory.Exists(projectFileExtractionPath))
            {
                Directory.CreateDirectory(projectFileExtractionPath);
            }

            string file1 = "File1.sql";

            File.WriteAllText(projectFileExtractionPath + file1, Properties.Resources.CreateDatabaseScript);

            string file2 = "File2.sql";

            File.WriteAllText(projectFileExtractionPath + file2, Properties.Resources.CreateTestTablesScript);

            string file3 = "File3.sql";

            File.WriteAllText(projectFileExtractionPath + file3, Properties.Resources.LoggingTable);


            SqlSyncBuildData buildData = SqlBuildFileHelper.CreateShellSqlSyncBuildDataObject();

            SqlSyncBuildData.ScriptRow row1 = buildData.Script.NewScriptRow();
            row1.BuildOrder = 1;
            row1.FileName   = file1;

            SqlSyncBuildData.ScriptRow row2 = buildData.Script.NewScriptRow();
            row2.BuildOrder = 2;
            row2.FileName   = file2;

            SqlSyncBuildData.ScriptRow row3 = buildData.Script.NewScriptRow();
            row3.BuildOrder = 3;
            row3.FileName   = file3;

            buildData.Script.Rows.Add(row1);
            buildData.Script.Rows.Add(row2);
            buildData.Script.Rows.Add(row3);

            string expected = "4E0F54A4BA40DC62A78822B20C7D83713CE4F766";
            string actual;

            actual = SqlBuildFileHelper.CalculateBuildPackageSHA1SignatureFromPath(projectFileExtractionPath, buildData);

            if (Directory.Exists(projectFileExtractionPath))
            {
                Directory.Delete(projectFileExtractionPath, true);
            }

            Assert.AreEqual(expected, actual);
        }
        public void GetIntertedIndexValuesTest_DecimalValues()
        {
            double        floor       = .9;
            double        ceiling     = 1.1;
            int           insertCount = 3;
            List <double> actual;

            actual = SqlBuildFileHelper.GetInsertedIndexValues(floor, ceiling, insertCount);
            Assert.AreEqual(0.94, actual[0]);
            Assert.AreEqual(0.98, actual[1]);
            Assert.AreEqual(1.02, actual[2]);
        }
        public void GetIntertedIndexValuesTest_TenthValues()
        {
            double        floor       = .9;
            double        ceiling     = 3.1;
            int           insertCount = 3;
            List <double> actual;

            actual = SqlBuildFileHelper.GetInsertedIndexValues(floor, ceiling, insertCount);
            Assert.AreEqual(1.1, actual[0]);
            Assert.AreEqual(1.2, actual[1]);
            Assert.AreEqual(1.3, actual[2]);
        }
        public void GetIntertedIndexValuesTest_WholeValuesPerfectFit()
        {
            double        floor       = 1;
            double        ceiling     = 5;
            int           insertCount = 3;
            List <double> actual;

            actual = SqlBuildFileHelper.GetInsertedIndexValues(floor, ceiling, insertCount);
            Assert.AreEqual(2, actual[0]);
            Assert.AreEqual(3, actual[1]);
            Assert.AreEqual(4, actual[2]);
        }
 public SqlSyncBuildData CreateSqlSyncSqlBuildDataObject()
 {
     try
     {
         SqlSyncBuildData data = SqlBuildFileHelper.CreateShellSqlSyncBuildDataObject();
         return(data);
     }
     catch
     {
         return(null);
     }
 }
        public void PackageSbxFilesIntoSbmFilesTest_FailDirectoryIsEmptyString()
        {
            string directoryName = String.Empty;

            string        message;
            string        messageExpected = "Unable to package SBX files. Source directory parameter is empty";
            List <string> actual;

            actual = SqlBuildFileHelper.PackageSbxFilesIntoSbmFiles(directoryName, out message);

            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(0, actual.Count);
        }
        public void PackageSbxFilesIntoSbmFilesTest_FailDirectoryDoesntExist()
        {
            string directoryName = @"C:\" + Guid.NewGuid().ToString();

            string        message;
            string        messageExpected = String.Format("Unable to package SBX files. The specified source directory '{0}' does not exist.", directoryName);
            List <string> actual;

            actual = SqlBuildFileHelper.PackageSbxFilesIntoSbmFiles(directoryName, out message);

            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(0, actual.Count);
        }
        public void CleanProjectFileForRemoteExecutionTest_CleanOutUnitTest()
        {
            Initialization init = GetInitializationObject();

            //Create the build package...
            SqlSyncBuildData buildData = init.CreateSqlSyncSqlBuildDataObject();

            init.AddInsertScript(ref buildData, true);
            init.AddFailureScript(ref buildData, true, true);
            foreach (SqlSyncBuildData.ScriptRow row in buildData.Script)
            {
                row.FileName = Path.GetFileName(row.FileName);
            }

            //Add in code review rows
            buildData.CodeReview.AddCodeReviewRow(
                Guid.NewGuid(),
                buildData.Script[0],
                DateTime.Now,
                "Reviewer",
                1,
                "Comment",
                "12345",
                "AABBCCDD",
                "EEFFGGHHII");

            buildData.AcceptChanges();

            string zipFileName = init.GetTrulyUniqueFile();

            string path            = Path.GetDirectoryName(zipFileName);
            string projectFileName = Path.Combine(path, XmlFileNames.MainProjectFile);

            buildData.WriteXml(projectFileName);
            SqlBuildFileHelper.PackageProjectFileIntoZip(buildData, path, zipFileName, false);

            byte[] expected = File.ReadAllBytes(zipFileName);
            byte[] actual;

            SqlSyncBuildData cleanedBuildData;

            actual = SqlBuildFileHelper.CleanProjectFileForRemoteExecution(zipFileName, out cleanedBuildData);
            Assert.IsTrue(actual.Length >= 1200);  //can't get exact length due to variations in guids and dates.
            Assert.IsTrue(cleanedBuildData.GetXml().ToString().Length > 100);
            Assert.IsTrue(buildData.GetXml().ToString().Length > cleanedBuildData.GetXml().ToString().Length);

            Assert.IsTrue(cleanedBuildData.ScriptRun.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.Build.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.CodeReview.Rows.Count == 0);
            Assert.AreEqual(buildData.Script.Rows.Count, cleanedBuildData.Script.Rows.Count);
        }
        public void UpdateObsoleteXmlNamespaceTest()
        {
            Initialization init     = GetInitializationObject();
            string         fileName = init.GetTrulyUniqueFile();

            File.WriteAllText(fileName, Properties.Resources.XmlWithInvalidNamespace);

            bool actual = SqlBuildFileHelper.UpdateObsoleteXmlNamespace(fileName);

            Assert.AreEqual(true, actual);

            string contents = File.ReadAllText(fileName);

            Assert.IsTrue(contents.Contains("xmlns=\"http://schemas.mckechney.com/"));
        }
示例#18
0
        internal static bool ValidateLocalToEnterprise(string localFilePath, string enterpriseFilePath)
        {
            if (!File.Exists(localFilePath))
            {
                log.LogInformation($"Unable to validate local default script. File does not exist at {localFilePath}");
                return(false);
            }

            if (!File.Exists(enterpriseFilePath))
            {
                log.LogWarning($"Unable to validate enterprise default script. File does not exist at {enterpriseFilePath}");
                return(true);
            }

            string localHash = string.Empty;

            try
            {
                SqlBuildFileHelper.GetSHA1Hash(new string[] { File.ReadAllText(localFilePath) }, out localHash);
                log.LogDebug($"Local file name and hash: {localFilePath} | {localHash}");
            }
            catch (Exception exe)
            {
                log.LogError(exe, $"Unable to get file hash on local default script: {localFilePath}");
            }


            string enterpriseHash = string.Empty;

            try
            {
                SqlBuildFileHelper.GetSHA1Hash(new string[] { File.ReadAllText(enterpriseFilePath) }, out enterpriseHash);
                log.LogDebug($"Enterprise file name and hash: {enterpriseFilePath} | {enterpriseHash}");
            }
            catch (Exception exe)
            {
                log.LogError(exe, $"Unable to get file hash on enterprise default script: {enterpriseFilePath}");
            }

            bool match = localHash == enterpriseHash;

            if (!match)
            {
                log.LogDebug($"File mismatch found: {enterpriseHash} <--> {localHash}");
            }

            return(match);
        }
示例#19
0
        private void removeSelectedScriptsFromTheLeftFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //TODO: finish real delete!
            if (lstFiles.SelectedItems.Count == 0)
            {
                return;
            }

            this.Cursor = Cursors.WaitCursor;
            StringBuilder sb = new StringBuilder("Are you sure you want to remove the follow file(s)?\r\n\r\n");;

            for (int i = 0; i < lstFiles.SelectedItems.Count; i++)
            {
                sb.Append("  " + ((FileCompareResults)lstFiles.SelectedItems[i].Tag).LeftScriptRow.FileName + "\r\n");
            }


            if (DialogResult.No == MessageBox.Show(sb.ToString(), "Delete Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Warning))
            {
                this.Cursor = Cursors.Default;
                return;
            }


            //Get list of rows to remove then remove them.
            SqlSyncBuildData.ScriptRow[] rows = new SqlSyncBuildData.ScriptRow[lstFiles.SelectedItems.Count];
            for (int i = 0; i < lstFiles.SelectedItems.Count; i++)
            {
                FileCompareResults results = (FileCompareResults)lstFiles.SelectedItems[i].Tag;
                rows[i] = results.LeftScriptRow;
            }
            //TODO: Check for delete from an SBX file
            if (!SqlBuildFileHelper.RemoveScriptFilesFromBuild(ref this.buildData, Path.Combine(this.leftTempFilePath, XmlFileNames.MainProjectFile), this.leftZipFilePath, rows, true))
            {
                MessageBox.Show("Unable to remove file from list. Please try again", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


            if (lstFiles.SelectedItems.Count > 0)
            {
                this.refreshProjectList = true;
            }


            btnCompare_Click(null, EventArgs.Empty);

            this.Cursor = Cursors.Default;
        }
        public void PackageSbxFileIntoSbmFileTest_PreExistingSbmFile()
        {
            string sbxBuildControlFileName = Path.GetTempFileName();
            string sbmProjectFileName      = @"C:\test.sbm";
            bool   expected = false;
            bool   actual;

            actual = SqlBuildFileHelper.PackageSbxFileIntoSbmFile(sbxBuildControlFileName, sbmProjectFileName);

            if (File.Exists(sbxBuildControlFileName))
            {
                File.Delete(sbmProjectFileName);
            }

            Assert.AreEqual(expected, actual);
        }
        public void PackageSbxFilesIntoSbmFilesTest_FailNoSbx()
        {
            string directoryName = Path.GetTempPath() + Guid.NewGuid().ToString();

            Directory.CreateDirectory(directoryName);

            string message         = string.Empty;
            string messageExpected = String.Format("No SBX files found in source directory '{0}' or any of it's subdirectories", directoryName);

            List <string> actual;

            actual = SqlBuildFileHelper.PackageSbxFilesIntoSbmFiles(directoryName, out message);
            Directory.Delete(directoryName, true);
            Assert.AreEqual(messageExpected, message);
            Assert.AreEqual(0, actual.Count);
        }
        public void CleanProjectFileForRemoteExecutionTest_FileNotExist()
        {
            string fileName = string.Empty;

            byte[]           expected = new byte[0];
            byte[]           actual;
            SqlSyncBuildData cleanedBuildData;

            actual = SqlBuildFileHelper.CleanProjectFileForRemoteExecution(fileName, out cleanedBuildData);
            Assert.IsTrue(actual.Length == 0);
            Assert.AreEqual(expected.Length, actual.Length);
            Assert.AreEqual(81, cleanedBuildData.GetXml().Length); //The size of an "empty" build data object

            Assert.IsTrue(cleanedBuildData.ScriptRun.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.Build.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.CodeReview.Rows.Count == 0);
        }
        public void CleanProjectFileForRemoteExecutionTest_CleanOutScriptRunRowsTest()
        {
            Initialization init = GetInitializationObject();

            //Create the build package...
            SqlSyncBuildData buildData = init.CreateSqlSyncSqlBuildDataObject();

            init.AddInsertScript(ref buildData, true);
            init.AddInsertScript(ref buildData, true);
            init.AddInsertScript(ref buildData, true);
            init.AddFailureScript(ref buildData, true, true);
            foreach (SqlSyncBuildData.ScriptRow row in buildData.Script)
            {
                row.FileName = Path.GetFileName(row.FileName);
            }

            buildData.Builds.AddBuildsRow((SqlSyncBuildData.SqlSyncBuildProjectRow)buildData.SqlSyncBuildProject.Rows[0]);
            buildData.Build.AddBuildRow("Script", "Development", DateTime.Now, DateTime.Now, "Server", "Committed", Guid.NewGuid().ToString(), "user", buildData.Builds[0]);
            buildData.ScriptRun.AddScriptRunRow("HASH", "Committed", "FileName", 2.2, DateTime.Now, DateTime.Now, true, "Database", Guid.NewGuid().ToString(), (SqlSyncBuildData.BuildRow)buildData.Build[0]);


            buildData.AcceptChanges();

            string zipFileName = init.GetTrulyUniqueFile();

            string path            = Path.GetDirectoryName(zipFileName);
            string projectFileName = Path.Combine(path, XmlFileNames.MainProjectFile);

            buildData.WriteXml(projectFileName);
            SqlBuildFileHelper.PackageProjectFileIntoZip(buildData, path, zipFileName, false);

            byte[] expected = File.ReadAllBytes(zipFileName);
            byte[] actual;

            SqlSyncBuildData cleanedBuildData;

            actual = SqlBuildFileHelper.CleanProjectFileForRemoteExecution(zipFileName, out cleanedBuildData);
            Assert.IsTrue(2000 <= actual.Length);  //can't get exact length due to variations in guids and dates.
            Assert.IsTrue(cleanedBuildData.GetXml().ToString().Length > 100);
            Assert.IsTrue(buildData.GetXml().ToString().Length > cleanedBuildData.GetXml().ToString().Length);

            Assert.IsTrue(cleanedBuildData.ScriptRun.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.Build.Rows.Count == 0);
            Assert.IsTrue(cleanedBuildData.CodeReview.Rows.Count == 0);
            Assert.AreEqual(buildData.Script.Rows.Count, cleanedBuildData.Script.Rows.Count);
        }
        public void PackageSbxFileIntoSbmFileTest_DontPassSbmName_Fail()
        {
            string folder = Path.GetTempPath() + Guid.NewGuid().ToString();

            Directory.CreateDirectory(folder);

            string sbxBuildControlFileName = Path.Combine(folder, "sbx_package_tester.sbx");

            File.WriteAllBytes(sbxBuildControlFileName, Properties.Resources.sbx_package_tester);

            string expected = string.Empty;
            string actual;

            actual = SqlBuildFileHelper.PackageSbxFileIntoSbmFile(sbxBuildControlFileName);
            Directory.Delete(folder, true);

            Assert.AreEqual(expected, actual);
        }
        private void BackoutPackageForm_Load(object sender, EventArgs e)
        {
            try
            {
                SqlBuildFileHelper.GetFileDataForObjectUpdates(ref this.sourceBuildData, this.extractedProjectFile, out initialCanUpdateList, out manualScriptsCanNotUpdate);

                string pleaseSelect = "[Please select a {0} via Action --> Change SQL Server Connection menu]";
                lblDatabaseSetting.Text = this.connData.DatabaseName;
                lblServerSetting.Text   = this.connData.SQLServerName;

                if (lblDatabaseSetting.Text.Length == 0)
                {
                    lblDatabaseSetting.Text = String.Format(pleaseSelect, "database");
                }

                if (lblServerSetting.Text.Length == 0)
                {
                    lblServerSetting.Text = String.Format(pleaseSelect, "server");
                }

                txtBackoutPackage.Text = BackoutPackage.GetDefaultPackageName(this.sourceSbmFullFileName);

                SetSourceServerAndDatabase(this.connData.SQLServerName, this.connData.DatabaseName);

                if (this.connData.SQLServerName.Length > 0 && this.connData.DatabaseName.Length > 0 && !this.bgCheckTargetObjects.IsBusy)
                {
                    bgCheckTargetObjects.RunWorkerAsync(new string[] { this.connData.SQLServerName, this.connData.DatabaseName });
                }
                else
                {
                    BindListViews(this.initialCanUpdateList, this.notPresentOnTarget, this.manualScriptsCanNotUpdate);
                }
            }
            catch (Exception exe)
            {
                log.LogError(exe, "Error loading the Backout Package form");
                MessageBox.Show("Error loading form. Please see log file for details", "Whoops!", MessageBoxButtons.OK, MessageBoxIcon.Error);

                this.bgCheckTargetObjects = null;
                this.bgMakeBackout        = null;
                this.Close();
            }
        }
        public void PackageSbxFilesIntoSbmFilesTest_FailBadSbx()
        {
            string directoryName = Path.GetTempPath() + Guid.NewGuid().ToString();

            Directory.CreateDirectory(directoryName);

            string sbxBuildControlFileName = Path.Combine(directoryName, "sbx_package_tester.sbx");

            File.WriteAllText(sbxBuildControlFileName, "bad contents");
            string message         = string.Empty;
            string messageExpected = string.Empty;

            List <string> actual;

            actual = SqlBuildFileHelper.PackageSbxFilesIntoSbmFiles(directoryName, out message);
            Directory.Delete(directoryName, true);
            Assert.IsTrue(message.StartsWith("Error packaging SBX file"));
            Assert.AreEqual(0, actual.Count);
        }
示例#27
0
        public static DacpacDeltasStatus UpdateBuildRunDataForDacPacSync(ref SqlBuildRunData runData, string targetServerName, string targetDatabase, AuthenticationType authType, string userName, string password, string workingDirectory, string buildRevision, int defaultScriptTimeout, bool allowObjectDelete)
        {
            string tmpDacPacName = Path.Combine(workingDirectory, targetDatabase + ".dacpac");

            if (!ExtractDacPac(targetDatabase, targetServerName, authType, userName, password, tmpDacPacName))
            {
                return(DacpacDeltasStatus.ExtractionFailure);
            }

            string sbmFileName;

            var stat = CreateSbmFromDacPacDifferences(runData.PlatinumDacPacFileName, tmpDacPacName, false, buildRevision, defaultScriptTimeout, allowObjectDelete, out sbmFileName);

            if (stat != DacpacDeltasStatus.Success)
            {
                return(stat);
            }


            string projectFilePath = Path.GetTempPath() + Guid.NewGuid().ToString();
            string projectFileName = null;
            string result;

            log.LogInformation("Preparing build package for processing");
            if (!SqlBuildFileHelper.ExtractSqlBuildZipFile(sbmFileName, ref workingDirectory, ref projectFilePath, ref projectFileName, false, false, out result))
            {
                return(DacpacDeltasStatus.SbmProcessingFailure);
            }

            SqlSyncBuildData buildData;

            if (!SqlBuildFileHelper.LoadSqlBuildProjectFile(out buildData, projectFileName, false))
            {
                return(DacpacDeltasStatus.SbmProcessingFailure);
            }

            runData.BuildData       = buildData;
            runData.BuildFileName   = sbmFileName;
            runData.ProjectFileName = projectFileName;

            log.LogInformation("Build package ready");
            return(DacpacDeltasStatus.Success);
        }
        public void PackageSbxFileIntoSbmFileTest_GoodSbxNoScripts()
        {
            string folder = Path.GetTempPath() + Guid.NewGuid().ToString();

            Directory.CreateDirectory(folder);

            string sbxFile = Path.Combine(folder, "sbx_package_tester.sbx");

            File.WriteAllBytes(sbxFile, Properties.Resources.sbx_package_tester);


            string sbmProjectFileName = Path.Combine(folder, @"test.sbm");
            bool   expected           = false;
            bool   actual;

            actual = SqlBuildFileHelper.PackageSbxFileIntoSbmFile(sbxFile, sbmProjectFileName);

            Directory.Delete(folder, true);

            Assert.AreEqual(expected, actual);
        }
        public void PackageSbxFileIntoSbmFileTest_DontPassSbmName_Success()
        {
            string folder = Path.GetTempPath() + Guid.NewGuid().ToString();

            Directory.CreateDirectory(folder);

            string sbxBuildControlFileName = Path.Combine(folder, "sbx_package_tester.sbx");
            string script1 = Path.Combine(folder, "CreateTestTablesScript.sql");
            string script2 = Path.Combine(folder, "LoggingTable.sql");

            File.WriteAllBytes(sbxBuildControlFileName, Properties.Resources.sbx_package_tester);
            File.WriteAllText(script1, Properties.Resources.CreateTestTablesScript);
            File.WriteAllText(script2, Properties.Resources.LoggingTable);

            string expected = Path.Combine(Path.GetDirectoryName(sbxBuildControlFileName), Path.GetFileNameWithoutExtension(sbxBuildControlFileName) + ".sbm");
            string actual;

            actual = SqlBuildFileHelper.PackageSbxFileIntoSbmFile(sbxBuildControlFileName);
            Directory.Delete(folder, true);

            Assert.AreEqual(expected, actual);
        }
        public void CalculateScriptSHA1_CompareResults()
        {
            string script = @"/* 
Source Server:	localhost\sqlexpress
Source Db:	SqlBuildTest_SyncTest1
Process Date:	7/21/2014 1:36:55 PM
Object Scripted:dbo.SyncTestTable
Object Type:	Table
Scripted By:	mmckechn
Include Permissions: True
Script as ALTER: True
Script PK with Table:False
*/
SET ANSI_NULLS ON
GO


SET QUOTED_IDENTIFIER ON
GO


IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SyncTestTable]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[SyncTestTable](
	[ColumnTable1] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
	[ColumnTable2] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
END
";

            string[] arrScripts = SqlBuildHelper.ReadBatchFromScriptText(script, true, false).ToArray();
            string   hashFromArray;

            SqlBuildFileHelper.GetSHA1Hash(arrScripts, out hashFromArray);
            string hashFromString = SqlBuildFileHelper.GetSHA1Hash(script.ClearTrailingCarriageReturn());

            Assert.AreEqual(hashFromString, hashFromArray);
        }