public void TestFailedMigrationBroadcast()
        {
            TestMigrationContext context = new TestMigrationContext();
            MigrationProcess process = new MigrationProcess();
            MigrationTask2 task = new MigrationTask2();

            task.ForceFail = true;
            process.MigrationStarted +=
                new MigrationProcess.MigrationStatusEventHandler(process_MigrationStarted);
            process.MigrationSuccessful +=
                new MigrationProcess.MigrationStatusEventHandler(process_MigrationSuccessful);
            process.MigrationFailed +=
                new MigrationProcess.MigrationStatusEventHandler(process_MigrationFailed);

            try
            {
                process.ApplyPatch(context, task, true);
            }
            catch (MigrationException me)
            {
                Assert.IsTrue(started, "'started' should be true");
                Assert.IsFalse(succeeded, "'succeeded' should be false");
                Assert.IsTrue(failed, "'failed' should be true");
                throw me;
            }
        }
Example #2
0
        public void DoMigrationsFromLevelOne()
        {
            TestMigrationContext context = new TestMigrationContext();
            MigrationProcess process = new MigrationProcess();
            //process.AddPatchResourceAssembly(typeof(MigrationTask1).Assembly.CodeBase);
            process.AddPatchResourceAssembly(typeof(MigrationTask1).Assembly.Location);
            process.DoMigrations(1, context);

            Assert.IsFalse(context.HasExecuted(new MigrationTask1().Name), "MigrationTask1 was not supposed to be run");
            Assert.IsTrue(context.HasExecuted(new MigrationTask2().Name), "MigrationTask2 was supposed to be run");
        }
Example #3
0
        public void DoMigrationsFromLevelOneHundred()
        {
            TestMigrationContext context = new TestMigrationContext();
            MigrationProcess process = new MigrationProcess();
            //process.AddPatchResourceAssembly(typeof(MigrationTask1).Assembly.CodeBase);
            process.AddPatchResourceAssembly(typeof(MigrationTask1).Assembly.Location);
            int count = process.DoMigrations(100, context);

            Assert.IsTrue(0 == count, "No migration tasks were supposed to be run on an up-to-date system");
            Assert.IsFalse(context.HasExecuted(new MigrationTask1().Name), "MigrationTask1 was not supposed to be run");
            Assert.IsFalse(context.HasExecuted(new MigrationTask2().Name), "MigrationTask2 was not supposed to be run");
        }
Example #4
0
        public void DoMigrationsFromLevelOneHundredReadOnly()
        {
            TestMigrationContext context = new TestMigrationContext();
            MigrationProcess process = new MigrationProcess();
            //process.AddPatchResourceAssembly(typeof(MigrationTask1).Assembly.CodeBase);
            process.AddPatchResourceAssembly(typeof(MigrationTask1).Assembly.Location);
            process.ReadOnly = true;
            int count = process.DoMigrations(100, context);

            Assert.AreEqual(0, count, "No migration tasks were supposed to be run on an up-to-date system in readonly mode");
            Assert.AreEqual(0, context.ExecutionLog.Count, "The execution log should not have recorded anything in readonly mode");
        }
Example #5
0
        public void GetNextPatchLevelNoTasks()
        {
            TestMigrationContext context = new TestMigrationContext();
            FakeSqlMigrationProcess process = new FakeSqlMigrationProcess();
            SqlScriptMigrationTaskSource taskSource = new SqlScriptMigrationTaskSource();
            process.AddPatchResourceDirectory(Directory.GetCurrentDirectory() + "\\..\\..\\sql\\empty-directory");
            process.AddMigrationTaskSource(taskSource);
            int nextLevel = process.NextPatchLevel;

            Assert.AreEqual(nextLevel, 1);
        }
Example #6
0
        public void DoPostPatchMigrationsReadOnly()
        {
            TestMigrationContext context = new TestMigrationContext();
            FakeSqlMigrationProcess process = new FakeSqlMigrationProcess();
            SqlScriptMigrationTaskSource taskSource = new SqlScriptMigrationTaskSource();
            process.AddPostPatchResourceAssembly(typeof(MigrationTask1).Assembly.Location);
            process.AddPostPatchResourceDirectory(Directory.GetCurrentDirectory() + "\\..\\..");
            process.AddMigrationTaskSource(taskSource);
            process.ReadOnly = true;
            int count = process.DoPostPatchMigrations(context);

            Assert.AreEqual(0, count, "No post-patch tasks were supposed to be run in readonly mode");
            Assert.AreEqual(0, context.ExecutionLog.Count, "The execution log should not have recorded anything in readonly mode");
        }
