def setup_package(): global lc_fqdn, _daemons_running_externally conf = get_conf() if not 'BEAKER_LABCONTROLLER_HOSTNAME' in os.environ: # Need to start the lab controller daemons ourselves with session.begin(): user = data_setup.create_user(user_name=conf.get('USERNAME').decode('utf8'), password=conf.get('PASSWORD')) lc = data_setup.create_labcontroller(fqdn=u'localhost', user=user) processes.extend([ Process('beaker-proxy', args=['python', '../LabController/src/bkr/labcontroller/main.py', '-c', config_file, '-f'], listen_port=8000, stop_signal=signal.SIGTERM), Process('beaker-provision', args=['python', '../LabController/src/bkr/labcontroller/provision.py', '-c', config_file, '-f'], stop_signal=signal.SIGTERM), Process('beaker-watchdog', args=['python', '../LabController/src/bkr/labcontroller/watchdog.py', '-c', config_file, '-f'], stop_signal=signal.SIGTERM), ]) lc_fqdn = u'localhost' else: _daemons_running_externally = True # We have been passed a space seperated list of LCs lab_controllers = os.environ.get('BEAKER_LABCONTROLLER_HOSTNAME').decode('utf8') lab_controllers_list = lab_controllers.split() # Just get the last one, it shouldn't matter to us lab_controller = lab_controllers_list.pop() # Make sure that the LC is in the DB data_setup.create_labcontroller(fqdn=lab_controller) lc_fqdn = lab_controller # Clear out any existing job logs, so that they are registered correctly # when first created. # If we've been passed a remote hostname for the LC, we assume it's been # freshly provisioned and the dir will already be empty. shutil.rmtree(conf.get('CACHEPATH'), ignore_errors=True) try: for process in processes: process.start() except: for process in processes: process.stop() raise
def test_on_error_warns_if_server_version_does_not_match(self): fake_server = Process( 'http_server.py', args=[ sys.executable, pkg_resources.resource_filename('bkr.inttest', 'http_server.py'), '--base', '/notexist', '--add-response-header', 'X-Beaker-Version:999.3' ], listen_port=19998) fake_server.start() self.addCleanup(fake_server.stop) # use AUTH_METHOD=none because we can't authenticate to the fake server config = create_client_config(hub_url='http://localhost:19998', auth_method=u'none') try: run_client(['bkr', 'system-status', 'asdf.example.com'], config=config) self.fail('should raise') except ClientError as e: self.assertEquals( e.stderr_output, 'WARNING: client version is %s but server version is 999.3\n' 'HTTP error: 404 Client Error: Not Found\n' % __version__)
def setUpClass(cls): cls.task_server = Process( 'http_server.py', args=[sys.executable, _http_server, '--base', _sync_tasks_dir], listen_port=19998) cls.task_server.start() cls.task_url = 'http://localhost:19998/'
def setUp(self): # set up a directory for our dummy job logs, with an HTTP server self.logs_dir = tempfile.mkdtemp(prefix='beaker-client-test-job-logs') self.addCleanup(shutil.rmtree, self.logs_dir, ignore_errors=True) self.archive_server = Process('http_server.py', args=[sys.executable, pkg_resources.resource_filename('bkr.inttest', 'http_server.py'), '--base', self.logs_dir], listen_port=19998) self.archive_server.start() self.addCleanup(self.archive_server.stop) self.log_server_url = u'http://localhost:19998/' # job for testing with session.begin(): self.job = data_setup.create_completed_job() self.recipe = self.job.recipesets[0].recipes[0] os.mkdir(os.path.join(self.logs_dir, 'R')) open(os.path.join(self.logs_dir, 'R', 'dummy.txt'), 'w').write('recipe\n') self.recipe.logs[:] = [LogRecipe(server=self.log_server_url, path=u'R', filename=u'dummy.txt')] os.mkdir(os.path.join(self.logs_dir, 'T')) open(os.path.join(self.logs_dir, 'T', 'dummy.txt'), 'w').write('task\n') self.recipe.tasks[0].logs[:] = [LogRecipeTask(server=self.log_server_url, path=u'T', filename=u'dummy.txt')] os.mkdir(os.path.join(self.logs_dir, 'TR')) open(os.path.join(self.logs_dir, 'TR', 'dummy.txt'), 'w').write('result\n') self.recipe.tasks[0].results[0].logs[:] = [LogRecipeTaskResult( server=self.log_server_url, path=u'TR', filename=u'dummy.txt')]
def setUpClass(cls): cls.distro_server = Process('http_server.py', args=[ sys.executable, pkg_resources.resource_filename( 'bkr.inttest', 'http_server.py'), '--base', '/notexist' ], listen_port=19998) cls.distro_server.start()
def setUpClass(cls): # Need to populate a directory with a fake distro tree, and serve it over # HTTP, so that beaker-expire-distros can expire other missing distros. cls.distro_dir = tempfile.mkdtemp() os.mkdir(os.path.join(cls.distro_dir, 'fakedistros')) open(os.path.join(cls.distro_dir, 'fakedistros/MattAwesomelinux9'), 'w').write('lol') cls.distro_server = Process('http_server.py', args=[sys.executable, pkg_resources.resource_filename('bkr.inttest', 'http_server.py'), '--base', cls.distro_dir], listen_port=19998) cls.distro_server.start()
def setup_package(): processes.extend([ Process('Xvfb', args=['Xvfb', ':4', '-extension', 'GLX', '-noreset', '-listen', 'tcp', '-screen', '0', '1920x1200x24'], listen_port=6004), ]) try: for process in processes: process.start() except: for process in processes: process.stop() raise os.environ['DISPLAY'] = ':4' # for WebDriver
def setUpClass(cls): # Need to populate a directory with fake images, and serve it over # HTTP, so that beaker-pxemenu can download the images when it builds # the menus. cls.distro_dir = tempfile.mkdtemp() os.mkdir(os.path.join(cls.distro_dir, 'pxeboot')) open(os.path.join(cls.distro_dir, 'pxeboot/vmlinuz'), 'w').write('lol') open(os.path.join(cls.distro_dir, 'pxeboot/initrd'), 'w').write('lol') cls.distro_server = Process('http_server.py', args=[sys.executable, pkg_resources.resource_filename('bkr.inttest', 'http_server.py'), '--base', cls.distro_dir], listen_port=19998) cls.distro_server.start() cls.tftp_dir = tempfile.mkdtemp()
def setUp(self): # We will point beaker-repo-update at this fake version of the # harness repos that we normally publish on # https://beaker-project.org/yum/harness/ self.harness_repo_dir = tempfile.mkdtemp() self.addCleanup(shutil.rmtree, self.harness_repo_dir) self.harness_repo_server = Process('http_server.py', args=[sys.executable, pkg_resources.resource_filename('bkr.inttest', 'http_server.py'), '--base', self.harness_repo_dir], listen_port=19998) self.harness_repo_server.start() self.addCleanup(self.harness_repo_server.stop) self.harness_repo_url = 'http://localhost:19998/'
def setUp(self): self.product_docroot = tempfile.mkdtemp( prefix='beaker-fake-product-server') self.addCleanup(shutil.rmtree, self.product_docroot, ignore_errors=True) self.product_server = Process('http_server.py', args=[ sys.executable, pkg_resources.resource_filename( 'bkr.inttest', 'http_server.py'), '--base', self.product_docroot ], listen_port=19998) self.product_server.start() self.addCleanup(self.product_server.stop)
def setUp(self): # XXX We should eventually configure these redirect tests # to work with apache, until then, we do this... test_id = self.id() if test_id.endswith('test_301_redirect') or \ test_id.endswith('test_302_redirect'): self.force_local_archive_server = True else: self.force_local_archive_server = False if 'BEAKER_LABCONTROLLER_HOSTNAME' in os.environ and not \ self.force_local_archive_server: self.logs_dir = config.get('basepath.logs') self.recipe_logs_dir = os.path.join(self.logs_dir, 'recipe') self.log_server = os.environ['BEAKER_LABCONTROLLER_HOSTNAME'] self.log_server_url = 'http://%s/logs' % self.log_server self.addCleanup(shutil.rmtree, self.recipe_logs_dir, ignore_errors=True) else: self.logs_dir = tempfile.mkdtemp(prefix='beaker-test-log-delete') self.recipe_logs_dir = os.path.join(self.logs_dir, 'recipe') self.archive_server = Process('http_server.py', args=[ sys.executable, pkg_resources.resource_filename( 'bkr.inttest', 'http_server.py'), '--base', self.logs_dir, '--writable' ], listen_port=19998) self.archive_server.start() self.log_server = 'localhost:19998' self.log_server_url = 'http://%s' % self.log_server self.addCleanup(shutil.rmtree, self.logs_dir, ignore_errors=True) self.addCleanup(self.archive_server.stop) try: os.mkdir(self.recipe_logs_dir) except OSError, e: if e.errno == errno.EEXIST: # perhaps something else created it and did not clean it up pass else: raise