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 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 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);
        }
예제 #4
0
        public void ProcessBuildTest_RollbackWithThreeRetries()
        {
            Initialization init = GetInitializationObject();

            init.TableLockingLoopCount = 10000000;
            SqlSyncBuildData buildData = init.CreateSqlSyncSqlBuildDataObject();

            init.AddScriptForProcessBuild(ref buildData, true, 1);

            SqlBuildHelper  target  = init.CreateSqlBuildHelper(buildData);
            SqlBuildRunData runData = init.GetSqlBuildRunData_TransactionalNotTrial(buildData);

            BackgroundWorker      bgWorker        = init.GetBackgroundWorker();
            DoWorkEventArgs       e               = new DoWorkEventArgs(null);
            string                serverName      = init.serverName;
            bool                  isMultiDbRun    = false;
            ScriptBatchCollection scriptBatchColl = init.GetScriptBatchCollectionForProcessBuild();
            int allowableTimeoutRetries           = 3;

            Thread THRInfinite = null;

            try
            {
                THRInfinite = new Thread(new ParameterizedThreadStart(StartInfiniteLockingThread));
                THRInfinite.Start(init);

                string expected = BuildItemStatus.RolledBackAfterRetries;
                SqlSyncBuildData.BuildRow actual;
                actual = target.ProcessBuild(runData, bgWorker, e, serverName, isMultiDbRun, scriptBatchColl, allowableTimeoutRetries);
                Assert.AreEqual(expected, actual.FinalStatus);
            }
            finally
            {
                if (THRInfinite != null)
                {
                    THRInfinite.Interrupt();
                }
            }
        }
예제 #5
0
        public void ProcessBuildTest_CommitWithRetriesNotUsed()
        {
            Initialization   init      = GetInitializationObject();
            SqlSyncBuildData buildData = init.CreateSqlSyncSqlBuildDataObject();

            init.AddScriptForProcessBuild(ref buildData, true, 20);

            SqlBuildHelper        target          = init.CreateSqlBuildHelper(buildData);
            SqlBuildRunData       runData         = init.GetSqlBuildRunData_TransactionalNotTrial(buildData);
            BackgroundWorker      bgWorker        = init.GetBackgroundWorker();
            DoWorkEventArgs       e               = new DoWorkEventArgs(null);
            string                serverName      = init.serverName;
            bool                  isMultiDbRun    = false;
            ScriptBatchCollection scriptBatchColl = init.GetScriptBatchCollectionForProcessBuild();
            int allowableTimeoutRetries           = 3;

            string expected = BuildItemStatus.Committed;

            SqlSyncBuildData.BuildRow actual;
            actual = target.ProcessBuild(runData, bgWorker, e, serverName, isMultiDbRun, scriptBatchColl, allowableTimeoutRetries);
            Assert.AreEqual(expected, actual.FinalStatus);
        }