Пример #1
0
        public override void List(Action <string> output = null, Action <string> error = null)
        {
            try
            {
                StringBuilder workers = new StringBuilder();
                if (Arguments.Contains("job"))
                {
                    string  jobName = Arguments["job"];
                    JobConf jobConf = GetJobConf(jobName);

                    foreach (string workerName in jobConf.ListWorkerNames())
                    {
                        workers.AppendLine(workerName);
                    }
                }
                else
                {
                    JobManagerService.GetWorkerTypes().ForEach(wt => workers.AppendLine(wt));
                }

                OutLine(workers.ToString(), ConsoleColor.Cyan);
                Exit(0);
            }
            catch (Exception ex)
            {
                Message.PrintLine("Error listing workers: {0}", ConsoleColor.Magenta, ex.Message);
                Exit(1);
            }
        }
Пример #2
0
        public void JobShouldRunIfRunnerThreadIsRunning()
        {
            string            name = MethodBase.GetCurrentMethod().Name;
            JobManagerService jc   = GetTestJobConductor(name);

            jc.StopJobRunnerThread();
            jc.JobQueue.Clear();
            jc.StartJobRunnerThread();

            JobConf conf = jc.CreateJob(name);

            TestWorker.ValueToCheck = false;
            TestWorker worker = new TestWorker();

            conf.AddWorker(worker);
            Expect.IsFalse(TestWorker.ValueToCheck);

            bool?          finished = false;
            AutoResetEvent signal   = new AutoResetEvent(false);

            jc.WorkerFinished += (o, a) =>
            {
                Expect.IsTrue(TestWorker.ValueToCheck);
                finished = true;
                signal.Set();
            };

            jc.EnqueueJob(conf);
            signal.WaitOne(10000);
            Expect.IsTrue(finished == true);
        }
Пример #3
0
        public void JobsDirectoryShouldBeInAppDataFolder()
        {
            JobManagerService jobConductor = new JobManagerService();
            string            expected     = DataProvider.Current.GetAppDataDirectory(DefaultConfigurationApplicationNameProvider.Instance, "Jobs").FullName;

            Expect.AreEqual(expected, jobConductor.JobsDirectory);
        }
Пример #4
0
        public void ShouldBeAbleToRunJobWithSpecifiedStepNumber()
        {
            string name = MethodBase.GetCurrentMethod().Name;

            TestWorker.ValueToCheck     = false;
            StepTestWorker.ValueToCheck = false;
            JobManagerService jc      = GetTestJobConductor(name);
            string            jobName = "Job_" + name;

            jc.AddWorker(jobName, typeof(TestWorker).AssemblyQualifiedName, "TestWorker");
            jc.AddWorker(jobName, typeof(StepTestWorker).AssemblyQualifiedName, "StepTestWorker");

            Expect.IsFalse(TestWorker.ValueToCheck);
            Expect.IsFalse(StepTestWorker.ValueToCheck);
            bool?          finished = false;
            AutoResetEvent signal   = new AutoResetEvent(false);

            jc.JobFinished += (o, a) =>
            {
                Expect.IsFalse(TestWorker.ValueToCheck, "testworker value should have been false after job finished");
                Expect.IsTrue(StepTestWorker.ValueToCheck, "Step test worker value should have been true after job finished");
                finished = true;
                signal.Set();
            };

            JobConf conf = jc.GetJob(jobName);

            jc.RunJob(conf.CreateJob(), 1);
            signal.WaitOne(10000);
            Expect.IsTrue(finished.Value, "finished value should have been set");
        }
Пример #5
0
        public void JobConductorShouldCreateJobConf()
        {
            JobManagerService jc   = GetTestJobConductor(nameof(JobConductorShouldCreateJobConf));
            string            name = "JobConfTest_".RandomLetters(4);
            JobConf           conf = jc.CreateJob(name);
            string            path = Path.Combine(jc.JobsDirectory, conf.Name, conf.Name + ".job");

            Expect.IsTrue(File.Exists(path));
        }
Пример #6
0
        public void ExistsShouldBeTrueAfterCreate()
        {
            string            name        = MethodBase.GetCurrentMethod().Name;
            JobManagerService jc          = GetTestJobConductor(name);
            string            testJobName = name + "_JobName_".RandomLetters(4);

            jc.CreateJob(testJobName);
            Expect.IsTrue(jc.JobExists(testJobName));
        }
