def test2_lsf_job(self, subprocess_patch): laimsapp = LaimsApp() config = laimsapp.lsf_job_options() config.pop("queue", None) config.pop("stdout", None) print(config) job = LsfJob(config) self.assertTrue(isinstance(job, LsfJob)) available_opts = LsfJob.available_options self.assertEqual(len(available_opts), 9, "available options count is 9") expected_cmd = [ 'bsub', '-a', 'docker(registry.gsc.wustl.edu/mgi/laims:latest)', '-N', '-u', '*****@*****.**', 'echo', 'hello', 'world' ] self.assertEqual(job.bsub_cmd(['echo', 'hello', 'world']), expected_cmd) job.created_options["stdout"] = "/var/log/out" expected_cmd = [ 'bsub', '-M', '10000000', '-R', '"select[mem>10000] rusage[mem=10000]"', '-a', 'docker(hello-world)', "-oo", "/var/log/out", '-N', '-u', '*****@*****.**', 'echo', 'hello', 'world' ] self.assertEqual( job.bsub_cmd(['echo', 'hello', 'world'], { "docker": "hello-world", "memory_in_gb": 10 }), expected_cmd) job.created_options["stdout"] = "/var/log" expected_cmd = [ 'bsub', '-M', '10000000', '-R', '"select[mem>10000] rusage[mem=10000]"', '-a', 'docker(hello-world)', "-oo", "/var/log/log1.out", '-N', '-u', '*****@*****.**', 'echo', 'hello', 'world' ] self.assertEqual( job.bsub_cmd( ['echo', 'hello', 'world'], { "docker": "hello-world", "memory_in_gb": 10, "stdout_bn": "log1.out" }), expected_cmd) subprocess_patch.return_value = 1 self.assertFalse( job.launch(['echo', 'hello', 'world'], {"docker": "hello-world"}), expected_cmd)
def test4_job_options(self): laimsapp = LaimsApp(config_file=self.config_fn) laimsapp.queue = "ccdg" laimsapp.stdout = "/var/log/out" self.assertTrue(laimsapp) opts = laimsapp.lsf_job_options() expected_opts = { "email": "*****@*****.**", "queue": "ccdg", "docker": "registry.gsc.wustl.edu/mgi/laims:latest", "stdout": "/var/log/out", } self.assertDictEqual(opts, expected_opts, "LSF job options fetched from config")