def test_local_job_run(self): loader = JobLoader() job = loader.load_yaml(JOB_YAML) executor = LocalExecutor() job.execute(executor) self.assertTrue(job.success()) self.assertEqual([b'I AM JOB HEAR ME RUN\n'], executor.get_log())
def test_job_runs_steps_on_executor(self): loader = JobLoader() executor = DummyExecutor() job = loader.load_yaml(JOB_YAML) job.execute(executor) for step in job.steps: self.assertEqual(executor, step.executor_used)
def test_job_opens_and_closes_executor_once(self): loader = JobLoader() job = loader.load_yaml(JOB_MULTISTEP_YAML) executor = DummyExecutor() job.execute(executor) self.assertEqual(1, executor.opened) self.assertEqual(1, executor.closed)
def test_job_gets_all_steps(self): loader = JobLoader() job = loader.load_yaml(JOB_MULTISTEP_YAML) steps = job.steps self.assertEqual(2, len(job.steps)) self.assertEqual(type(steps[0]), FailingJobLoaderTestPlugin) self.assertEqual(type(steps[1]), JobLoaderTestPlugin)
def test_local_job_run(self): loader = JobLoader() job = loader.load_yaml(JOB_YAML) executor = LocalExecutor() job.execute(executor) self.assertTrue(job.success()) self.assertEqual( [b'I AM JOB HEAR ME RUN\n'], executor.get_log())
def test_job_success_or_fail_multistep(self): loader = JobLoader() executor = DummyExecutor() job = loader.load_yaml(JOB_MULTISTEP_YAML) job.execute(executor) self.assertEqual(False, job.success())
def test_job_success_or_fail(self): loader = JobLoader() executor = DummyExecutor() job = loader.load_yaml(JOB_YAML) job.execute(executor) self.assertEqual(True, job.success())
def test_job_from_yaml_has_plugin_args_from_yaml(self): loader = JobLoader() job = loader.load_yaml(JOB_YAML) steps = job.steps self.assertEqual(JOB_SCRIPT, steps[0].args)
def test_job_from_yaml_has_plugins_in_steps(self): loader = JobLoader() job = loader.load_yaml(JOB_YAML) steps = job.steps self.assertEqual(JobLoaderTestPlugin, type(steps[0]))
def test_job_from_yaml_returns_job(self): loader = JobLoader() job = loader.load_yaml(JOB_YAML) self.assertEqual(type(job), Job)
import time import copy from spoonybard.core.executors import SSHExecutor, LocalExecutor from spoonybard.core.jobs import JobLoader JOB_YAML = """ name: test job steps: - shell: | #!/bin/bash echo Running remotely - shell: | #!/bin/bash echo hi >> ~/thing """ cfg = {} def run_job(job, executor): job.execute(executor) loader = JobLoader() job = loader.load_yaml(JOB_YAML) print("Starting up") for y in range(0,500): j = copy.deepcopy(job) remote = LocalExecutor(cfg) thread = threading.Thread(target=run_job, args=(j, remote,)) thread.start() print("Waiting for jobs")