From 51502e5b922f3fd66e3519603f3f22b733815df2 Mon Sep 17 00:00:00 2001 From: XiangchenShen Date: Thu, 9 Jan 2025 21:36:43 +0800 Subject: [PATCH] feat(disable rotate option):add an option to diable rotate event --- kea/droidbot.py | 8 ++++++-- kea/input_manager.py | 5 ++++- kea/input_policy.py | 11 ++++++++--- kea/start.py | 10 +++++++--- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/kea/droidbot.py b/kea/droidbot.py index 85ad982..799585c 100644 --- a/kea/droidbot.py +++ b/kea/droidbot.py @@ -55,6 +55,7 @@ def __init__( is_harmonyos=False, is_package=False, generate_utg=False, + disable_rotate=False, settings:"Setting"=None ): """ @@ -123,6 +124,7 @@ def __init__( self.run_initial_rules_after_every_mutation = run_initial_rules_after_every_mutation self.is_package = is_package self.generate_utg = generate_utg + self.disable_rotate = disable_rotate self.settings = settings try: self.init_droidbot(is_harmonyos) @@ -170,7 +172,8 @@ def init_droidbot(self, is_harmonyos): number_of_events_that_restart_app=self.number_of_events_that_restart_app, generate_utg=self.generate_utg, output_dir=self.output_dir, - is_package=self.is_package + is_package=self.is_package, + disable_rotate=self.disable_rotate ) # self.send_documents() # initializer for HarmonyOS system @@ -207,7 +210,8 @@ def init_droidbot(self, is_harmonyos): replay_output=self.replay_output, kea=self.kea, output_dir=self.output_dir, - is_package=self.is_package) + is_package=self.is_package, + disable_rotate=self.disable_rotate) @staticmethod def get_instance(): diff --git a/kea/input_manager.py b/kea/input_manager.py index ac9bac2..6d4ec2c 100644 --- a/kea/input_manager.py +++ b/kea/input_manager.py @@ -49,6 +49,7 @@ def __init__( generate_utg=False, output_dir=None, is_package=False, + disable_rotate=False ): """ manage input event sent to the target device @@ -75,6 +76,7 @@ def __init__( self.number_of_events_that_restart_app = number_of_events_that_restart_app self.generate_utg = generate_utg self.sim_calculator = Similarity(DEFAULT_UI_TARPIT_NUM) + self.disable_rotate=disable_rotate self.is_package = is_package self.policy = self.get_input_policy(device, app, master) @@ -87,10 +89,11 @@ def get_input_policy(self, device, app, master): app, self.kea, self.generate_utg, + self.disable_rotate, self.output_dir ) elif self.policy_name == POLICY_RANDOM: - input_policy = RandomPolicy(device, app, kea=self.kea, number_of_events_that_restart_app = self.number_of_events_that_restart_app, clear_and_reinstall_app=not self.is_package, allow_to_generate_utg = self.generate_utg, output_dir=self.output_dir) + input_policy = RandomPolicy(device, app, kea=self.kea, number_of_events_that_restart_app = self.number_of_events_that_restart_app, clear_and_reinstall_app= not self.is_package, allow_to_generate_utg = self.generate_utg,disable_rotate=self.disable_rotate,output_dir=self.output_dir) elif self.policy_name == POLICY_LLM: input_policy = LLMPolicy(device, app, kea=self.kea, number_of_events_that_restart_app = self.number_of_events_that_restart_app, clear_and_restart_app_data_after_100_events=True, allow_to_generate_utg = self.generate_utg, output_dir=self.output_dir) else: diff --git a/kea/input_policy.py b/kea/input_policy.py index 41b4a59..20b76c0 100644 --- a/kea/input_policy.py +++ b/kea/input_policy.py @@ -377,6 +377,7 @@ def __init__( number_of_events_that_restart_app=100, clear_and_reinstall_app=False, allow_to_generate_utg=False, + disable_rotate=False, output_dir=None ): super(RandomPolicy, self).__init__(device, app, kea, allow_to_generate_utg) @@ -386,6 +387,7 @@ def __init__( self.logger = logging.getLogger(self.__class__.__name__) self.output_dir=output_dir save_log(self.logger, self.output_dir) + self.disable_rotate=disable_rotate self.last_rotate_events = KEY_RotateDeviceToPortraitEvent def generate_event(self): @@ -452,7 +454,8 @@ def generate_random_event_based_on_current_state(self): possible_events = current_state.get_possible_input() possible_events.append(KeyEvent(name="BACK")) - possible_events.append(RotateDevice()) + if not self.disable_rotate: + possible_events.append(RotateDevice()) self._event_trace += EVENT_FLAG_EXPLORE @@ -475,11 +478,12 @@ class GuidedPolicy(KeaInputPolicy): generate events around the main path """ - def __init__(self, device, app, kea=None, allow_to_generate_utg=False,output_dir=None): + def __init__(self, device, app, kea=None, allow_to_generate_utg=False,disable_rotate=False,output_dir=None): super(GuidedPolicy, self).__init__(device, app, kea, allow_to_generate_utg) self.logger = logging.getLogger(self.__class__.__name__) self.output_dir = output_dir save_log(self.logger,self.output_dir) + self.disable_rotate = disable_rotate if len(self.kea.all_mainPaths): self.logger.info("Found %d mainPaths" % len(self.kea.all_mainPaths)) else: @@ -708,7 +712,8 @@ def generate_random_event_based_on_current_state(self): # if self.random_input: # random.shuffle(possible_events) possible_events.append(KeyEvent(name="BACK")) - possible_events.append(RotateDevice()) + if not self.disable_rotate: + possible_events.append(RotateDevice()) self._event_trace += EVENT_FLAG_EXPLORE diff --git a/kea/start.py b/kea/start.py index 44f2271..a2ef119 100644 --- a/kea/start.py +++ b/kea/start.py @@ -46,6 +46,7 @@ class Setting: is_harmonyos:bool=False generate_utg:bool=False is_package:bool=False + disable_rotate:bool=False def parse_args(): """Parse, load and sanitize the args from the command line and the config file `config.yml`. @@ -82,6 +83,8 @@ def parse_args(): help="load the args from config.yml, and the args in the command line will be ignored.") parser.add_argument("-utg", action="store_true", dest="generate_utg", default=False, help="Generate UI transition graph") + parser.add_argument("-disable_rotate", action="store_true", dest="disable_rotate", default=False, + help="Disable rotate event in the testing") options = parser.parse_args() # load the args from the config file `config.yml` @@ -91,7 +94,6 @@ def parse_args(): # sanitize these args sanitize_args(options) - return options def load_ymal_args(opts): @@ -164,7 +166,8 @@ def start_kea(kea:"Kea", settings:"Setting" = None): is_harmonyos=settings.is_harmonyos, is_package=settings.is_package, settings=settings, - generate_utg=settings.generate_utg + generate_utg=settings.generate_utg, + disable_rotate=settings.disable_rotate ) kea._pdl_driver.set_droidbot(droidbot) @@ -190,7 +193,8 @@ def main(): grant_perm=options.grant_perm, is_emulator=options.is_emulator, generate_utg=options.generate_utg, - is_package=options.is_package + is_package=options.is_package, + disable_rotate=options.disable_rotate ) # load the pdl driver for Android/HarmonyOS