def test_job_requeue(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) jobs = OLJob.submit(connection, requested_slots=1, command="sleep 1000") job = jobs.pop() while job.is_pending: time.sleep(1) job = OLJob(connection, job_id=job.job_id, array_index=job.array_index) if not job.is_running: self.skipTest("Job no longer running") start_time = job.start_time job.requeue(hold=False) time.sleep(45) job = OLJob(connection, job_id=job.job_id, array_index=job.array_index) if job.is_pending: # Passed job.kill() return None self.assertNotEqual(job.start_time, start_time) job.kill()
def compare_job_attributes(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) for local_job in Job.get_job_list(): remote_ob = OLJob(connection, job_id=local_job.job_id, array_index=local_job.array_index) local_ob = Job(job_id=local_job.job_id, array_index=local_job.array_index) for attr in local_ob.json_attributes(): local_attr_val = getattr(local_ob, attr) remote_attr_val = getattr(remote_ob, attr) if isinstance(local_attr_val, list): self.assertEqual(len(local_attr_val), len(remote_attr_val)) elif isinstance(local_attr_val, dict): keys = local_attr_val.keys() rkeys = getattr(remote_ob, attr).keys() for key in keys: self.assertIn(key, rkeys) for key in rkeys: self.assertIn(key, keys) else: self.assertEqual(str(local_attr_val), str(remote_attr_val))
def test_exception(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) base_url = os.environ.get("OLWEB_URL", None) base_url.rstrip("/") for ex in [ RemoteServerError, NoSuchHostError, NoSuchJobError, NoSuchQueueError, NoSuchUserError, ResourceDoesntExistError, ClusterInterfaceError, PermissionDeniedError, JobSubmitError ]: print "Raising: %s" % ex.__name__ url = "%s/exception_test?json=1&exception_name=%s" % (base_url, ex.__name__) request = urllib2.Request(url, None, {'Content-Type': 'application/json'}) self.assertRaises( ex, connection.open, request )
def compare_host_attributes(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) for local_host in Host.get_host_list(): remote_ob = OLHost(connection, host_name=local_host.name) local_ob = Host(local_host.name) for attr in local_ob.json_attributes(): local_attr_val = getattr(local_ob, attr) remote_attr_val = getattr(remote_ob, attr) if isinstance(local_attr_val, list): self.assertEqual(len(local_attr_val), len(remote_attr_val)) elif isinstance(local_attr_val, dict): keys = local_attr_val.keys() rkeys = getattr(remote_ob, attr).keys() for key in keys: self.assertIn(key, rkeys) for key in rkeys: self.assertIn(key, keys) else: self.assertEqual(str(local_attr_val), str(remote_attr_val))
def compare_queue_attributes(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") connection = OpenLavaConnection(Cargs) for local_queue in Queue.get_queue_list(): remote_ob = OLQueue(connection, queue_name=local_queue.name) local_ob = Queue(local_queue.name) for attr in local_ob.json_attributes(): local_attr_val = getattr(local_ob, attr) remote_attr_val = getattr(remote_ob, attr) if isinstance(local_attr_val, list): self.assertEqual(len(local_attr_val), len(remote_attr_val)) elif isinstance(local_attr_val, dict): keys = local_attr_val.keys() rkeys = getattr(remote_ob, attr).keys() for key in keys: self.assertIn(key, rkeys) for key in rkeys: self.assertIn(key, keys) else: self.assertEqual(str(local_attr_val), str(remote_attr_val))
def test_job_submit(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) jobs = OLJob.submit(connection, requested_slots=1, command="hostname") self.assertIs(len(jobs), 1, msg="Submitting one job returns 1 item") self.job_state_test(jobs[0])
def test_job_list(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) job_list = OLJob.get_job_list(connection) for job in job_list: self.assertIsInstance(job, OLJob)
def compare_job_attributes(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) for local_job in Job.get_job_list(): remote_job = OLJob(connection, job_id=local_job.job_id, array_index=local_job.array_index) local_job = Job(job_id=local_job.job_id, array_index=local_job.array_index) for attr in local_job.json_attributes(): self.assertEqual(str(getattr(local_job, attr)), str(getattr(remote_job, attr)))
def test_job_suspend(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) jobs = OLJob.submit(connection, requested_slots=1, command="sleep 1000") job = jobs.pop() job.suspend() time.sleep(15) job = OLJob(connection, job_id=job.job_id, array_index=job.array_index) self.assertTrue(job.is_suspended) job.kill()
def test_job_kill(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) jobs = OLJob.submit(connection, requested_slots=1, command="sleep 1000") job = jobs.pop() # kill the job job.kill() # Wait for the job to actually die time.sleep(15) job = OLJob(connection, job_id=job.job_id, array_index=job.array_index) self.assertTrue(job.is_completed or job.is_failed or job.was_killed)
def test_job_requeue_hold(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) jobs = OLJob.submit(connection, requested_slots=1, command="sleep 1000") job = jobs.pop() while job.is_pending: time.sleep(1) job = OLJob(connection, job_id=job.job_id, array_index=job.array_index) if not job.is_running: self.skipTest("Job no longer running") job.requeue(hold=True) time.sleep(45) # Takes a while, first state is exit... job = OLJob(connection, job_id=job.job_id, array_index=job.array_index) self.assertTrue(job.is_suspended) job.kill()
def compare_job_list(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) remote_job_list = OLJob.get_job_list(connection) local_job_list = Job.get_job_list() local_jobs = set() remote_jobs = set() for job in local_job_list: local_jobs.add(str(job)) for job in remote_job_list: remote_jobs.add(str(job)) for job in local_jobs: self.assertIn(job, remote_jobs) for job in remote_jobs: self.assertIn(job, local_jobs)
def compare_host_list(self): Cargs.username = os.environ.get("OLWEB_USERNAME") Cargs.password = os.environ.get("OLWEB_PASSWORD") Cargs.url = os.environ.get("OLWEB_URL") # noinspection PyTypeChecker connection = OpenLavaConnection(Cargs) remote_list = OLHost.get_host_list(connection) local_list = Host.get_host_list() local_names = set() remote_names = set() for ob in local_list: local_names.add(str(ob)) for ob in remote_list: remote_names.add(str(ob)) for ob in local_list: self.assertIn(str(ob), remote_names) for ob in remote_list: self.assertIn(str(ob), local_names)