def test_incomplete_job(self): # First task is completed so it shows up in the JUnit XML, second task # is still running and has no results so it doesn't appear. job = data_setup.create_running_job(recipe_whiteboard=u'running job', fqdn=u'busysystem.testdata', task_list=[data_setup.create_task(u'/test_junitxml/completed'), data_setup.create_task(u'/test_junitxml/running')]) recipe = job.recipesets[0].recipes[0] data_setup.mark_recipe_tasks_finished(recipe, only=True, num_tasks=1, result=TaskResult.pass_, server_log=True) recipe.tasks[0].start_time = datetime.datetime(2015, 12, 14, 0, 0, 0) recipe.tasks[0].results[0].start_time = datetime.datetime(2015, 12, 14, 0, 0, 10) self.assertEqual(job.status, TaskStatus.running) out = job_to_junit_xml(job) expected = """\ <?xml version='1.0' encoding='utf8'?> <testsuites> <testsuite name="running job" id="R:{recipe_id}" hostname="busysystem.testdata" tests="2" skipped="0" failures="0" errors="0"> <testcase classname="/test_junitxml/completed" name="(main)"> <system-out>{server}recipes/{recipe_id}/tasks/{task_id}/logs/tasks/dummy.txt</system-out> </testcase> <testcase classname="/test_junitxml/completed" name="(none)" time="10"> <system-out>{server}recipes/{recipe_id}/tasks/{task_id}/results/{result_id}/logs/result.txt</system-out> </testcase> </testsuite> </testsuites> """.format(server=get_server_base(), recipe_id=recipe.id, task_id=recipe.tasks[0].id, result_id=recipe.tasks[0].results[0].id) self.assertMultiLineEqual(expected, out)
def test_incomplete_job(self): # First task is completed so it shows up in the JUnit XML, second task # is still running and has no results so it doesn't appear. job = data_setup.create_running_job( recipe_whiteboard=u'running job', fqdn=u'busysystem.testdata', task_list=[ data_setup.create_task(u'/test_junitxml/completed'), data_setup.create_task(u'/test_junitxml/running') ]) recipe = job.recipesets[0].recipes[0] data_setup.mark_recipe_tasks_finished(recipe, only=True, num_tasks=1, result=TaskResult.pass_, server_log=True) recipe.tasks[0].start_time = datetime.datetime(2015, 12, 14, 0, 0, 0) recipe.tasks[0].results[0].start_time = datetime.datetime( 2015, 12, 14, 0, 0, 10) self.assertEqual(job.status, TaskStatus.running) out = job_to_junit_xml(job) expected = """\ <?xml version='1.0' encoding='utf8'?> <testsuites> <testsuite name="running job" id="R:%s" hostname="busysystem.testdata" tests="2" failures="0" errors="0"> <testcase classname="/test_junitxml/completed"> <system-out>http://dummy-archive-server/beaker/tasks/dummy.txt</system-out> </testcase> <testcase classname="/test_junitxml/completed" name="(none)" time="10"> <system-out>http://dummy-archive-server/beaker/result.txt</system-out> </testcase> </testsuite> </testsuites> """ % recipe.id self.assertMultiLineEqual(expected, out)
def setup_package(): assert os.path.exists(CONFIG_FILE), 'Config file %s must exist' % CONFIG_FILE load_config(configfile=CONFIG_FILE) log_to_stream(sys.stdout, level=logging.DEBUG) from bkr.inttest import data_setup if not 'BEAKER_SKIP_INIT_DB' in os.environ: data_setup.setup_model() with session.begin(): data_setup.create_labcontroller() #always need a labcontroller data_setup.create_task(name=u'/distribution/install', requires= u'make gcc nfs-utils wget procmail redhat-lsb ntp ' u'@development-tools @development-libs @development ' u'@desktop-platform-devel @server-platform-devel ' u'libxml2-python expect pyOpenSSL'.split()) data_setup.create_task(name=u'/distribution/reservesys', requires=u'emacs vim-enhanced unifdef sendmail'.split()) data_setup.create_distro() if not os.path.exists(turbogears.config.get('basepath.rpms')): os.mkdir(turbogears.config.get('basepath.rpms')) setup_slapd() turbogears.testutil.make_app(Root) turbogears.testutil.start_server() global processes processes = [] if 'BEAKER_SERVER_BASE_URL' not in os.environ: # need to start the server ourselves # Usual pkg_resources ugliness is needed to ensure gunicorn doesn't # import pkg_resources before we get a chance to specify our # requirements in bkr.server.wsgi processes.extend([ Process('gunicorn', args=[sys.executable, '-c', '__requires__ = ["CherryPy < 3.0"]; import pkg_resources; ' \ 'from gunicorn.app.wsgiapp import run; run()', '--bind', ':%s' % turbogears.config.get('server.socket_port'), '--workers', '8', '--access-logfile', '-', '--preload', 'bkr.server.wsgi:application'], listen_port=turbogears.config.get('server.socket_port')), ]) processes.extend([ Process('slapd', args=['slapd', '-d0', '-F' + slapd_config_dir, '-hldap://127.0.0.1:3899/'], listen_port=3899, stop_signal=signal.SIGINT), ]) try: for process in processes: process.start() except: for process in processes: process.stop() raise
def setup_package(): assert os.path.exists( CONFIG_FILE), 'Config file %s must exist' % CONFIG_FILE load_config(configfile=CONFIG_FILE) log_to_stream(sys.stdout, level=logging.DEBUG) from bkr.inttest import data_setup if not 'BEAKER_SKIP_INIT_DB' in os.environ: data_setup.setup_model() with session.begin(): data_setup.create_labcontroller() #always need a labcontroller data_setup.create_task( name=u'/distribution/install', requires=u'make gcc nfs-utils wget procmail redhat-lsb ntp ' u'@development-tools @development-libs @development ' u'@desktop-platform-devel @server-platform-devel ' u'libxml2-python expect pyOpenSSL'.split()) data_setup.create_task( name=u'/distribution/reservesys', requires=u'emacs vim-enhanced unifdef sendmail'.split()) data_setup.create_task(name=u'/distribution/utils/dummy') data_setup.create_task(name=u'/distribution/inventory') data_setup.create_distro() if not os.path.exists(turbogears.config.get('basepath.rpms')): os.mkdir(turbogears.config.get('basepath.rpms')) setup_slapd() turbogears.testutil.make_app(Root) turbogears.testutil.start_server() global processes processes = [] if 'BEAKER_SERVER_BASE_URL' not in os.environ: # need to start the server ourselves # Usual pkg_resources ugliness is needed to ensure gunicorn doesn't # import pkg_resources before we get a chance to specify our # requirements in bkr.server.wsgi processes.extend([ Process('gunicorn', args=[sys.executable, '-c', '__requires__ = ["CherryPy < 3.0"]; import pkg_resources; ' \ 'from gunicorn.app.wsgiapp import run; run()', '--bind', ':%s' % turbogears.config.get('server.socket_port'), '--workers', '8', '--access-logfile', '-', '--preload', 'bkr.server.wsgi:application'], listen_port=turbogears.config.get('server.socket_port')), ]) processes.extend([ Process('slapd', args=[ 'slapd', '-d0', '-F' + slapd_config_dir, '-hldap://127.0.0.1:3899/' ], listen_port=3899, stop_signal=signal.SIGINT), ]) try: for process in processes: process.start() except: for process in processes: process.stop() raise
def setup_package(): assert os.path.exists( CONFIG_FILE), 'Config file %s must exist' % CONFIG_FILE load_config(configfile=CONFIG_FILE) log_to_stream(sys.stdout, level=logging.DEBUG) from bkr.inttest import data_setup if not 'BEAKER_SKIP_INIT_DB' in os.environ: data_setup.setup_model() with session.begin(): # Fill in the bare minimum data which Beaker assumes will always be present. # Note that this can be called multiple times (for example, the # beaker-server-redhat add-on package reuses this setup function). if not LabController.query.count(): data_setup.create_labcontroller() if not Task.query.count(): data_setup.create_task( name=u'/distribution/install', requires=u'make gcc nfs-utils wget procmail redhat-lsb ntp ' u'@development-tools @development-libs @development ' u'@desktop-platform-devel @server-platform-devel ' u'libxml2-python expect pyOpenSSL'.split()) data_setup.create_task(name=u'/distribution/check-install') data_setup.create_task( name=u'/distribution/reservesys', requires=u'emacs vim-enhanced unifdef sendmail'.split()) data_setup.create_task(name=u'/distribution/utils/dummy') data_setup.create_task(name=u'/distribution/inventory') if not Distro.query.count(): # The 'BlueShoeLinux5-5' string appears in many tests, because it's # the distro name used in complete-job.xml. data_setup.create_distro_tree(osmajor=u'BlueShoeLinux5', distro_name=u'BlueShoeLinux5-5') if os.path.exists(turbogears.config.get('basepath.rpms')): # Remove any task RPMs left behind by previous test runs for entry in os.listdir(turbogears.config.get('basepath.rpms')): shutil.rmtree(os.path.join(turbogears.config.get('basepath.rpms'), entry), ignore_errors=True) else: os.mkdir(turbogears.config.get('basepath.rpms')) setup_slapd() mail_capture_thread.start() if turbogears.config.get('openstack.identity_api_url'): setup_openstack() turbogears.testutil.make_app(Root) turbogears.testutil.start_server() global processes processes = [] if 'BEAKER_SERVER_BASE_URL' not in os.environ: # need to start the server ourselves # Usual pkg_resources ugliness is needed to ensure gunicorn doesn't # import pkg_resources before we get a chance to specify our # requirements in bkr.server.wsgi processes.extend([ Process('gunicorn', args=[sys.executable, '-c', '__requires__ = ["CherryPy < 3.0"]; import pkg_resources; ' \ 'from gunicorn.app.wsgiapp import run; run()', '--bind', ':%s' % turbogears.config.get('server.socket_port'), '--workers', '8', '--access-logfile', '-', '--preload', 'bkr.server.wsgi:application'], listen_port=turbogears.config.get('server.socket_port')), ]) processes.extend([ Process('slapd', args=[ 'slapd', '-d0', '-F' + slapd_config_dir, '-hldap://127.0.0.1:3899/' ], listen_port=3899, stop_signal=signal.SIGINT), ]) try: for process in processes: process.start() except: for process in processes: process.stop() raise