import os
import sys
import time
-import xmlrpclib
+import xmlrpc.client
from collections import OrderedDict
from enum import Enum
try:
bundle_sha = server.scheduler.job_status(str(job))['bundle_sha1']
bundle = server.dashboard.get(bundle_sha)
- except Fault as f:
- print 'Error while fetching results bundle', f
+ except xmlrpc.client.Fault as f:
+ print('Error while fetching results bundle', f.faultString)
return json.loads(bundle['content'])
def check_job_all_test_cases_state_count(server, job):
content = get_job_bundle_content(server, job)
+ # FIXME:Those tests are part of the boot actions and fail randomly but
+ # doesn't affect the behaviour of the tests. We should update our Lava
+ # installation and try to reproduce it. This error was encountered on
+ # Ubuntu 16.04.
+ tests_known_to_fail=['mount', 'df', 'ls', 'ip', 'wait_for_test_image_prompt']
+
passed_tests=0
failed_tests=0
for run in content['test_runs']:
if 'test_case_id' in result :
if result['result'] in 'pass':
passed_tests+=1
- elif result['test_case_id'] in 'wait_for_test_image_prompt':
- # FIXME:This test is part of the boot action and fails
- # randomly but doesn't affect the behaviour of the tests.
- # No reply on the Lava IRC channel yet. We should update
- # our Lava installation and try to reproduce it. This error
- # was encountered ont the KVM trusty image only. Not seen
- # on Xenial at this point.
+ elif result['test_case_id'] in tests_known_to_fail:
pass
else:
failed_tests+=1
# save them as CSV files localy
def fetch_benchmark_results(server, job):
content = get_job_bundle_content(server, job)
- testcases = ['processed_results_close.csv', 'processed_results_open_enoent.csv', 'processed_results_open_efault.csv']
+ testcases = ['processed_results_close.csv',
+ 'processed_results_ioctl.csv',
+ 'processed_results_open_efault.csv',
+ 'processed_results_open_enoent.csv',
+ 'processed_results_dup_close.csv',
+ 'processed_results_raw_syscall_getpid.csv',
+ 'processed_results_lttng_test_filter.csv']
# The result bundle is a large JSON containing the results of every testcase
# of the LAVA job as well as the files that were attached during the run.
# benchmark results produced during the run.
for run in content['test_runs']:
# We only care of the benchmark testcases
- if 'benchmark-syscall-' in run['test_id']:
+ if 'benchmark-' in run['test_id']:
if 'test_results' in run:
for res in run['test_results']:
if 'attachments' in res:
for a in res['attachments']:
# We only save the results file
if a['pathname'] in testcases:
- with open(a['pathname'],'w') as f:
+ with open(a['pathname'],'wb') as f:
# Convert the b64 representation of the
# result file and write it to a file
# in the current working directory
# Decode the base64 file and split on newlines to iterate
# on list
- testoutput = base64.b64decode(attachment['content']).split('\n')
+ testoutput = str(base64.b64decode(bytes(attachment['content'], encoding='UTF-8'))).split('\n')
# Create a generator to iterate on the lines and keeping
# the state of the iterator across the two loops.
def get_config_cmd(build_device):
packages=['bsdtar', 'psmisc', 'wget', 'python3', 'python3-pip', \
'libglib2.0-dev', 'libffi-dev', 'elfutils', 'libdw-dev', \
- 'libelf-dev', 'libmount-dev', 'libxml2', 'libpfm4-dev']
+ 'libelf-dev', 'libmount-dev', 'libxml2', 'libpfm4-dev', \
+ 'libnuma-dev', 'python3-dev']
command = OrderedDict({
'command': 'lava_command_run',
'parameters': {
'cat /etc/resolv.conf',
'echo nameserver 172.18.0.12 > /etc/resolv.conf',
'groupadd tracing'
- ]
+ ],
+ 'timeout':300
}
})
if build_device in 'x86':
'revision': 'master',
'testdef': 'lava/baremetal-tests/failing-close.yml'
},
+ {
+ 'git-repo': 'https://github.com/lttng/lttng-ci.git',
+ 'revision': 'master',
+ 'testdef': 'lava/baremetal-tests/failing-ioctl.yml'
+ },
{
'git-repo': 'https://github.com/lttng/lttng-ci.git',
'revision': 'master',
'testdef': 'lava/baremetal-tests/failing-open-efault.yml'
},
+ {
+ 'git-repo': 'https://github.com/lttng/lttng-ci.git',
+ 'revision': 'master',
+ 'testdef': 'lava/baremetal-tests/success-dup-close.yml'
+ },
+ {
+ 'git-repo': 'https://github.com/lttng/lttng-ci.git',
+ 'revision': 'master',
+ 'testdef': 'lava/baremetal-tests/raw-syscall-getpid.yml'
+ },
{
'git-repo': 'https://github.com/lttng/lttng-ci.git',
'revision': 'master',
'testdef': 'lava/baremetal-tests/failing-open-enoent.yml'
+ },
+ {
+ 'git-repo': 'https://github.com/lttng/lttng-ci.git',
+ 'revision': 'master',
+ 'testdef': 'lava/baremetal-tests/lttng-test-filter.yml'
}
],
'timeout': 18000
})
vlttng_cmd = 'vlttng --jobs=$(nproc) --profile urcu-master' \
- ' --profile babeltrace-stable-1.4 ' \
+ ' --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' \
' --override projects.lttng-tools.checkout='+lttng_tools_commit + \
' --profile lttng-tools-no-man-pages'
lava_api_key = None
try:
- lava_api_key = os.environ['LAVA_FRDESO_TOKEN']
- except Exception, e:
- print('LAVA_FRDESO_TOKEN not found in the environment variable. Exiting...')
+ lava_api_key = os.environ['LAVA_JENKINS_TOKEN']
+ except Exception as e:
+ print('LAVA_JENKINS_TOKEN not found in the environment variable. Exiting...', e )
return -1
if test_type is TestType.baremetal_benchmarks:
else:
assert False, 'Unknown test type'
- server = xmlrpclib.ServerProxy('http://%s:%s@%s/RPC2' % (USERNAME, lava_api_key, HOSTNAME))
+ server = xmlrpc.client.ServerProxy('http://%s:%s@%s/RPC2' % (USERNAME, lava_api_key, HOSTNAME))
jobid = server.scheduler.submit_job(json.dumps(j))
print('Lava jobid:{}'.format(jobid))
+ print('Lava job URL: http://lava-master.internal.efficios.com/scheduler/job/{}/log_file'.format(jobid))
#Check the status of the job every 30 seconds
jobstatus = server.scheduler.job_status(jobid)['job_status']
time.sleep(30)
jobstatus = server.scheduler.job_status(jobid)['job_status']
- passed, failed=check_job_all_test_cases_state_count(server, jobid)
-
if test_type is TestType.kvm_tests or test_type is TestType.baremetal_tests:
print_test_output(server, jobid)
elif test_type is TestType.baremetal_benchmarks:
if jobstatus not in 'Complete':
return -1
else:
+ passed, failed=check_job_all_test_cases_state_count(server, jobid)
print('With {} passed and {} failed Lava test cases.'.format(passed, failed))
- if failed == 0:
- return 0
- else:
- return -1
+ if failed == 0:
+ return 0
+ else:
+ return -1
if __name__ == "__main__":
sys.exit(main())