コード例 #1
0
ファイル: test_worker_managers.py プロジェクト: nyetsche/loom
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()
コード例 #2
0
ファイル: test_worker_managers.py プロジェクト: nyetsche/loom
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()
コード例 #3
0
ファイル: test_worker_managers.py プロジェクト: nyetsche/loom
 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'
コード例 #4
0
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"}')
コード例 #5
0
ファイル: test_step_runner.py プロジェクト: nyetsche/loom
    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
コード例 #6
0
ファイル: test_api.py プロジェクト: nyetsche/loom
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"}')
コード例 #7
0
ファイル: test_worker_managers.py プロジェクト: nyetsche/loom
 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'
コード例 #8
0
ファイル: test_xppf_run.py プロジェクト: nyetsche/loom
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()
コード例 #9
0
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()
コード例 #10
0
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)
コード例 #11
0
ファイル: test_step_runner.py プロジェクト: nyetsche/loom
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)
コード例 #12
0
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()
コード例 #13
0
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()
コード例 #14
0
ファイル: test_xppf_run.py プロジェクト: nyetsche/loom
 def setUp(self):
     self.test_server = TestServer()
     self.test_server.start()
コード例 #15
0
 def start_server(self):
     self.test_server = TestServer()
     self.test_server.start(no_daemon=False)
コード例 #16
0
 def start_server(self):
     self.test_server = TestServer()
     self.test_server.start(no_daemon=False)
コード例 #17
0
 def setUp(self):
     self.test_server = TestServer()
     self.test_server.start()