#!/usr/bin/env python import os from distutils.version import StrictVersion from wlauto.core.extension_loader import ExtensionLoader from wlauto.common.android.workload import ApkWorkload from wlauto.utils.android import ApkInfo el = ExtensionLoader() class fake_config(object): def __init__(self, ext_loader): self.ext_loader = ext_loader self.get_extension = ext_loader.get_extension class fake_device(object): platform = "android" config = fake_config(el) device = fake_device() if "WA_USER_DIRECTORY" in os.environ: base_path = os.environ["WA_USER_DIRECTORY"] else: base_path = "~/.workload_automation/dependencies/" apk_workloads = [e for e in el.list_workloads() if issubclass(el.get_extension_class(e.name), ApkWorkload)] for wl in apk_workloads: # Get versions from workloads workload_versions = [] for p in wl.parameters: if p.name == "version" and p.allowed_values: workload_versions = p.allowed_values break else: continue dep_path = os.path.join(os.path.expanduser(base_path), wl.name) apks = [apk for apk in os.listdir(dep_path) if apk.endswith(".apk")] # Get versions from APK files apk_versions = [] for apk in apks: # skip antutu 3d benchmark apk if apk == "com.antutu.benchmark.full-1.apk": continue apk_versions.append(ApkInfo(os.path.join(dep_path, apk)).version_name) # Output workload info print "Workload: {}".format(wl.name) print "Workload Versions: {}".format(sorted(workload_versions, key=StrictVersion)) print "APK versions: {}".format(sorted(apk_versions, key=StrictVersion)) # Check for bad/missing versions error = False for v in apk_versions: if v not in workload_versions: msg = "APK version '{}' not present in workload list of versions" print msg.format(v) error = True if not error: print "OK"