xref: /aosp_15_r20/external/autotest/tko/parsers/test/execute_parser.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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