Пример #7
0
        public void JobManagerShouldCreateJobConfWithJobDirectorySet()
        {
            string            name    = MethodBase.GetCurrentMethod().Name;
            JobManagerService foreman = GetTestJobConductor(name);
            JobConf           conf    = foreman.CreateJobConf(name);

            Expect.AreEqual(name, conf.Name);
            Expect.IsTrue(conf.JobDirectory.StartsWith(foreman.JobsDirectory), "conf directory wasn't set correctly");
        }
Пример #8
0
        public void DeleteJobsDirectory()
        {
            JobManagerService svc = new JobManagerService();
            string            dir = svc.JobsDirectory;

            if (System.IO.Directory.Exists(dir))
            {
                System.IO.Directory.Delete(svc.JobsDirectory, true);
            }
        }
Пример #9
0
        public void CreateJobShouldThrowExceptionIfItExists()
        {
            string            name        = MethodBase.GetCurrentMethod().Name;
            JobManagerService jc          = GetTestJobConductor(name);
            string            testJobName = name + "_JobName_".RandomLetters(4);

            jc.CreateJob(testJobName);
            Expect.IsTrue(jc.JobExists(testJobName));
            Expect.Throws(() => jc.CreateJob(testJobName), "Should have thrown an exception but didn't");
        }
Пример #10
0
        public void AddWorkerShouldSetWorkerName()
        {
            string            name       = MethodBase.GetCurrentMethod().Name;
            JobManagerService jc         = GetTestJobConductor(name);
            string            workerName = "worker_" + name;
            string            jobName    = "Job_" + name;

            jc.AddWorker(jobName, typeof(TestWorker).AssemblyQualifiedName, workerName);
            Expect.IsTrue(jc.WorkerExists(jobName, workerName));
        }
Пример #11
0
        public void AddWorkerShouldCreateJob()
        {
            string            name    = MethodBase.GetCurrentMethod().Name;
            JobManagerService jc      = GetTestJobConductor(name);
            string            jobName = "Job_".RandomLetters(4);

            Expect.IsFalse(jc.JobExists(jobName));

            jc.AddWorker(jobName, typeof(TestWorker).AssemblyQualifiedName, "worker");

            Expect.IsTrue(jc.JobExists(jobName));
        }
Пример #12
0
        public void JobConductorShouldCreaetJobConf()
        {
            JobManagerService jc = new JobManagerService()
            {
                JobsDirectory = new DirectoryInfo(MethodBase.GetCurrentMethod().Name).FullName
            };
            string  name = "JobConfTest_".RandomLetters(4);
            JobConf conf = jc.CreateJob(name);
            string  path = Path.Combine(jc.JobsDirectory, conf.Name, conf.Name + ".job");

            Expect.IsTrue(File.Exists(path));
        }
Пример #13
0
        public void ShouldBeAbleToSaveAndGetSecurelyWithDefaultOverseer()
        {
            string            key   = "Key_".RandomLetters(4);
            string            value = "Value_".RandomLetters(4);
            JobManagerService svc   = new JobManagerService();

            svc.SecureSet(key, value);

            string validate = svc.SecureGet(key);

            Expect.AreEqual(value, validate);
        }
Пример #14
0
        private JobConf GetJobConf(string jobName)
        {
            JobConf jobConf = JobManagerService.GetJob(jobName, false);

            if (jobConf == null)
            {
                Message.PrintLine("The specified job was not found: {0}", ConsoleColor.Magenta, jobName);
                Exit(1);
            }

            return(jobConf);
        }
Пример #15
0
        public void GetJobShouldCreateNewJob()
        {
            string            name = MethodBase.GetCurrentMethod().Name;
            JobManagerService jc   = GetTestJobConductor(name);

            Expect.IsFalse(jc.JobExists(name));
            JobConf validate = jc.GetJob(name);

            Expect.IsNotNull(validate);
            Expect.AreEqual(name, validate.Name);
            Expect.IsTrue(jc.JobExists(validate.Name));
            Expect.IsTrue(File.Exists(validate.GetFilePath()));
        }
