=== modified file 'lava_dispatcher/actions/lava_test_shell.py'
@@ -53,6 +53,7 @@
# uuid The "analyzer_assigned_uuid" of the
# test_run that is being generated.
# testdef.yml The test definition.
+# testdef_metadata Metadata extracted from test definition.
# install.sh The install steps.
# run.sh The run steps.
# [repos] The test definition can specify bzr or git
@@ -74,6 +75,7 @@
# pkgs.txt Ditto
# ${IDX}_${TEST_ID}-${TIMESTAMP}/
# testdef.yml
+# testdef_metadata
# stdout.log
# return_code The exit code of run.sh.
# analyzer_assigned_uuid
@@ -173,8 +175,7 @@
cwd = os.getcwd()
gitdir = os.path.join(tmpdir, 'gittestrepo')
try:
- subprocess.check_call(['git', 'clone', testdef_repo,
- gitdir])
+ subprocess.check_call(['git', 'clone', testdef_repo, gitdir])
if revision:
os.chdir(gitdir)
subprocess.check_call(['git', 'checkout', revision])
@@ -201,6 +202,26 @@
logging.error('Unable to get test definition from bzr\n' + str(e))
+def _get_testdef_info(testdef):
+ metadata = {'os': '', 'devices': '', 'environment': ''}
+ metadata['version'] = str(testdef['metadata'].get('version'))
+ metadata['description'] = str(testdef['metadata'].get('description'))
+ metadata['format'] = str(testdef['metadata'].get('format'))
+
+ # Convert list to comma separated string.
+ if testdef['metadata'].get('os'):
+ metadata['os'] = ','.join(testdef['metadata'].get('os'))
+
+ if testdef['metadata'].get('devices'):
+ metadata['devices'] = ','.join(testdef['metadata'].get('devices'))
+
+ if testdef['metadata'].get('environment'):
+ metadata['environment'] = ','.join(
+ testdef['metadata'].get('environment'))
+
+ return metadata
+
+
class TestDefinitionLoader(object):
"""
A TestDefinitionLoader knows how to load test definitions from the data
@@ -227,7 +248,10 @@
idx = len(self.testdefs)
- self._append_testdef(URLTestDefinition(self.context, idx, testdef))
+ testdef_metadata = {'url': url, 'location': 'URL'}
+ testdef_metadata.update(_get_testdef_info(testdef))
+ self._append_testdef(URLTestDefinition(self.context, idx, testdef,
+ testdef_metadata))
def load_from_repo(self, testdef_repo):
tmpdir = utils.mkdtemp(self.tmpbase)
@@ -289,9 +313,10 @@
A test definition that was loaded from a URL.
"""
- def __init__(self, context, idx, testdef):
+ def __init__(self, context, idx, testdef, testdef_metadata):
self.context = context
self.testdef = testdef
+ self.testdef_metadata = testdef_metadata
self.idx = idx
self.test_run_id = '%s_%s' % (idx, self.testdef['metadata']['name'])
self.uuid = str(uuid4())
@@ -378,6 +403,9 @@
with open('%s/uuid' % hostdir, 'w') as f:
f.write(self.uuid)
+ with open('%s/testdef_metadata' % hostdir, 'w') as f:
+ f.write(yaml.dump(self.testdef_metadata))
+
if 'install' in self.testdef:
self._create_repos(hostdir)
self._create_target_install(hostdir, targetdir)
@@ -408,7 +436,14 @@
"""
def __init__(self, context, idx, testdef, repo, info):
- URLTestDefinition.__init__(self, context, idx, testdef)
+ testdef_metadata = {}
+ testdef_metadata.update({'url': info['branch_url']})
+ testdef_metadata.update({'location': info['branch_vcs'].upper()})
+ testdef_metadata.update({'repo_rev': info['branch_revision']})
+ testdef_metadata.update(_get_testdef_info(testdef))
+
+ URLTestDefinition.__init__(self, context, idx, testdef,
+ testdef_metadata)
self.repo = repo
self._sw_sources.append(info)
=== modified file 'lava_dispatcher/lava_test_shell.py'
@@ -292,8 +292,11 @@
uuid = _read_content(os.path.join(test_run_dir, 'analyzer_assigned_uuid'))
attachments = _get_run_attachments(test_run_dir, testdef, stdout)
attributes = _attributes_from_dir(os.path.join(test_run_dir, 'attributes'))
+ testdef_metadata = _read_content(os.path.join(test_run_dir,
+ 'testdef_metadata'))
testdef = yaml.load(testdef)
+ testdef_metadata = yaml.load(testdef_metadata)
if uuid in testdefs_by_uuid:
sw_sources = testdefs_by_uuid[uuid]._sw_sources
else:
@@ -311,6 +314,7 @@
'hardware_context': hwcontext,
'attachments': attachments,
'attributes': attributes,
+ 'testdef_metadata': testdef_metadata,
}
=== modified file 'lava_dispatcher/test_data.py'
@@ -34,7 +34,8 @@
def __init__(self, test_id='lava'):
self.job_status = 'pass'
self.metadata = {}
- self._test_run = { 'test_results':[], 'attachments':[], 'tags':[] }
+ self._test_run = { 'test_results':[], 'attachments':[], 'tags':[],
+ 'testdef_metadata':{} }
self._test_run['test_id'] = test_id
self._assign_date()
self._assign_uuid()
@@ -75,4 +76,3 @@
def get_test_run(self):
self.add_result('job_complete', self.job_status)
return self._test_run
-
=== modified file 'lava_test_shell/lava-test-runner-android'
@@ -92,6 +92,7 @@
mkdir ${odir}
mkdir ${odir}/attachments/
cp ${line}/testdef.yaml ${odir}/
+ cp ${line}/testdef_metadata ${odir}/
cp ${line}/uuid ${odir}/analyzer_assigned_uuid
cp ${line}/run.sh ${odir}/attachments/
echo 'text/plain' > ${odir}/attachments/run.sh.mimetype
=== modified file 'lava_test_shell/lava-test-runner-ubuntu'
@@ -76,6 +76,7 @@
mkdir ${odir}/attachments/
cp ${line}/uuid ${odir}/analyzer_assigned_uuid
cp ${line}/testdef.yaml ${odir}/
+ cp ${line}/testdef_metadata ${odir}/
cp ${line}/run.sh ${odir}/attachments/
echo 'text/plain' > ${odir}/attachments/run.sh.mimetype
if [ -f ${line}/install.sh ]; then