class TestRemoteDaemonManager(unittest2.TestCase): def setUp(self): self.proc = start_hoplite_server(5001) self.manager = RemoteJobManager("localhost", 5001) def tearDown(self): tear_down_hoplite(self.proc) def test_create_job(self): job = None job = self.manager.create_job(DOWNLOAD_NETWORK_FOLDER_JOB_NAME, {}) self.assertIsNotNone(job) self.assertEquals(job.name, DOWNLOAD_NETWORK_FOLDER_JOB_NAME) self.assertEquals(job.running(), False) def test_get_job(self): job = self.manager.create_job(DOWNLOAD_NETWORK_FOLDER_JOB_NAME, {}) r_job = self.manager.get_job(job.uuid) self.assertEquals(r_job.uuid, job.uuid) self.assertEquals(r_job.name, job.name) def test_get_job_raises(self): self.assertRaises(JobDoesNotExistError, self.manager.get_job, 393939) def test_get_job_plugins(self): job_plugins = self.manager.get_job_plugins() self.assertEquals(len(job_plugins), 7) actual = job_plugins self.assertIn(DOWNLOAD_FOLDER_FROM_FTP_JOB_NAME, actual) self.assertIn(DOWNLOAD_NETWORK_FOLDER_JOB_NAME, actual) def test_get_job_plugins_raises(self): with HTTMock(response_500): self.assertRaises(InternalServerError, self.manager.get_job_plugins) def test_get_running_jobs(self): jobs = self.manager.get_running_jobs() self.assertEqual(len(jobs), 0) with HTTMock(get_running_jobs): jobs = self.manager.get_running_jobs() self.assertEqual(len(jobs), 1) def test_reload_site_packages(self): done = self.manager.reload_site_packages() self.assertTrue(done) def test_is_manager_available(self): time.sleep(1) # Give some time for job manager to connect to start self.assertTrue(self.manager.is_available()) invalid_manager = RemoteJobManager("localhost", 48423) self.assertFalse(invalid_manager.is_available())
def remote_install(host, package, port=5000, options=''): ''' Provides a convient interface to install a python package through the hoplite job mechanism. :param string host: The host machine to install pip package :param string package: The package to install :param int port: The hoplite port to use (5000 by default) :param string options: The pip options to use ('' by default) ''' job_manager = RemoteJobManager(host, port) job = job_manager.create_job( plugin_name=constants.INSTALL_PYTHON_PACKAGE_JOB_NAME, config={'PIP_CMD': 'install {0} {1}'.format(options, package)}) job.start() job.join() status = job.status() if not status['succeeded']: raise Error(status['stdout'])
def remote_install(host, package, port=5000, options=''): ''' Provides a convient interface to install a python package through the hoplite job mechanism. :param string host: The host machine to install pip package :param string package: The package to install :param int port: The hoplite port to use (5000 by default) :param string options: The pip options to use ('' by default) ''' job_manager = RemoteJobManager(host, port) job = job_manager.create_job( plugin_name=constants.INSTALL_PYTHON_PACKAGE_JOB_NAME, config={ 'PIP_CMD': 'install {0} {1}'.format(options, package) }) job.start() job.join() status = job.status() if not status['succeeded']: raise Error(status['stdout'])