def test_pipeline_tool_spec_regexp(): @jip.tool() class MyTool(): def get_command(self): return "echo" @jip.pipeline() class MyPipeline(): def pipeline(self): p = jip.Pipeline() p.job(threads=3, queue="Intern").run('MyTool') return p p = jip.Pipeline() p.run('MyPipeline') p.expand() profile = jip.Profile(threads=5, queue="yeah", priority="high") profile.specs['My*'] = jip.Profile(threads=10, queue="rock") profile.apply_to_pipeline(p) jobs = jip.create_jobs(p) assert jobs[0].threads == 10 assert jobs[0].queue == "rock" assert jobs[0].priority == "high"
def test_pipeline_tool_defaults_global_job(): @jip.tool() class MyTool(): def setup(self): self.profile.threads = 2 self.profile.queue = "Org" def get_command(self): return "echo" @jip.pipeline() class MyPipeline(): def pipeline(self): p = jip.Pipeline() p.job(threads=3, queue="Intern").run('MyTool') return p p = jip.Pipeline() p.run('MyPipeline') p.expand() profile = jip.Profile(threads=5, queue="yeah") profile.specs['MyTool'] = jip.Profile() profile.apply_to_pipeline(p) jobs = jip.create_jobs(p) assert jobs[0].threads == 3 assert jobs[0].queue == "Intern"
def test_pipeline_overwrites_pipeline_from_spec(): @jip.tool() class MyTool(): def setup(self): self.profile.threads = 2 self.profile.queue = "Org" def get_command(self): return "echo" @jip.pipeline() class MyPipeline(): def pipeline(self): p = jip.Pipeline() p.job(threads=3, queue="Yeah").run('MyTool') return p p = jip.Pipeline() p.run('MyPipeline') p.expand() profile = jip.Profile(threads=10, queue="Test") profile.specs['MyTool'] = jip.Profile(threads=5) profile.apply_to_pipeline(p) jobs = jip.create_jobs(p) assert jobs[0].threads == 5 assert jobs[0].queue == "Yeah"
def test_tool_name_in_pipelines_with_multiplexing_and_custom_template_name(): @jip.tool() class MyTool(): """mytool usage: mytool <data> """ def validate(self): self.job.name = "${data}" def get_command(self): return "echo" @jip.pipeline() class MyPipeline(): def validate(self): self.name("thepipeline") def pipeline(self): p = jip.Pipeline() p.run('MyTool', data=["A", "B"]) return p p = jip.Pipeline() p.run('MyPipeline') p.expand() profile = jip.Profile(name="customname") jobs = jip.create_jobs(p, profile=profile) assert len(jobs) == 2 assert jobs[0].name == "A" assert jobs[0].pipeline == "customname" assert jobs[1].name == "B" assert jobs[1].pipeline == "customname"
def test_tool_name_in_pipeline_context_with_custom_profile_and_custom_name(): @jip.tool() class MyTool(): def validate(self): self.job.name = "testtool" def get_command(self): return "echo" @jip.pipeline() class MyPipeline(): def validate(self): self.name("thepipeline") def pipeline(self): p = jip.Pipeline() p.job('Tool1').run('MyTool') return p p = jip.Pipeline() p.run('MyPipeline') p.expand() profile = jip.Profile(name="customname") jobs = jip.create_jobs(p, profile=profile) assert len(jobs) == 1 assert jobs[0].name == "Tool1" assert jobs[0].pipeline == "customname"
def test_tool_name_set_in_validate_with_job(): @jip.tool() class MyTool(): def validate(self): self.job.name = "testtool" def get_command(self): return "echo" p = jip.Pipeline() p.run('MyTool') p.expand() profile = jip.Profile(name="testname") jobs = jip.create_jobs(p, profile=profile) assert len(jobs) == 1 assert jobs[0].name == "testtool" assert jobs[0].pipeline == "testname"
def test_tool_name_external_profile_on_pipeline(): @jip.tool() class MyTool(): def validate(self): pass def get_command(self): return "echo" p = jip.Pipeline() p.run('MyTool') p.expand() profile = jip.Profile(name="testname") jobs = jip.create_jobs(p, profile=profile) assert len(jobs) == 1 assert jobs[0].name == "MyTool" assert jobs[0].pipeline == "testname"