1#!/usr/bin/env python3 2# 3# test results tool - tool for manipulating OEQA test result json files 4# (merge results, summarise results, regression analysis, generate manual test results file) 5# 6# To look for help information. 7# $ resulttool 8# 9# To store test results from oeqa automated tests, execute the below 10# $ resulttool store <source_dir> <git_branch> 11# 12# To merge test results, execute the below 13# $ resulttool merge <base_result_file> <target_result_file> 14# 15# To report test report, execute the below 16# $ resulttool report <source_dir> 17# 18# To perform regression file analysis, execute the below 19# $ resulttool regression-file <base_result_file> <target_result_file> 20# 21# To execute manual test cases, execute the below 22# $ resulttool manualexecution <manualjsonfile> 23# 24# By default testresults.json for manualexecution store in <build>/tmp/log/manual/ 25# 26# Copyright (c) 2019, Intel Corporation. 27# 28# This program is free software; you can redistribute it and/or modify it 29# under the terms and conditions of the GNU General Public License, 30# version 2, as published by the Free Software Foundation. 31# 32# This program is distributed in the hope it will be useful, but WITHOUT 33# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 34# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 35# more details. 36# 37 38import os 39import sys 40import argparse 41import logging 42script_path = os.path.dirname(os.path.realpath(__file__)) 43lib_path = script_path + '/lib' 44sys.path = sys.path + [lib_path] 45import argparse_oe 46import scriptutils 47import resulttool.merge 48import resulttool.store 49import resulttool.regression 50import resulttool.report 51import resulttool.manualexecution 52logger = scriptutils.logger_create('resulttool') 53 54def main(): 55 parser = argparse_oe.ArgumentParser(description="OEQA test result manipulation tool.", 56 epilog="Use %(prog)s <subcommand> --help to get help on a specific command") 57 parser.add_argument('-d', '--debug', help='enable debug output', action='store_true') 58 parser.add_argument('-q', '--quiet', help='print only errors', action='store_true') 59 subparsers = parser.add_subparsers(dest="subparser_name", title='subcommands', metavar='<subcommand>') 60 subparsers.required = True 61 subparsers.add_subparser_group('manualexecution', 'manual testcases', 300) 62 resulttool.manualexecution.register_commands(subparsers) 63 subparsers.add_subparser_group('setup', 'setup', 200) 64 resulttool.merge.register_commands(subparsers) 65 resulttool.store.register_commands(subparsers) 66 subparsers.add_subparser_group('analysis', 'analysis', 100) 67 resulttool.regression.register_commands(subparsers) 68 resulttool.report.register_commands(subparsers) 69 70 args = parser.parse_args() 71 if args.debug: 72 logger.setLevel(logging.DEBUG) 73 elif args.quiet: 74 logger.setLevel(logging.ERROR) 75 76 try: 77 ret = args.func(args, logger) 78 except argparse_oe.ArgumentUsageError as ae: 79 parser.error_subcommand(ae.message, ae.subcommand) 80 return ret 81 82if __name__ == "__main__": 83 sys.exit(main()) 84