summaryrefslogtreecommitdiffstats
path: root/scripts/lib/resulttool
diff options
context:
space:
mode:
authorYeoh Ee Peng <ee.peng.yeoh@intel.com>2019-04-09 13:53:07 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-04-10 13:46:17 +0100
commit8d70c776785fd88143bb34f53651e37483a726c5 (patch)
tree524642777f64d8233ddf975d8327f7a1146b249a /scripts/lib/resulttool
parentb25ede81df2e43fa2dc8e634f6952de28ed8a0b8 (diff)
downloadpoky-8d70c776785fd88143bb34f53651e37483a726c5.tar.gz
resulttool/manualexecution: Enable configuration options selection
Current manualexecution required user to input configuration manually where there were inconsistent inputs and human typo issues. Enable manualexecution to have the optional feature where it will use pre-compiled configuration options file where user will be able to select configuration from the pre-compiled list instead of manual key-in the configuration. This will eliminate human error. Expect the pre-compiled configuration options file in json format below { "bsps-hw": { "IMAGE_BASENAME": { "1": "core-image-sato-sdk" }, "MACHINE": { "1": "beaglebone-yocto", "2": "edgerouter", "3": "mpc8315e-rdb", "4": "genericx86", "5": "genericx86-64" } }, "bsps-qemu": { "IMAGE_BASENAME": { "1": "core-image-sato-sdk" }, "MACHINE": { "1": "qemuarm", "2": "qemuarm64", "3": "qemumips", "4": "qemumips64", "5": "qemuppc", "6": "qemux86", "7": "qemux86-64" } } } (From OE-Core rev: 1af7e04223b415a64e100a9f91d60f5e9b0f789a) Signed-off-by: Yeoh Ee Peng <ee.peng.yeoh@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/resulttool')
-rwxr-xr-xscripts/lib/resulttool/manualexecution.py48
1 files changed, 39 insertions, 9 deletions
diff --git a/scripts/lib/resulttool/manualexecution.py b/scripts/lib/resulttool/manualexecution.py
index c94f98126b..57e7b2999e 100755
--- a/scripts/lib/resulttool/manualexecution.py
+++ b/scripts/lib/resulttool/manualexecution.py
@@ -38,7 +38,21 @@ class ManualTestRunner(object):
38 print('Only lowercase alphanumeric, hyphen and dot are allowed. Please try again') 38 print('Only lowercase alphanumeric, hyphen and dot are allowed. Please try again')
39 return output 39 return output
40 40
41 def _create_config(self): 41 def _get_available_config_options(self, config_options, test_module, target_config):
42 avail_config_options = None
43 if test_module in config_options:
44 avail_config_options = config_options[test_module].get(target_config)
45 return avail_config_options
46
47 def _choose_config_option(self, options):
48 while True:
49 output = input('{} = '.format('Option index number'))
50 if output in options:
51 break
52 print('Only integer index inputs from above available configuration options are allowed. Please try again.')
53 return options[output]
54
55 def _create_config(self, config_options):
42 from oeqa.utils.metadata import get_layers 56 from oeqa.utils.metadata import get_layers
43 from oeqa.utils.commands import get_bb_var 57 from oeqa.utils.commands import get_bb_var
44 from resulttool.resultutils import store_map 58 from resulttool.resultutils import store_map
@@ -54,11 +68,22 @@ class ManualTestRunner(object):
54 68
55 extra_config = set(store_map['manual']) - set(self.configuration) 69 extra_config = set(store_map['manual']) - set(self.configuration)
56 for config in sorted(extra_config): 70 for config in sorted(extra_config):
57 print('---------------------------------------------') 71 avail_config_options = self._get_available_config_options(config_options, self.test_module, config)
58 print('This is configuration #%s. Please provide configuration value(use "None" if not applicable).' % config) 72 if avail_config_options:
59 print('---------------------------------------------') 73 print('---------------------------------------------')
60 value_conf = self._get_input('Configuration Value') 74 print('These are available configuration #%s options:' % config)
61 print('---------------------------------------------\n') 75 print('---------------------------------------------')
76 for option, _ in sorted(avail_config_options.items(), key=lambda x: int(x[0])):
77 print('%s: %s' % (option, avail_config_options[option]))
78 print('Please select configuration option, enter the integer index number.')
79 value_conf = self._choose_config_option(avail_config_options)
80 print('---------------------------------------------\n')
81 else:
82 print('---------------------------------------------')
83 print('This is configuration #%s. Please provide configuration value(use "None" if not applicable).' % config)
84 print('---------------------------------------------')
85 value_conf = self._get_input('Configuration Value')
86 print('---------------------------------------------\n')
62 self.configuration[config] = value_conf 87 self.configuration[config] = value_conf
63 88
64 def _create_result_id(self): 89 def _create_result_id(self):
@@ -99,9 +124,12 @@ class ManualTestRunner(object):
99 basepath = os.environ['BUILDDIR'] 124 basepath = os.environ['BUILDDIR']
100 self.write_dir = basepath + '/tmp/log/manual/' 125 self.write_dir = basepath + '/tmp/log/manual/'
101 126
102 def run_test(self, file): 127 def run_test(self, file, config_options_file):
103 self._get_testcases(file) 128 self._get_testcases(file)
104 self._create_config() 129 config_options = {}
130 if config_options_file:
131 config_options = load_json_file(config_options_file)
132 self._create_config(config_options)
105 self._create_result_id() 133 self._create_result_id()
106 self._create_write_dir() 134 self._create_write_dir()
107 test_results = {} 135 test_results = {}
@@ -113,7 +141,7 @@ class ManualTestRunner(object):
113 141
114def manualexecution(args, logger): 142def manualexecution(args, logger):
115 testrunner = ManualTestRunner() 143 testrunner = ManualTestRunner()
116 get_configuration, get_result_id, get_write_dir, get_test_results = testrunner.run_test(args.file) 144 get_configuration, get_result_id, get_write_dir, get_test_results = testrunner.run_test(args.file, args.config_options_file)
117 resultjsonhelper = OETestResultJSONHelper() 145 resultjsonhelper = OETestResultJSONHelper()
118 resultjsonhelper.dump_testresult_file(get_write_dir, get_configuration, get_result_id, get_test_results) 146 resultjsonhelper.dump_testresult_file(get_write_dir, get_configuration, get_result_id, get_test_results)
119 return 0 147 return 0
@@ -125,3 +153,5 @@ def register_commands(subparsers):
125 group='manualexecution') 153 group='manualexecution')
126 parser_build.set_defaults(func=manualexecution) 154 parser_build.set_defaults(func=manualexecution)
127 parser_build.add_argument('file', help='specify path to manual test case JSON file.Note: Please use \"\" to encapsulate the file path.') 155 parser_build.add_argument('file', help='specify path to manual test case JSON file.Note: Please use \"\" to encapsulate the file path.')
156 parser_build.add_argument('-c', '--config-options-file', default='',
157 help='the config options file to import and used as available configuration option selection')