1*9c5db199SXin Li#!/usr/bin/python3 2*9c5db199SXin Li"""Reexecute parser in scenario and store the result at specified tag. 3*9c5db199SXin Li""" 4*9c5db199SXin Li 5*9c5db199SXin Lifrom __future__ import absolute_import 6*9c5db199SXin Lifrom __future__ import division 7*9c5db199SXin Lifrom __future__ import print_function 8*9c5db199SXin Liimport optparse, sys 9*9c5db199SXin Lifrom os import path 10*9c5db199SXin Liimport common 11*9c5db199SXin Lifrom autotest_lib.tko.parsers.test import scenario_base 12*9c5db199SXin Li 13*9c5db199SXin Liusage = 'usage: %prog [options] scenario_dirpath parser_result_tag' 14*9c5db199SXin Liparser = optparse.OptionParser(usage=usage) 15*9c5db199SXin Li 16*9c5db199SXin Li 17*9c5db199SXin Lidef main(): 18*9c5db199SXin Li (options, args) = parser.parse_args() 19*9c5db199SXin Li if len(args) < 2: 20*9c5db199SXin Li parser.print_help() 21*9c5db199SXin Li sys.exit(1) 22*9c5db199SXin Li 23*9c5db199SXin Li scenario_dirpath = path.normpath(args[0]) 24*9c5db199SXin Li parser_result_tag = args[1] 25*9c5db199SXin Li 26*9c5db199SXin Li if not path.exists(scenario_dirpath) or not path.isdir(scenario_dirpath): 27*9c5db199SXin Li print('Invalid scenarios_dirpath:', scenario_dirpath) 28*9c5db199SXin Li parser.print_help() 29*9c5db199SXin Li sys.exit(1) 30*9c5db199SXin Li 31*9c5db199SXin Li tempdir, results_dirpath = scenario_base.load_results_dir(scenario_dirpath) 32*9c5db199SXin Li harness = scenario_base.new_parser_harness(results_dirpath) 33*9c5db199SXin Li try: 34*9c5db199SXin Li parser_result = harness.execute() 35*9c5db199SXin Li except Exception as e: 36*9c5db199SXin Li parser_result = e 37*9c5db199SXin Li scenario_base.store_parser_result( 38*9c5db199SXin Li scenario_dirpath, parser_result, parser_result_tag) 39*9c5db199SXin Li tempdir.clean() 40*9c5db199SXin Li 41*9c5db199SXin Li 42*9c5db199SXin Liif __name__ == '__main__': 43*9c5db199SXin Li main() 44