Example #7
0
        public void DoPostPatchMigrationsNoTasks()
        {
            TestMigrationContext context = new TestMigrationContext();
            FakeSqlMigrationProcess process = new FakeSqlMigrationProcess();
            SqlScriptMigrationTaskSource taskSource = new SqlScriptMigrationTaskSource();
            process.AddPostPatchResourceDirectory(Directory.GetCurrentDirectory() + "\\..\\..\\sql\\empty-directory");
            process.AddMigrationTaskSource(taskSource);
            int tasksRun = process.DoPostPatchMigrations(context);

            Assert.AreEqual(0, tasksRun);
        }
Example #8
0
        public void DoPostPatchMigrationsFromSqlFileAndClasses()
        {
            TestMigrationContext context = new TestMigrationContext();
            FakeSqlMigrationProcess process = new FakeSqlMigrationProcess();
            SqlScriptMigrationTaskSource taskSource = new SqlScriptMigrationTaskSource();
            process.AddPostPatchResourceAssembly(typeof(MigrationTask1).Assembly.Location);
            process.AddPostPatchResourceDirectory(Directory.GetCurrentDirectory() + "\\..\\..");
            process.AddMigrationTaskSource(taskSource);
            process.DoPostPatchMigrations(context);

            // There currently are 2 .NET code and 3 SQL patches for tests
            Assert.IsTrue(context.HasExecuted(new MigrationTask1().Name),
                "MigrationTask1 was supposed to be run");
            Assert.IsTrue(context.HasExecuted(new MigrationTask2().Name),
                "MigrationTask2 was supposed to be run");
            Assert.IsTrue(context.HasExecuted("patch0003_dummy_SQL_file"),
                "patch0003_dummy_SQL_file was supposed to be run");
            Assert.IsTrue(context.HasExecuted("patch0004_fourth_patch"),
                "patch0004_fourth_patch was supposed to be run");
            Assert.IsTrue(context.HasExecuted("patch0005_fifth_patch"),
                "patch0005_fifth_patch was supposed to be run");
        }
Example #9
0
        public void DoMigrationsFromSqlFile()
        {
            TestMigrationContext context = new TestMigrationContext();
            FakeSqlMigrationProcess process = new FakeSqlMigrationProcess();
            SqlScriptMigrationTaskSource taskSource = new SqlScriptMigrationTaskSource();
            process.AddPatchResourceDirectory(Directory.GetCurrentDirectory() + "\\..\\..");
            process.AddMigrationTaskSource(taskSource);
            process.DoMigrations(2, context);

            Assert.IsTrue(context.HasExecuted("patch0003_dummy_SQL_file"),
                "patch0003_dummy_SQL_file was supposed to be run");
            Assert.IsTrue(context.HasExecuted("patch0004_fourth_patch"),
                "patch0004_fourth_patch was supposed to be run");
            Assert.IsTrue(context.HasExecuted("patch0005_fifth_patch"),
                "patch0005_fifth_patch was supposed to be run");
        }
Example #10
0
        public void DoMigrationsFromLevelOneReadOnly()
        {
            TestMigrationContext context = new TestMigrationContext();
            MigrationProcess process = new MigrationProcess();
            //process.AddPatchResourceAssembly(typeof(MigrationTask1).Assembly.CodeBase);
            process.AddPatchResourceAssembly(typeof(MigrationTask1).Assembly.Location);
            process.ReadOnly = true;

            int count = -1;

            try
            {
                count = process.DoMigrations(1, context);
            }
            catch (MigrationException me)
            {
                Assert.AreEqual(-1, count, "No migration tasks were supposed to be run in readonly mode");
                Assert.AreEqual(0, context.ExecutionLog.Count, "The execution log should not have recorded anything in readonly mode");
                throw me;
            }
        }
        public void TestNoBroadcast()
        {
            TestMigrationContext context = new TestMigrationContext();
            MigrationProcess process = new MigrationProcess();
            MigrationTask1 task = new MigrationTask1();

            process.MigrationStarted +=
                new MigrationProcess.MigrationStatusEventHandler(process_MigrationStarted);
            process.MigrationSuccessful +=
                new MigrationProcess.MigrationStatusEventHandler(process_MigrationSuccessful);
            process.MigrationFailed +=
                new MigrationProcess.MigrationStatusEventHandler(process_MigrationFailed);
            process.ApplyPatch(context, task, false);

            Assert.IsFalse(started, "'started' should be false");
            Assert.IsFalse(succeeded, "'succeeded' should be false");
            Assert.IsFalse(failed, "'failed' should be false");
        }
        public void TestNoListeners()
        {
            TestMigrationContext context = new TestMigrationContext();
            MigrationProcess process = new MigrationProcess();
            MigrationTask1 task = new MigrationTask1();

            process.ApplyPatch(context, task, true);

            Assert.IsFalse(started, "'started' should be false");
            Assert.IsFalse(succeeded, "'succeeded' should be false");
            Assert.IsFalse(failed, "'failed' should be false");
        }