def test_pre_and_post_cmds0002(self, monkeypatch, mock_platform): """Check that the pre/post commands use a shell and don't just exec(3)""" config = Config(os.path.join(TEST_DIR, "example.krun")) tmp_file = os.path.join(TEST_DIR, "prepost.txt") # commands use shell syntax config.PRE_EXECUTION_CMDS = ["echo 'pre' > %s" % tmp_file] config.POST_EXECUTION_CMDS = ["echo 'post' >> %s" % tmp_file] krun.util.assign_platform(config, mock_platform) sched = ExecutionScheduler(config, mock_platform.mailer, mock_platform, resume=False, dry_run=True, started_by_init=True) sched.build_schedule() sched.run() with open(tmp_file) as fh: got = fh.read() os.unlink(tmp_file) assert got == "pre\npost\n"
def test_pre_and_post_cmds0001(self, monkeypatch, mock_platform): cap_cmds = [] def dummy_run_shell_cmd(cmd, failure_fatal=False, extra_env=None): cap_cmds.append(cmd) return "", "", 0 monkeypatch.setattr(krun.util, "run_shell_cmd", dummy_run_shell_cmd) config = Config(os.path.join(TEST_DIR, "example.krun")) config.PRE_EXECUTION_CMDS = ["pre1", "pre2"] config.POST_EXECUTION_CMDS = ["post1", "post2"] krun.util.assign_platform(config, mock_platform) sched = ExecutionScheduler(config, mock_platform.mailer, mock_platform, resume=False, dry_run=True, started_by_init=True) sched.build_schedule() assert len(sched) == 8 sched.run() expect = ["pre1", "pre2", "post1", "post2"] * 8 assert cap_cmds == expect
def test_pre_and_post_cmds0002(self, monkeypatch, mock_platform): """Check that the pre/post commands use a shell and don't just exec(3)""" config = Config(os.path.join(TEST_DIR, "example.krun")) tmp_file = os.path.join(TEST_DIR, "prepost.txt") # commands use shell syntax config.PRE_EXECUTION_CMDS = ["echo 'pre' > %s" % tmp_file] config.POST_EXECUTION_CMDS = ["echo 'post' >> %s" % tmp_file] krun.util.assign_platform(config, mock_platform) sched = ExecutionScheduler(config, mock_platform.mailer, mock_platform, resume=False, dry_run=True, started_by_init=True) sched.build_schedule() sched.run() with open(tmp_file) as fh: got = fh.read() os.unlink(tmp_file) assert got == "pre\npost\n"
def test_pre_and_post_cmds0001(self, monkeypatch, mock_platform): cap_cmds = [] def dummy_run_shell_cmd(cmd, failure_fatal=False, extra_env=None): cap_cmds.append(cmd) return "", "", 0 monkeypatch.setattr(krun.util, "run_shell_cmd", dummy_run_shell_cmd) config = Config(os.path.join(TEST_DIR, "example.krun")) config.PRE_EXECUTION_CMDS = ["pre1", "pre2"] config.POST_EXECUTION_CMDS = ["post1", "post2"] krun.util.assign_platform(config, mock_platform) sched = ExecutionScheduler(config, mock_platform.mailer, mock_platform, resume=False, dry_run=True, started_by_init=True) sched.build_schedule() assert len(sched) == 8 sched.run() expect = ["pre1", "pre2", "post1", "post2"] * 8 assert cap_cmds == expect
def test_pre_and_post_exec_cmds0001(self, monkeypatch, mock_platform): cap_cmds = [] def dummy_run_shell_cmd(cmd, failure_fatal=False, extra_env=None): cap_cmds.append(cmd) return "", "", 0 monkeypatch.setattr(krun.util, "run_shell_cmd", dummy_run_shell_cmd) config = Config(os.path.join(TEST_DIR, "one_exec.krun")) config.PRE_EXECUTION_CMDS = ["cmd1", "cmd2"] config.POST_EXECUTION_CMDS = ["cmd3", "cmd4"] n_reboots, sched = run_with_captured_reboots(config, mock_platform, monkeypatch) os.unlink(config.results_filename()) os.unlink(sched.manifest.path) assert n_reboots == 1 expect = ["cmd1", "cmd2", "cmd3", "cmd4"] assert cap_cmds == expect
def test_pre_and_post_cmds0003(self, monkeypatch, mock_platform): """Check that the pre/post commands use a shell and don't just exec(3)""" config = Config(os.path.join(TEST_DIR, "one_exec.krun")) tmp_file = os.path.join(TEST_DIR, "prepost.txt") # commands use shell syntax config.PRE_EXECUTION_CMDS = ["echo 'pre' > %s" % tmp_file] config.POST_EXECUTION_CMDS = ["echo 'post' >> %s" % tmp_file] n_reboots, sched = run_with_captured_reboots(config, mock_platform, monkeypatch) assert n_reboots == 1 os.unlink(config.results_filename()) os.unlink(sched.manifest.path) with open(tmp_file) as fh: got = fh.read() os.unlink(tmp_file) assert got == "pre\npost\n"