def test_start_worker(self): client.initialize_server_files("dist_job_mgr.json_model.ModelAdapter", config_dir=self.dir) c = client.get_local_connection(self.dir) n = c.create_node(getpass.getuser(), 20000, "localhost", public_ip="127.0.0.1") j = c.start_job("test", JobType.ONE_TIME_JOB, 1, "test of start worker", requested_nodes=["localhost"]) (s, r) = c.run_task_on_all_nodes_of_job(j, "StartWorker", "StartWorker") self.assertEqual(s, TaskStatus.TASK_SUCCESSFUL) tr = c.run_command_task(j, n, "ls", ["/bin/ls"]) self.assertEqual(tr.status, TaskStatus.TASK_SUCCESSFUL) (s, r) = c.run_task_on_all_nodes_of_job(j, "Command", "ls", ["/bin/ls"], cwd=None) self.assertEqual(s, TaskStatus.TASK_SUCCESSFUL) (s, r) = c.run_task_on_all_nodes_of_job(j, "StopWorker", "StopWorker") self.assertEqual(s, TaskStatus.TASK_SUCCESSFUL) dest = os.path.join(self.dir, os.path.basename(__file__)) tr = c.run_copy_task(j, n, "copy files", __file__, dest) self.assertEqual(tr.status, TaskStatus.TASK_SUCCESSFUL) self.assertTrue(os.path.exists(dest)) c.stop_job(j, JobStatus.JOB_SUCCESSFUL, comment="done") c.delete_job(j) c.delete_node("localhost")
def test_bootstrap(self): djm_path = os.path.abspath(os.path.expanduser(WORKER_DIR)) if os.path.exists(djm_path): # there is an existing worker worker_exe = os.path.join(djm_path, "python/bin/djm-worker") if os.path.exists(worker_exe): subprocess.check_call([worker_exe, "stop"], shell=True) shutil.rmtree(djm_path) client.initialize_server_files("dist_job_mgr.json_model.ModelAdapter", config_dir=self.dir, djm_package=self.djm_package) c = client.get_local_connection(self.dir) n = c.create_node(getpass.getuser(), 20000, "localhost", public_ip="127.0.0.1") j = c.start_job("test", JobType.ONE_TIME_JOB, 1, "test of start worker", requested_nodes=["localhost"]) tr = c.run_task(j, "BootstrapWorker", "bootstrap test", "localhost") self.assertEqual(tr.status, TaskStatus.TASK_SUCCESSFUL) tr = c.run_task(j, "BootstrapWorker", "bootstrap test with worker already present", "localhost") self.assertEqual(tr.status, TaskStatus.TASK_SUCCESSFUL) worker_script = os.path.join(djm_path, "python/bin/djm-worker") self.assertTrue(os.path.exists(worker_script), "Worker script %s does not exist" % worker_script) tr = c.run_task(j, "StartWorker", "check that bootstrapped worker is startable", "localhost") self.assertEqual(tr.status, TaskStatus.TASK_SUCCESSFUL) tr = c.run_task(j, "StopWorker", "cleanup", "localhost") self.assertEqual(tr.status, TaskStatus.TASK_SUCCESSFUL) c.stop_job(j, JobStatus.JOB_SUCCESSFUL, comment="done")
def test_local_client(self): client.initialize_server_files("dist_job_mgr.mem_model.ModelAdapter", config_dir=self.dir) c = client.get_local_connection(self.dir) c.create_static_pool("p1") c.create_node("joe", 20000, "n1", hostname="localhost", pool_name="p1") c.create_node("joe", 20001, "n2", private_ip="127.0.0.1", pool_name="p1") j = c.start_job("test", JobType.ONE_TIME_JOB, 2, "this is a test job", node_pool_name="p1") t = c.run_task(j, "Test", "test task", "n1", "arg1", kwarg1=1) c.stop_job(j, JobStatus.JOB_SUCCESSFUL, comment="testing") c.delete_job(j) c.delete_node("n1") c.delete_static_pool("p1")
def run(self, options, args): client.initialize_server_files( options.model_class, config_dir=options.server_config_dir, djm_package=options.djm_package ) print "Initialized server at %s" % options.server_config_dir return 0