Commit eee4f0ab authored by yolandyan's avatar yolandyan Committed by Commit bot

Add support to run emulator without ui on bots

BUG=

Review URL: https://codereview.chromium.org/1634423002

Cr-Commit-Position: refs/heads/master@{#371862}
parent 3b79aa01
...@@ -58,6 +58,9 @@ def main(argv): ...@@ -58,6 +58,9 @@ def main(argv):
run_parser.add_argument('--enable-kvm', action='store_true', run_parser.add_argument('--enable-kvm', action='store_true',
dest='enable_kvm', default=False, dest='enable_kvm', default=False,
help='Enable kvm for faster x86 emulator run') help='Enable kvm for faster x86 emulator run')
run_parser.add_argument('--headless', action='store_true',
dest='headless', default=False,
help='Launch an emulator with no UI.')
arguments = arg_parser.parse_args(argv[1:]) arguments = arg_parser.parse_args(argv[1:])
...@@ -120,7 +123,8 @@ def main(argv): ...@@ -120,7 +123,8 @@ def main(argv):
enable_kvm=arguments.enable_kvm, enable_kvm=arguments.enable_kvm,
kill_and_launch=arguments.reset_and_launch, kill_and_launch=arguments.reset_and_launch,
sdcard_size=arguments.sdcard_size, sdcard_size=arguments.sdcard_size,
storage_size=arguments.partition_size storage_size=arguments.partition_size,
headless=arguments.headless
) )
else: else:
emulator.LaunchTempEmulators( emulator.LaunchTempEmulators(
...@@ -131,7 +135,8 @@ def main(argv): ...@@ -131,7 +135,8 @@ def main(argv):
kill_and_launch=arguments.kill_and_launch, kill_and_launch=arguments.kill_and_launch,
sdcard_size=arguments.sdcard_size, sdcard_size=arguments.sdcard_size,
storage_size=arguments.partition_size, storage_size=arguments.partition_size,
wait_for_boot=True wait_for_boot=True,
headless=arguments.headless
) )
if __name__ == '__main__': if __name__ == '__main__':
......
...@@ -158,7 +158,8 @@ def _GetAvailablePort(): ...@@ -158,7 +158,8 @@ def _GetAvailablePort():
def LaunchTempEmulators(emulator_count, abi, api_level, enable_kvm=False, def LaunchTempEmulators(emulator_count, abi, api_level, enable_kvm=False,
kill_and_launch=True, sdcard_size=DEFAULT_SDCARD_SIZE, kill_and_launch=True, sdcard_size=DEFAULT_SDCARD_SIZE,
storage_size=DEFAULT_STORAGE_SIZE, wait_for_boot=True): storage_size=DEFAULT_STORAGE_SIZE, wait_for_boot=True,
headless=False):
"""Create and launch temporary emulators and wait for them to boot. """Create and launch temporary emulators and wait for them to boot.
Args: Args:
...@@ -166,6 +167,7 @@ def LaunchTempEmulators(emulator_count, abi, api_level, enable_kvm=False, ...@@ -166,6 +167,7 @@ def LaunchTempEmulators(emulator_count, abi, api_level, enable_kvm=False,
abi: the emulator target platform abi: the emulator target platform
api_level: the api level (e.g., 19 for Android v4.4 - KitKat release) api_level: the api level (e.g., 19 for Android v4.4 - KitKat release)
wait_for_boot: whether or not to wait for emulators to boot up wait_for_boot: whether or not to wait for emulators to boot up
headless: running emulator with no ui
Returns: Returns:
List of emulators. List of emulators.
...@@ -178,7 +180,8 @@ def LaunchTempEmulators(emulator_count, abi, api_level, enable_kvm=False, ...@@ -178,7 +180,8 @@ def LaunchTempEmulators(emulator_count, abi, api_level, enable_kvm=False,
logging.info('Emulator launch %d with avd_name=%s and api=%d', logging.info('Emulator launch %d with avd_name=%s and api=%d',
n, avd_name, api_level) n, avd_name, api_level)
emulator = Emulator(avd_name, abi, enable_kvm=enable_kvm, emulator = Emulator(avd_name, abi, enable_kvm=enable_kvm,
sdcard_size=sdcard_size, storage_size=storage_size) sdcard_size=sdcard_size, storage_size=storage_size,
headless=headless)
emulator.CreateAVD(api_level) emulator.CreateAVD(api_level)
emulator.Launch(kill_all_emulators=(n == 0 and kill_and_launch)) emulator.Launch(kill_all_emulators=(n == 0 and kill_and_launch))
t.Stop() t.Stop()
...@@ -192,19 +195,21 @@ def LaunchTempEmulators(emulator_count, abi, api_level, enable_kvm=False, ...@@ -192,19 +195,21 @@ def LaunchTempEmulators(emulator_count, abi, api_level, enable_kvm=False,
def LaunchEmulator(avd_name, abi, kill_and_launch=True, enable_kvm=False, def LaunchEmulator(avd_name, abi, kill_and_launch=True, enable_kvm=False,
sdcard_size=DEFAULT_SDCARD_SIZE, sdcard_size=DEFAULT_SDCARD_SIZE,
storage_size=DEFAULT_STORAGE_SIZE): storage_size=DEFAULT_STORAGE_SIZE, headless=False):
"""Launch an existing emulator with name avd_name. """Launch an existing emulator with name avd_name.
Args: Args:
avd_name: name of existing emulator avd_name: name of existing emulator
abi: the emulator target platform abi: the emulator target platform
headless: running emulator with no ui
Returns: Returns:
emulator object. emulator object.
""" """
logging.info('Specified emulator named avd_name=%s launched', avd_name) logging.info('Specified emulator named avd_name=%s launched', avd_name)
emulator = Emulator(avd_name, abi, enable_kvm=enable_kvm, emulator = Emulator(avd_name, abi, enable_kvm=enable_kvm,
sdcard_size=sdcard_size, storage_size=storage_size) sdcard_size=sdcard_size, storage_size=storage_size,
headless=headless)
emulator.Launch(kill_all_emulators=kill_and_launch) emulator.Launch(kill_all_emulators=kill_and_launch)
emulator.ConfirmLaunch(True) emulator.ConfirmLaunch(True)
return emulator return emulator
...@@ -242,7 +247,7 @@ class Emulator(object): ...@@ -242,7 +247,7 @@ class Emulator(object):
def __init__(self, avd_name, abi, enable_kvm=False, def __init__(self, avd_name, abi, enable_kvm=False,
sdcard_size=DEFAULT_SDCARD_SIZE, sdcard_size=DEFAULT_SDCARD_SIZE,
storage_size=DEFAULT_STORAGE_SIZE): storage_size=DEFAULT_STORAGE_SIZE, headless=False):
"""Init an Emulator. """Init an Emulator.
Args: Args:
...@@ -259,6 +264,7 @@ class Emulator(object): ...@@ -259,6 +264,7 @@ class Emulator(object):
self.sdcard_size = sdcard_size self.sdcard_size = sdcard_size
self.storage_size = storage_size self.storage_size = storage_size
self.enable_kvm = enable_kvm self.enable_kvm = enable_kvm
self.headless = headless
@staticmethod @staticmethod
def _DeviceName(): def _DeviceName():
...@@ -375,13 +381,22 @@ class Emulator(object): ...@@ -375,13 +381,22 @@ class Emulator(object):
self.emulator, self.emulator,
# Speed up emulator launch by 40%. Really. # Speed up emulator launch by 40%. Really.
'-no-boot-anim', '-no-boot-anim',
]
if self.headless:
emulator_command.extend([
'-no-skin',
'-no-audio',
'-no-window'
])
emulator_command.extend([
# Use a familiar name and port. # Use a familiar name and port.
'-avd', self.avd_name, '-avd', self.avd_name,
'-port', str(port), '-port', str(port),
# Enable GPU by default. # Enable GPU by default.
'-gpu', 'on', '-gpu', 'on',
# all the argument after qemu are sub arguments for qemu
'-qemu', '-m', '1024', '-qemu', '-m', '1024',
] ])
if self.abi == 'x86' and self.enable_kvm: if self.abi == 'x86' and self.enable_kvm:
emulator_command.extend([ emulator_command.extend([
# For x86 emulator --enable-kvm will fail early, avoiding accidental # For x86 emulator --enable-kvm will fail early, avoiding accidental
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment