class TestWorkerManagers(unittest.TestCase): def setUp(self): self.test_server = TestServer() self.test_server.start() self.WORKER_TYPE_BEFORE = settings.WORKER_TYPE self.MASTER_URL_BEFORE = settings.MASTER_URL_FOR_WORKER self.RACK_ENV_BEFORE = settings.RACK_ENV settings.RACK_ENV = 'test' def tearDown(self): self.test_server.stop() settings.WORKER_TYPE = self.WORKER_TYPE_BEFORE settings.MASTER_URL_FOR_WORKER = self.MASTER_URL_BEFORE settings.RACK_ENV = self.RACK_ENV_BEFORE def test_local_worker_manager(self): settings.WORKER_TYPE = 'LOCAL' settings.MASTER_URL_FOR_WORKER = 'http://127.0.0.1:8000' self._run_helloworld() # Give tests some time to finish before shutting down the server. time.sleep(5) def test_cluster_worker_manager(self): settings.WORKER_TYPE = 'ELASTICLUSTER' settings.MASTER_URL_FOR_WORKER = 'http://frontend001:8000' self._run_helloworld() # Give tests some time to finish before shutting down the server. time.sleep(5) def _run_helloworld(self): WorkInProgress.submit_new_request(fixtures.helloworld_json) WorkInProgress.update_and_run()
class TestStepRunner(unittest.TestCase): def setUp(self): self.test_server = TestServer() self.test_server.start() self._run_helloworld() r = requests.get(self.test_server.server_url+'/api/step_runs/') self.step1_run_id = r.json()['step_runs'][0].get('_id') self.file_root = tempfile.mkdtemp() parser = StepRunner._get_parser() args = parser.parse_args(['--run_id', self.step1_run_id, '--master_url', self.test_server.server_url]) self.step_runner = StepRunner(args=args) self.step_runner.settings['WORKING_DIR'] = self.file_root def tearDown(self): shutil.rmtree(self.file_root) self.test_server.stop() def _run_helloworld(self): url = self.test_server.server_url+'/api/submitrequest/' response = requests.post(url, data=fixtures.helloworld_json) self.assertEqual(response.status_code, 201, 'Expected 201 but got %d trying to post to %s' % (response.status_code, url)) self.test_server.dry_run_job_queues() # Given steprun ID, retrieve the steprun def test_get_step_run(self): step_run = self.step_runner.step_run self.assertEqual(step_run.get('_id'), self.step1_run_id) def test_execute(self): process = self.step_runner._execute() self.step_runner._wait_for_process(process)
class TestXppfRun(unittest.TestCase): def setUp(self): self.test_server = TestServer() self.test_server.start() def tearDown(self): self.test_server.stop() def test_status(self): # Test create r = requests.get(self.test_server.server_url + '/api/status/') self.assertEqual(r.status_code, 200) self.assertEqual(r.text, '{"message": "server is up"}')
class TestXppfRun(unittest.TestCase): def setUp(self): self.test_server = TestServer() self.test_server.start() def tearDown(self): self.test_server.stop() def test_status(self): # Test create r = requests.get(self.test_server.server_url+'/api/status/') self.assertEqual(r.status_code, 200) self.assertEqual(r.text, '{"message": "server is up"}')
class TestXppfRun(unittest.TestCase): TEST_DATA_DIR = os.path.join(os.path.dirname(__file__), 'testdata') def setUp(self): self.test_server = TestServer() self.test_server.start() def tearDown(self): self.test_server.stop() def test_run(self): run_parser = xppf_run.XppfRun.get_parser() args = run_parser.parse_args([os.path.join(self.TEST_DATA_DIR, 'invalid_pipeline.json')]) xrun = xppf_run.XppfRun(args=args) with self.assertRaises(xppf_run.XppfRunException): xrun.run()
class TestXppfRun(unittest.TestCase): TEST_DATA_DIR = os.path.join(os.path.dirname(__file__), 'testdata') def setUp(self): self.test_server = TestServer() self.test_server.start() def tearDown(self): self.test_server.stop() def test_run(self): run_parser = xppf_run.XppfRun.get_parser() args = run_parser.parse_args( [os.path.join(self.TEST_DATA_DIR, 'invalid_pipeline.json')]) xrun = xppf_run.XppfRun(args=args) with self.assertRaises(xppf_run.XppfRunException): xrun.run()
class TestXppfServerControls(unittest.TestCase): def setUp(self): self.test_server = TestServer() self.test_server.start() def tearDown(self): self.test_server.stop() def test_status(self): parser = xppf_server_controls.XppfServerControls._get_parser() args = parser.parse_args(['status', '--require_default_settings']) # call by args. This just prints output to screen xs = xppf_server_controls.XppfServerControls(args=args) xs.main() # call by status method directly to check response response = xs.status() self.assertEqual(response.status_code, 200)
class AbstractWorkflowTester(unittest.TestCase): def is_workflow_complete(self): response = self.runner.get('/api/dashboard/') if not response.status_code == 200: return False request_submissions = response.json().get('request_submissions') r = filter(lambda r, id=self.request_id: r['id'] == id, request_submissions) if not len(r) == 1: return False r = r[0] return r.get('is_complete') def start_server(self): self.test_server = TestServer() self.test_server.start(no_daemon=False) def start_job(self, request_submission_json_path): run_parser = xppf_run.XppfRun.get_parser() args = run_parser.parse_args( ['--require_default_settings', request_submission_json_path]) self.runner = xppf_run.XppfRun(args=args) response = self.runner.run() self.assertEqual(response.status_code, 201) self.request_id = response.json().get('_id') def upload(self, file_path): upload_parser = self.uploader = xppf_upload.XppfUpload.get_parser() args = upload_parser.parse_args( ['--require_default_settings', file_path]) uploader = xppf_upload.XppfUpload(args=args) uploader.run() def wait_for_job(self): Helper.wait_for_true(self.is_workflow_complete, timeout_seconds=20) def stop_server(self): self.test_server.stop()
class AbstractWorkflowTester(unittest.TestCase): def is_workflow_complete(self): response = self.runner.get('/api/dashboard/') if not response.status_code == 200: return False request_submissions = response.json().get('request_submissions') r = filter(lambda r, id=self.request_id: r['id']==id, request_submissions) if not len(r) == 1: return False r = r[0] return r.get('is_complete') def start_server(self): self.test_server = TestServer() self.test_server.start(no_daemon=False) def start_job(self, request_submission_json_path): run_parser = xppf_run.XppfRun.get_parser() args = run_parser.parse_args(['--require_default_settings', request_submission_json_path]) self.runner = xppf_run.XppfRun(args=args) response = self.runner.run() self.assertEqual(response.status_code, 201) self.request_id = response.json().get('_id') def upload(self, file_path): upload_parser = self.uploader = xppf_upload.XppfUpload.get_parser() args = upload_parser.parse_args(['--require_default_settings', file_path]) uploader = xppf_upload.XppfUpload(args=args) uploader.run() def wait_for_job(self): Helper.wait_for_true(self.is_workflow_complete, timeout_seconds=20) def stop_server(self): self.test_server.stop()