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); }
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/")); }
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); }
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); }
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); }