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); } }
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); }
public void JobsDirectoryShouldBeInAppDataFolder() { JobManagerService jobConductor = new JobManagerService(); string expected = DataProvider.Current.GetAppDataDirectory(DefaultConfigurationApplicationNameProvider.Instance, "Jobs").FullName; Expect.AreEqual(expected, jobConductor.JobsDirectory); }
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"); }
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)); }
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)); }
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"); }
public void DeleteJobsDirectory() { JobManagerService svc = new JobManagerService(); string dir = svc.JobsDirectory; if (System.IO.Directory.Exists(dir)) { System.IO.Directory.Delete(svc.JobsDirectory, true); } }
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"); }
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)); }
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)); }
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)); }
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); }
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); }
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())); }
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"); }
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); }
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); }
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); }
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); }
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); } }
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); } }