Example #1
0
        internal static TaskManager SetupTaskManager(string mode)
        {
            var taskManager = new TaskManager();
            taskManager.AddTask(new GetVersion());
            taskManager.AddTask(new IncrementVersionNumberTask());
            taskManager.AddTask(new IncrementVersionNumbersInFiles());
            taskManager.AddTask(new CreatePushBatFile());

            // Get working directory
            var workingDirectory = Assembly.GetAssembly(typeof(Pusher)).Location;
            workingDirectory = new DirectoryInfo(workingDirectory).Parent.Parent.Parent.Parent.Parent.FullName;
            taskManager.TaskContext.Data["WorkingDirectory"] = workingDirectory;

            // Get CurrentVersion.txt relative path
            var curVerRelPath = Path.Combine("octgnFX", "Octgn");
            curVerRelPath = Path.Combine(curVerRelPath, "CurrentVersion.txt");
            taskManager.TaskContext.Data["CurrentVersionFileRelativePath"] = curVerRelPath;

            // Load all of our app.config settings into the data section.
            for (var i = 0; i < ConfigurationManager.AppSettings.Count;i++ )
            {
                taskManager.TaskContext.Data[ConfigurationManager.AppSettings.AllKeys[i]] =
                    ConfigurationManager.AppSettings[i];
            }

            taskManager.TaskContext.Data["Mode"] = mode;

            return taskManager;
        }
Example #2
0
        public void Run()
        {
            var taskManager = new TaskManager();
            var task = A.Fake<ITask>();
            var taskBad = A.Fake<ITask>();
            var taskBadContinue = A.Fake<ITask>();

            A.CallTo(() => taskBad.Run(A<object>.Ignored, A<ITaskContext>.Ignored)).Throws<Exception>();
            A.CallTo(() => taskBadContinue.Run(A<object>.Ignored, A<ITaskContext>.Ignored)).Throws<ContinuableException>();

            // expect a good run
            taskManager.AddTask(task);
            Assert.DoesNotThrow(taskManager.Run);

            // Bad run
            taskManager.Tasks[0] = taskBad;
            Assert.Throws<Exception>(taskManager.Run);

            // Bad containable run.
            taskManager.Tasks[0] = taskBadContinue;
            Assert.DoesNotThrow(taskManager.Run);

            // Good task, bad task containable, then bad task, then good task.
            taskManager.Tasks[0] = task;
            taskManager.AddTask(taskBadContinue);
            taskManager.AddTask(taskBad);
            taskManager.AddTask(task);
            Assert.Throws<Exception>(taskManager.Run);
            A.CallTo(()=>task.Run(A<object>.Ignored,A<ITaskContext>.Ignored)).MustHaveHappened(Repeated.Exactly.Times(2));
            A.CallTo(()=>taskBadContinue.Run(A<object>.Ignored,A<ITaskContext>.Ignored)).MustHaveHappened(Repeated.Exactly.Times(2));
            A.CallTo(()=>taskBad.Run(A<object>.Ignored,A<ITaskContext>.Ignored)).MustHaveHappened(Repeated.Exactly.Times(2));
        }
Example #3
0
 public void Constructor()
 {
     var taskManager = new TaskManager();
     Assert.NotNull(taskManager.TaskContext);
     Assert.NotNull(taskManager.Tasks);
     Assert.AreEqual(0, taskManager.Tasks.Count);
 }
Example #4
0
        public void AddTask()
        {
            var taskManager = new TaskManager();
            var task = A.Fake<ITask>();

            Assert.AreEqual(0,taskManager.Tasks.Count);
            taskManager.AddTask(task);
            Assert.AreEqual(1,taskManager.Tasks.Count);
            Assert.AreEqual(task,taskManager.Tasks[0]);
        }
Example #5
0
        public static int Main(string[] args)
        {
            Log.InfoFormat("Arguments: {0}",String.Join(" ",args));
            if (args[0].ToLower() == "setup")
            {
                Log.Info("Doing setup tasks");

                var mode = args.FirstOrDefault(x => x.ToLower().StartsWith("/m"));
                if(string.IsNullOrWhiteSpace(mode))
                    throw new ArgumentException("/mTEST or /mRELEASE needs to be specified.");
                mode = mode.Substring(2);
                Log.InfoFormat("Doing release for {0} mode",mode);

                TaskManager = SetupTaskManager(mode);

                TaskManager.Run();
                PauseForKey();
                return 0;
            }
            Log.Error("No arguments");
            return -1;
        }
Example #6
0
        public void Stop()
        {
            var taskManager = new TaskManager();
            var task1 = A.Fake<ITask>();
            var task2 = A.Fake<ITask>();

            A.CallTo(() => task1.Run(A<object>.Ignored, A<ITaskContext>.Ignored)).Invokes(() => Thread.Sleep(1000));

            taskManager.AddTask(task1);
            taskManager.AddTask(task2);

            var finishedCount = 0;

            new Action(taskManager.Run)
                .BeginInvoke(
                ar =>
                    {
                        A.CallTo(() => task1.Run(A<object>.Ignored, A<ITaskContext>.Ignored)).MustHaveHappened(Repeated.Exactly.Once);
                        A.CallTo(() => task2.Run(A<object>.Ignored, A<ITaskContext>.Ignored)).MustHaveHappened(Repeated.Exactly.Once);
                        finishedCount++;
                    },
                null);
            while(finishedCount == 0)
                Thread.Sleep(10);
            new Action(taskManager.Run)
                .BeginInvoke(
                ar =>
                    {
                        A.CallTo(() => task1.Run(A<object>.Ignored, A<ITaskContext>.Ignored)).MustHaveHappened(Repeated.Exactly.Times(2));
                        A.CallTo(() => task2.Run(A<object>.Ignored, A<ITaskContext>.Ignored)).MustHaveHappened(Repeated.Exactly.Once);
                        finishedCount++;
                    },
                null);
            Thread.Sleep(100);
            taskManager.Stop();
            while(finishedCount ==1)
                Thread.Sleep(10);
        }