Пример #16
0
        public void AddWorkerShouldThrowArgumentNullException()
        {
            string            name = MethodBase.GetCurrentMethod().Name;
            JobManagerService jc   = GetTestJobConductor(name);

            Expect.Throws(() =>
            {
                jc.AddWorker("JobName", "noTypeByThisNameShouldBeFound".RandomLetters(4), "work_" + name);
            }, (ex) =>
            {
                ex.IsInstanceOfType <ArgumentNullException>("Exception wasn't the right type");
            }, "Should have thrown an exception but didn't");
        }
Пример #17
0
        private static JobManagerService GetTestJobConductor(string jobConductorName)
        {
            DirectoryInfo dir = new DirectoryInfo("JobConductor_" + jobConductorName);

            if (dir.Exists)
            {
                dir.Delete(true);
            }
            JobManagerService jc = new JobManagerService
            {
                JobsDirectory = dir.FullName
            };

            return(jc);
        }
Пример #18
0
        private static JobManagerService GetTestJobConductor(string jobManagerName)
        {
            DirectoryInfo dir = new DirectoryInfo(Path.Combine("./TestData", $"{nameof(JobManagerService)}_{jobManagerName}"));

            if (dir.Exists)
            {
                dir.Delete(true);
            }
            JobManagerService jc = new JobManagerService
            {
                JobsDirectory = dir.FullName
            };

            return(jc);
        }
Пример #19
0
        public void GetJobShouldReturnExistingJob()
        {
            string            name = MethodBase.GetCurrentMethod().Name;
            JobManagerService jc   = GetTestJobConductor(name);

            Expect.IsFalse(jc.JobExists(name));
            JobConf conf = jc.CreateJob(name);

            Expect.IsTrue(jc.JobExists(name));

            JobConf validate = jc.GetJobConf(name);

            Expect.IsNotNull(validate);
            Expect.AreEqual(name, validate.Name);
        }
Пример #20
0
        public void AfterAddWorkerCreateJobShouldHaveCorrectWorkers()
        {
            string            name    = MethodBase.GetCurrentMethod().Name;
            JobManagerService jc      = GetTestJobConductor(name);
            string            jobName = "Job_" + name;

            jc.AddWorker(jobName, typeof(TestWorker).AssemblyQualifiedName, "one");
            jc.AddWorker(jobName, typeof(TestWorker).AssemblyQualifiedName, "two");

            JobConf conf = jc.GetJob(jobName);
            Job     job  = conf.CreateJob();

            Expect.IsTrue(job.WorkerNames.Length == 2);
            Expect.IsNotNull(job["one"]);
            Expect.IsNotNull(job["two"]);
            Expect.AreEqual("one", job["one"].Name);
            Expect.AreEqual("two", job["two"].Name);
        }
Пример #21
0
        public override void Push(Action <string> output = null, Action <string> error = null)
        {
            try
            {
                string  jobName = GetArgument("job", "Please enter the name of the job to push.");
                JobConf conf    = JobManagerService.GetJob(jobName);

                ProxyFactory      factory   = new ProxyFactory();
                string            remote    = Config.Current["Server"].Or("bambot.bamapps.net");
                int               port      = Config.Current["Port"].Or("80").ToInt();
                JobManagerService remoteSvc = factory.GetProxy <JobManagerService>();
                remoteSvc.SaveJob(conf);
                output($"Job {jobName} pushed to {remote}:{port}");
            }
            catch (Exception ex)
            {
                error(ex.Message);
                Exit(1);
            }
        }
Пример #22
0
        public override void Add(Action <string> output = null, Action <string> error = null)
        {
            try
            {
                PrintMessage();
                JobProviderArguments providerArguments = GetProviderArguments(true, true) as JobProviderArguments;
                string workerName = providerArguments.WorkerName;
                string jobName    = providerArguments.JobName;

                JobConf  jobConf         = GetJobConf(jobName);
                string[] workerTypeNames = JobManagerService.GetWorkerTypes();
                int      workerType      = SelectFrom(workerTypeNames, "Please select a worker type");
                JobManagerService.AddWorker(jobName, workerTypeNames[workerType], workerName);

                Message.PrintLine("Added worker {0} to job {1}", ConsoleColor.Cyan, workerName, jobName);
                Exit(0);
            }
            catch (Exception ex)
            {
                Message.PrintLine("Error adding worker: {0}", ConsoleColor.Magenta, ex.Message);
                Exit(1);
            }
        }