This repository has been archived on 2023-11-05. You can view files and clone it, but cannot push or open issues or pull requests.
wasm-micro-runtime/test-tools/component-test/start.py

153 lines
4.9 KiB
Python
Raw Normal View History

#
# Copyright (C) 2019 Intel Corporation. All rights reserved.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
It is the entrance of the iagent test framework.
"""
from __future__ import print_function
import argparse
import datetime
import os
import pprint
import random
import re
import shlex
import subprocess
import signal
import sys
import time
sys.path.append('../../../app-sdk/python')
from framework.test_utils import *
from framework.framework import *
def signal_handler(signal, frame):
print('Pressed Ctrl+C!')
sys.exit(0)
def Register_signal_handler():
signal.signal(signal.SIGINT, signal_handler)
# signal.pause()
def flatten_args_list(l):
if l is None:
return None
return [x for y in l for x in y]
if __name__ == "__main__":
parser = argparse.ArgumentParser(description = "to run specific case(s) "\
"in specific suite(s) with FC test framework")
parser.add_argument('-s', dest = 'suite_id', action = 'append',
nargs = '+',
help = 'one or multiple suite ids, which are also setup ids.'\
'by default if it isn\'t passed from argument, all '\
'suites are going to be run.')
parser.add_argument('-t', dest = 'case_id', action = 'append',
nargs = '+',
help = 'one or multiple cases ids.'\
'by default if it isn\'t passed from argument, all '\
'cases in specific suites are going to be run.')
parser.add_argument('-n', dest = 'repeat_time', action = 'store',
default = 1,
help = 'how many times do you want to run. there is 40s '\
'break time between two rounds. each round includs '\
'init_setup, run_test_case and deinit_setup.')
parser.add_argument('--shuffle_all', dest = 'shuffle_all',
default = False, action = 'store_true',
help = 'shuffle_all test cases in per test suite '\
'by default, all cases under per suite should '\
'be executed by input order.')
parser.add_argument('--cases_list', dest='cases_list_file_path',
default=None,
action='store',
help="read cases list from a flie ")
parser.add_argument('--skip_proc', dest='skip_proc',
default = False, action = 'store_true',
help='do not start the test process.'\
'sometimes the gw_broker process will be started in eclipse for debug purpose')
parser.add_argument('-b', dest = 'binaries', action = 'store',
help = 'The path of target folder ')
parser.add_argument('-d', dest = 'debug', action = 'store_true',
help = 'wait user to attach the target process after launch processes ')
parser.add_argument('--rebuild', dest = 'rebuild', action = 'store_true',
help = 'rebuild all test binaries')
args = parser.parse_args()
print("------------------------------------------------------------")
print("parsing arguments ... ...")
print(args)
'''
logger = logging.getLogger('coapthon.server.coap')
logger.setLevel(logging.DEBUG)
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
logger.addHandler(console)
'''
print("------------------------------------------------------------")
print("preparing wamr binary and test tools ... ...")
os.system("cd ../../samples/simple/ && bash build.sh -p host-interp")
Register_signal_handler()
api_init_globals();
api_create_case_event();
suites_list = flatten_args_list(args.suite_id)
cases_list = flatten_args_list(args.case_id)
dirname, filename = os.path.split(os.path.abspath(sys.argv[0]))
api_set_root_path(dirname);
framework = CTestFramework(dirname);
framework.repeat_time = int(args.repeat_time)
framework.shuffle_all = args.shuffle_all
framework.skip_proc=args.skip_proc
api_set_value('keep_env', args.skip_proc)
api_set_value('debug', args.debug)
api_set_value('rebuild', args.rebuild)
binary_path = args.binaries
if binary_path is None:
binary_path = os.path.abspath(dirname + '/../..')
print("checking execution binary path: " + binary_path)
if not os.path.exists(binary_path):
print("The execution binary path was not available. quit...")
os._exit(0)
api_set_value('binary_path', binary_path)
if suites_list is not None:
framework.target_suites = suites_list
else:
framework.load_suites()
framework.target_cases = cases_list
framework.start_run()
print("\n\n------------------------------------------------------------")
print("The run folder is [" + framework.running_folder +"]")
print("that's all. bye")
print("kill to quit..")
t_kill_process_by_name("start.py")
sys.exit(0)
os._exit()