X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=scripts%2Fsystem-tests%2Flava2-submit.py;h=5a08abd683236caf2dca1f94f6787abdd8bb2e3c;hb=a521b3fe651b0c066c206d3e87cdb336ab93502f;hp=4ed8a26a719e867a64a0591edd1532681e7b1249;hpb=7ce9e41770d1c62d9d4d6eb69979eb6630fcf7b7;p=lttng-ci.git diff --git a/scripts/system-tests/lava2-submit.py b/scripts/system-tests/lava2-submit.py index 4ed8a26..5a08abd 100644 --- a/scripts/system-tests/lava2-submit.py +++ b/scripts/system-tests/lava2-submit.py @@ -28,7 +28,8 @@ import yaml from jinja2 import Environment, FileSystemLoader USERNAME = 'lava-jenkins' -HOSTNAME = 'lava-master-02.internal.efficios.com' +HOSTNAME = os.environ.get('LAVA_HOST', 'lava-master-03.internal.efficios.com') +PROTO = os.environ.get('LAVA_PROTO', 'https') OBJSTORE_URL = "https://obj.internal.efficios.com/lava/results/" def parse_stable_version(stable_version_string): @@ -82,15 +83,15 @@ def check_job_all_test_cases_state_count(server, job): """ print("Testcase result:") content = server.results.get_testjob_results_yaml(str(job)) - testcases = yaml.unsafe_load(content) + testcases = yaml.load(content) passed_tests = 0 failed_tests = 0 for testcase in testcases: if testcase['result'] != 'pass': print( - "\tFAILED {}\n\t\t See http://{}{}".format( - testcase['name'], HOSTNAME, testcase['url'] + "\tFAILED {}\n\t\t See {}://{}{}".format( + testcase['name'], PROTO, HOSTNAME, testcase['url'] ) ) failed_tests += 1 @@ -104,7 +105,7 @@ def print_test_output(server, job): Parse the attachment of the testcase to fetch the stdout of the test suite """ job_finished, log = server.scheduler.jobs.logs(str(job)) - logs = yaml.unsafe_load(log.data.decode('ascii')) + logs = yaml.load(log.data.decode('ascii')) print_line = False for line in logs: if line['lvl'] != 'target': @@ -128,13 +129,28 @@ def get_vlttng_cmd( Return vlttng cmd to be used in the job template for setup. """ + major_version, minor_version = parse_stable_version(lttng_version) + + urcu_profile = "" + if lttng_version == 'master' or (major_version >= 2 and minor_version >= 11): + urcu_profile = "urcu-master" + else: + urcu_profile = "urcu-stable-0.12" + + # Starting with 2.14, babeltrace2 is the reader for testing. + if lttng_version == 'master' or (major_version >= 2 and minor_version >= 14): + babeltrace_profile = " --profile babeltrace2-stable-2.0 --profile babeltrace2-python" + babeltrace_overrides = " --override projects.babeltrace2.build-env.PYTHON=python3 --override projects.babeltrace2.build-env.PYTHON_CONFIG=python3-config -o projects.babeltrace2.configure+=--disable-man-pages" + else: + babeltrace_profile = " --profile babeltrace-stable-1.5 --profile babeltrace-python" + babeltrace_overrides = " --override projects.babeltrace.build-env.PYTHON=python3 --override projects.babeltrace.build-env.PYTHON_CONFIG=python3-config" + + vlttng_cmd = ( - 'vlttng --jobs=$(nproc) --profile urcu-master' - ' --override projects.babeltrace.build-env.PYTHON=python3' - ' --override projects.babeltrace.build-env.PYTHON_CONFIG=python3-config' - ' --profile babeltrace-stable-1.4' - ' --profile babeltrace-python' - ' --profile lttng-tools-master' + 'vlttng --jobs=$(nproc) --profile ' + urcu_profile + + babeltrace_profile + + babeltrace_overrides + + ' --profile lttng-tools-master' ' --override projects.lttng-tools.source=' + lttng_tools_url + ' --override projects.lttng-tools.checkout=' @@ -152,7 +168,6 @@ def get_vlttng_cmd( + ' --profile lttng-ust-no-man-pages' ) - major_version, minor_version = parse_stable_version(lttng_version) if lttng_version == 'master' or (major_version >= 2 and minor_version >= 11): vlttng_cmd += ( @@ -167,7 +182,7 @@ def get_vlttng_cmd( def main(): - nfsrootfs = "https://obj.internal.efficios.com/lava/rootfs/rootfs_amd64_xenial_2018-12-05.tar.gz" + send_retry_limit = 10 test_type = None parser = argparse.ArgumentParser(description='Launch baremetal test using Lava') parser.add_argument('-t', '--type', required=True) @@ -181,6 +196,12 @@ def main(): parser.add_argument('-uu', '--ust-url', required=False) parser.add_argument('-uc', '--ust-commit', required=False) parser.add_argument('-d', '--debug', required=False, action='store_true') + parser.add_argument( + '-r', '--rootfs-url', required=False, + default="https://obj.internal.efficios.com/lava/rootfs/rootfs_amd64_jammy_2023-05-18.tar.gz" + ) + parser.add_argument('--ci-repo', required=False, default='https://github.com/lttng/lttng-ci.git') + parser.add_argument('--ci-branch', required=False, default='master') args = parser.parse_args() if args.type not in TestType.values: @@ -221,7 +242,7 @@ def main(): if args.lttng_version == "master": lttng_version_string = "master" elif args.lttng_version == "canary": - lttng_version_string = "2.10" + lttng_version_string = "2.13" else: major, minor = parse_stable_version(args.lttng_version) lttng_version_string = str(major) + "." + str(minor) @@ -241,12 +262,15 @@ def main(): context['lttng_version_string'] = lttng_version_string context['kernel_url'] = args.kernel - context['nfsrootfs_url'] = nfsrootfs + context['nfsrootfs_url'] = args.rootfs_url context['lttng_modules_url'] = args.lmodule context['jenkins_build_id'] = args.build_id context['kprobe_round_nb'] = 10 + context['ci_repo'] = args.ci_repo + context['ci_branch'] = args.ci_branch + render = jinja_template.render(context) print('Job to be submitted:') @@ -257,10 +281,10 @@ def main(): return 0 server = xmlrpc.client.ServerProxy( - 'http://%s:%s@%s/RPC2' % (USERNAME, lava_api_key, HOSTNAME) + '%s://%s:%s@%s/RPC2' % (PROTO, USERNAME, lava_api_key, HOSTNAME) ) - for attempt in range(10): + for attempt in range(1, send_retry_limit + 1): try: jobid = server.scheduler.submit_job(render) except xmlrpc.client.ProtocolError as error: @@ -273,11 +297,19 @@ def main(): continue else: break + # Early exit when the maximum number of retry is reached. + if attempt == send_retry_limit: + print( + 'Protocol error on submit, maximum number of retry reached ({})'.format( + attempt + ) + ) + return -1 print('Lava jobid:{}'.format(jobid)) print( - 'Lava job URL: http://lava-master-02.internal.efficios.com/scheduler/job/{}'.format( - jobid + 'Lava job URL: {}://{}/scheduler/job/{}'.format( + PROTO, HOSTNAME, jobid ) )