def __init__(self, emulator: Emulator, apk: Apk, seed: int, number_of_events: int): api_commands.adb_start_server_safe() if seed > 500 or seed < 0: raise ValueError("seed must be within the range of 0 to 500") if number_of_events > 4200 or number_of_events < 10: raise ValueError( "number of events must be at least 10 seconds and at most 4200" ) # adb shell pm list packages | grep com.ebooks.ebookreader self.number_of_events = number_of_events self.seed = seed # output = subprocess.check_output( # [self.adb, 'shell', 'pm', 'list', 'packages', '|', 'grep', # app_package_name]).decode().strip().split('\r\n') # util.debug_print(output, len(output), flag=PRINT_FLAG) output = api_commands.adb_is_package_present(emulator, apk.package_name) if output < 1: raise ValueError("Provided {} not found.".format(apk.package_name)) elif output > 1: raise ValueError( "Provided {} is too unspecific, multiple entries found.". format(apk.package_name)) self.app_package_name = apk.package_name
def run(apk: Apk, emulator_name: str, emulator_port: int): ''' runs only monkey ''' api_commands.adb_start_server_safe() mobile_monkey.start_emulator() emulator = emulator_manager.get_adb_instance_from_emulators( config.EMULATOR_NAME) # api_commands.adb_uninstall_apk(emulator, apk) # api_commands.adb_install_apk(emulator, apk) api_commands.adb_start_launcher_of_apk(emulator, apk) log = Logcat(emulator, apk, TestType.Monkey) log.start_logcat() telnet_connector = TelnetAdb(config.LOCALHOST, emulator.port) print("Monkey started at: {}".format(time.ctime())) subprocess.check_call([ config.adb, 'shell', 'monkey', '-p', apk.package_name, '--throttle', config.MONKEY_INTERVAL, '-s', str(config.SEED), '-v', '-v', '-v', str(config.DURATION)]) print("Monkey stopped at: {}".format(time.ctime())) api_commands.adb_stop_activity_of_apk(emulator, apk) log.stop_logcat() analyzer = Analyzer(log.file_address) print(analyzer) api_commands.adb_uninstall_apk(emulator, apk)
def adb_instances_manager() -> List[Emulator]: ''' returns the List of emulators. :returns `List[Emulator]`: ''' emulators = [] api_commands.adb_start_server_safe() adb_ports = api_commands.adb_list_avd_ports() for adb_port in adb_ports: pid = util.pid_from_emulator_port(adb_port) model = api_commands.avd_model_from_pid(pid) current_emulator = Emulator(adb_port, pid, model) emulators.append(current_emulator) util.detail_print(emulators) return emulators
def start_emulator() -> bool: ''' starts emulator ''' command = config.EMULATOR global emulator_model if emulator_manager.adb_instances_manager(): util.debug_print('already emulators are running.', flag=PRINT_FLAG) return True else: util.debug_print( str.format("No emulator instance running. starting {} at port {}", emulator_model, emulator_port), flag=PRINT_FLAG) api_commands.adb_start_server_safe() emulator_manager.emulator_start_avd(emulator_port, emulator_model) # subprocess.Popen([command, # '-port', str(emulator_port), '-avd', # emulator_name, '-use-system-libs'], # stdout=subprocess.PIPE) emulator_manager.check_avd_booted_completely(emulator_port) return True