diff options
author | Ying Chen <chying@google.com> | 2016-01-25 19:26:31 -0800 |
---|---|---|
committer | Ying Chen <chying@google.com> | 2016-01-25 19:46:26 -0800 |
commit | 5e27805e341d128106515f7ee9073e489617f147 (patch) | |
tree | bcb8965bdde6ca661de3a7e39fff0c6493a41b5c | |
parent | 847b021a5808efe63620be7f451ab54fbae92d15 (diff) | |
download | adt-infra-5e27805e341d128106515f7ee9073e489617f147.tar.gz |
Add boot tests for nyc-release ndk x86 image
- Issue adb start-server before logcat
- kill adb process if "adb shell getprop" timeout
Change-Id: Iaf452a138090afd622dacc9da86c1556dc054d17
-rw-r--r-- | build/masters/master.client.adt/builders.pyl | 19 | ||||
-rw-r--r-- | build/scripts/master/emu_gs_scheduler.py | 12 | ||||
-rw-r--r-- | build/scripts/slave/recipes/adt/adt.py | 8 | ||||
-rw-r--r-- | emu_test/config/boot_cfg.csv | 104 | ||||
-rw-r--r-- | emu_test/test_boot/test_boot.py | 17 | ||||
-rw-r--r-- | emu_test/utils/download_unzip_image.py | 6 | ||||
-rw-r--r-- | emu_test/utils/emu_testcase.py | 27 |
7 files changed, 118 insertions, 75 deletions
diff --git a/build/masters/master.client.adt/builders.pyl b/build/masters/master.client.adt/builders.pyl index 3bce485c..8d4addae 100644 --- a/build/masters/master.client.adt/builders.pyl +++ b/build/masters/master.client.adt/builders.pyl @@ -30,6 +30,19 @@ "project": "git_lmp-mr1-emu-dev", "branch": "all", "name_identifier": "system-images", + }, + "sys_image_nyc_poller": { + "gs_bucket": "android-build-emu-sysimage", + "gs_path": ["builds/git_nyc-release-linux-sdk_phone_armv7-win_sdk/", + "builds/git_nyc-release-linux-sdk_google_phone_x86-sdk_addon/", + "builds/git_nyc-release-linux-sdk_google_phone_x86_64-sdk_addon/", + "builds/git_nyc-release-linux-sdk_phone_x86-sdk/", + "builds/git_nyc-release-linux-sdk_phone_x86_64-sdk/"], + "pollInterval": 1007, + "type": "GSMultiPoller", + "project": "git_nyc-release", + "branch": "all", + "name_identifier": "system-images", }, "emulator_linux_poller": { "gs_bucket": "android-build-emu", @@ -129,17 +142,17 @@ "schedulers": { "emu_linux_scheduler": { - "project": ["emu-master-dev", "git_lmp-mr1-emu-dev", "git_mnc-emu-dev"], + "project": ["emu-master-dev", "git_lmp-mr1-emu-dev", "git_mnc-emu-dev", "git_nyc-release"], "branch": ["linux", "all"], "type": "gs_poller", }, "emu_mac_scheduler": { - "project": ["emu-master-dev", "git_lmp-mr1-emu-dev", "git_mnc-emu-dev"], + "project": ["emu-master-dev", "git_lmp-mr1-emu-dev", "git_mnc-emu-dev", "git_nyc-release"], "branch": ["mac", "all"], "type": "gs_poller", }, "emu_windows_scheduler": { - "project": ["emu-master-dev", "git_lmp-mr1-emu-dev", "git_mnc-emu-dev"], + "project": ["emu-master-dev", "git_lmp-mr1-emu-dev", "git_mnc-emu-dev", "git_nyc-release"], "branch": ["windows", "all"], "type": "gs_poller", }, diff --git a/build/scripts/master/emu_gs_scheduler.py b/build/scripts/master/emu_gs_scheduler.py index a7ff91f3..d2530e3c 100644 --- a/build/scripts/master/emu_gs_scheduler.py +++ b/build/scripts/master/emu_gs_scheduler.py @@ -32,7 +32,7 @@ class EmulatorSingleBranchScheduler(SingleBranchScheduler): emu_revision = content[0] emu_file = ','.join(content[1:]) except: - log.msg("%s: Error - emulator cache file not available, cancle build" % self.name) + log.msg("%s: Error - emulator cache file not available, cancel build" % self.name) cancel_build = True try: with open('sys_image_lmp_poller.cache', 'r') as f: @@ -50,11 +50,21 @@ class EmulatorSingleBranchScheduler(SingleBranchScheduler): except: mnc_revision = 'None' mnc_file = '' + try: + with open('sys_image_nyc_poller.cache', 'r') as f: + content = f.read().splitlines() + nyc_revision = content[0] + nyc_file = ','.join(content[1:]) + except: + nyc_revision = 'None' + nyc_file = '' self.properties.setProperty('mnc_revision', mnc_revision, 'Scheduler') self.properties.setProperty('mnc_system_image', mnc_file, 'Scheduler') self.properties.setProperty('lmp_revision', lmp_revision, 'Scheduler') self.properties.setProperty('lmp_system_image', lmp_file, 'Scheduler') + self.properties.setProperty('nyc_revision', nyc_revision, 'Scheduler') + self.properties.setProperty('nyc_system_image', nyc_file, 'Scheduler') self.properties.setProperty('emu_revision', emu_revision, 'Scheduler') self.properties.setProperty('emulator_image', emu_file, 'Scheduler') self.properties.setProperty('got_revision', '%s-%s-%s' % (emu_revision, mnc_revision, lmp_revision), 'Scheduler') diff --git a/build/scripts/slave/recipes/adt/adt.py b/build/scripts/slave/recipes/adt/adt.py index 92da403d..68366e10 100644 --- a/build/scripts/slave/recipes/adt/adt.py +++ b/build/scripts/slave/recipes/adt/adt.py @@ -29,6 +29,8 @@ def RunSteps(api): remote_files_list.append(api.properties['mnc_system_image']) elif project == 'git_lmp-mr1-emu-dev': remote_files_list.append(api.properties['lmp_system_image']) + elif project == 'git_nyc-release': + remote_files_list.append(api.properties['nyc_system_image']) download_path = api.path['slave_build'].join('') emulator_path = download_path.join('tools', 'emulator') @@ -137,6 +139,12 @@ def RunSteps(api): 'test_boot.*', 'boot_cfg.csv', '{"api": "23"}') + if str(api.properties['nyc_revision']) != 'None' and project in ['git_nyc-release', 'emu-master-dev']: + PythonTestStep('Boot Test - NYC System Image', + api.path.join(log_dir, 'boot_test_NYC_sysimage'), + 'test_boot.*', + 'boot_cfg.csv', + '{"api": "24"}') PythonTestStep('Run Emulator CTS Test', api.path.join(log_dir, 'CTS_test'), 'test_cts.*', diff --git a/emu_test/config/boot_cfg.csv b/emu_test/config/boot_cfg.csv index ef4f2e0d..8815e9f5 100644 --- a/emu_test/config/boot_cfg.csv +++ b/emu_test/config/boot_cfg.csv @@ -1,48 +1,56 @@ -Device Config,,,,,,,Linux,,,,Windows,,,,,MacOSX,,, -API*,TAG*,ABI*,DEVICE,RAM,GPU,TOT IMAGE,Ubuntu 12.04 HD Graphics 4000,Ubuntu 14.04 HD 4400,Ubuntu 14.04 Quadro 600,Ubuntu 15.04 Quadro K600,Win 7 32-bit HD 4400,Win 7 64-bit HD 4400,Win 8 64-bit Quadro 600,Win 8.1 64-bit Quadro 600,Win 10 64-bit Quadro 600,Mac 10.10.5 Intel HD 5000,Mac 10.10.5 Iris Pro,Mac 10.8.5 Intel HD 5000,Mac 10.11.1 Iris Pro -API 23,android-tv,armeabi-v7a,Android TV (1080p),2048,yes,,,,P,,,,,,,,,, -,,x86,Android TV (1080p),2048,yes,,,,P,,,,,,,,,, -,default,armeabi-v7a,Nexus 6,2048,yes,,P,P,P,P,P,,P,P,P,P,P,P,P -,,x86,Nexus 5,2048,yes,yes,P,P,P,P,P,P,P,P,P,P,P,P,P -,,x86_64,Nexus 5,2048,yes,yes,P,P,P,P,S,P,P,P,P,P,P,P,P -,google_apis,armeabi-v7a,Galaxy Nexus,2048,yes,,,,P,,,,,,,,,, -,,x86,Nexus 5,2048,yes,yes,P,P,P,P,P,P,P,P,P,P,P,P,P -,,x86_64,Nexus 5,2048,yes,yes,P,P,P,P,S,P,P,P,P,P,P,P,P -API 22,android-tv,armeabi-v7a,Android TV (1080p),2048,yes,,,,P,,,,,,,,,, -,,x86,Android TV (1080p),2048,yes,,,,P,,,,,,,,,, -,android-wear,armeabi-v7a,wear_square_320,1024,yes,,,,P,,,,,,,,,, -,,x86,,,,,,,P,,,,,,,,,, -,default,armeabi-v7a,,,,,,,P,,,,,,,,,, -,,x86,Nexus 5,2048,yes,yes,P,P,P,P,P,P,P,P,P,P,P,P,P -,,x86_64,Nexus 5,2048,yes,yes,P,P,P,P,S,P,P,P,P,P,P,P,P -,google_apis,armeabi-v7a,,,,,,,P,,,,,,,,,, -,,x86,Nexus 5,2048,yes,yes,P,P,P,P,P,P,P,P,P,P,P,P,P -,,x86_64,Nexus 5,2048,yes,yes,P,P,P,P,S,P,P,P,P,P,P,P,P -API 21,android-tv,armeabi-v7a,Android TV (1080p),2048,yes,,,,P,,,,,,,,,, -,,x86,Android TV (1080p),2048,yes,,,,P,,,,,,,,,, -,android-wear,armeabi-v7a,,,,,,,P,,,,,,,,,, -,,x86,,,,,,,P,,,,,,,,,, -,default,armeabi-v7a,Nexus 5,2048,yes,,P,P,P,P,P,,P,P,P,P,P,P,P -,,x86,Nexus 5,2048,yes,,P,P,P,P,P,P,P,P,P,P,P,P,P -,,x86_64,Nexus 5,2048,yes,,P,P,P,P,S,,P,P,P,X,X,X,X -,google_apis,armeabi-v7a,,,,,,,P,,,,,,,,,, -,,x86,,,,,,,P,,,,,,,,,, -,,x86_64,,,,,,,P,,,,,,,,,, -API 20,android-wear,armeabi-v7a,,,,,,,P,,,,,,,,,, -,,x86,,,,,,,P,,,,,,,,,, -API 19,default,armeabi-v7a,,,,,,,P,,,,,,,,,, -,,x86,,,,,,,P,,,,,,,,,, -,google_apis,armeabi-v7a,,,,,,,,,,,,,,,,, -,,x86,,,,,,,,,,,,,,,,, -API 18,default,armeabi-v7a,,,,,,,P,,,,,,,,,, -,,x86,,,,,,,P,,,,,,,,,, -API 17,default,armeabi-v7a,,,,,,,P,,,,,,,,,, -,,mips,,,,,,,P,,,,,,,,,, -,,x86,,,,,,,P,,,,,,,,,, -API 16,default,armeabi-v7a,Nexus 4,1024,yes,,P,P,P,P,,,P,P,P,P,P,P,P -,,mips,Nexus 4,1024,yes,,P,P,P,P,,,P,P,P,P,P,P,P -,,x86,Nexus 4,1024,yes,,P,P,P,P,,,P,P,P,X,X,X,X -API 15,default,armeabi-v7a,,,no,,,,P,,,,,,,,,, -,,mips,,,no,,,,P,,,,,,,,,, -,,x86,,,no,,,,P,,,,,,,,,, -API 10,default,x86,,,no,,P,P,P,P,,,P,P,P,P,P,P,P
\ No newline at end of file +Device Config,,,,,,Linux,,,,Windows,,,,,MacOSX,,, +API*,TAG*,ABI*,DEVICE,RAM,GPU,Ubuntu 12.04 HD Graphics 4000,Ubuntu 14.04 HD 4400,Ubuntu 14.04 Quadro 600,Ubuntu 15.04 Quadro K600,Win 7 32-bit HD 4400,Win 7 64-bit HD 4400,Win 8 64-bit Quadro 600,Win 8.1 64-bit Quadro 600,Win 10 64-bit Quadro 600,Mac 10.10.5 Intel HD 5000,Mac 10.10.5 Iris Pro,Mac 10.8.5 Intel HD 5000,Mac 10.11.1 Iris Pro +API 24,android-tv,armeabi-v7a,Android TV (1080p),2048,yes,,,,,,,,,,,,, +,,x86,Android TV (1080p),2048,yes,,,,,,,,,,,,, +,default,armeabi-v7a,Nexus 6,2048,yes,,,,,,,,,,,,, +,,x86,Nexus 5,2048,yes,P,P,P,P,P,P,P,P,P,P,P,P,P +,,x86_64,Nexus 5,2048,yes,P,P,P,P,S,P,P,P,P,P,P,P,P +,google_apis,armeabi-v7a,Galaxy Nexus,2048,yes,,,,,,,,,,,,, +,,x86,Nexus 5,2048,yes,,,,,,,,,,,,, +,,x86_64,Nexus 5,2048,yes,,,,,,,,,,,,, +API 23,android-tv,armeabi-v7a,Android TV (1080p),2048,yes,,,P,,,,,,,,,, +,,x86,Android TV (1080p),2048,yes,,,P,,,,,,,,,, +,default,armeabi-v7a,Nexus 6,2048,yes,P,P,P,P,P,,P,P,P,P,P,P,P +,,x86,Nexus 5,2048,yes,P,P,P,P,P,P,P,P,P,P,P,P,P +,,x86_64,Nexus 5,2048,yes,P,P,P,P,S,P,P,P,P,P,P,P,P +,google_apis,armeabi-v7a,Galaxy Nexus,2048,yes,,,P,,,,,,,,,, +,,x86,Nexus 5,2048,yes,P,P,P,P,P,P,P,P,P,P,P,P,P +,,x86_64,Nexus 5,2048,yes,P,P,P,P,S,P,P,P,P,P,P,P,P +API 22,android-tv,armeabi-v7a,Android TV (1080p),2048,yes,,,P,,,,,,,,,, +,,x86,Android TV (1080p),2048,yes,,,P,,,,,,,,,, +,android-wear,armeabi-v7a,wear_square_320,1024,yes,,,P,,,,,,,,,, +,,x86,,,,,,P,,,,,,,,,, +,default,armeabi-v7a,,,,,,P,,,,,,,,,, +,,x86,Nexus 5,2048,yes,P,P,P,P,P,P,P,P,P,P,P,P,P +,,x86_64,Nexus 5,2048,yes,P,P,P,P,S,P,P,P,P,P,P,P,P +,google_apis,armeabi-v7a,,,,,,P,,,,,,,,,, +,,x86,Nexus 5,2048,yes,P,P,P,P,P,P,P,P,P,P,P,P,P +,,x86_64,Nexus 5,2048,yes,P,P,P,P,S,P,P,P,P,P,P,P,P +API 21,android-tv,armeabi-v7a,Android TV (1080p),2048,yes,,,P,,,,,,,,,, +,,x86,Android TV (1080p),2048,yes,,,P,,,,,,,,,, +,android-wear,armeabi-v7a,,,,,,P,,,,,,,,,, +,,x86,,,,,,P,,,,,,,,,, +,default,armeabi-v7a,Nexus 5,2048,yes,P,P,P,P,P,,P,P,P,P,P,P,P +,,x86,Nexus 5,2048,yes,P,P,P,P,P,P,P,P,P,P,P,P,P +,,x86_64,Nexus 5,2048,yes,P,P,P,P,S,,P,P,P,X,X,X,X +,google_apis,armeabi-v7a,,,,,,P,,,,,,,,,, +,,x86,,,,,,P,,,,,,,,,, +,,x86_64,,,,,,P,,,,,,,,,, +API 20,android-wear,armeabi-v7a,,,,,,P,,,,,,,,,, +,,x86,,,,,,P,,,,,,,,,, +API 19,default,armeabi-v7a,,,,,,P,,,,,,,,,, +,,x86,,,,,,P,,,,,,,,,, +,google_apis,armeabi-v7a,,,,,,,,,,,,,,,, +,,x86,,,,,,,,,,,,,,,, +API 18,default,armeabi-v7a,,,,,,P,,,,,,,,,, +,,x86,,,,,,P,,,,,,,,,, +API 17,default,armeabi-v7a,,,,,,P,,,,,,,,,, +,,mips,,,,,,P,,,,,,,,,, +,,x86,,,,,,P,,,,,,,,,, +API 16,default,armeabi-v7a,Nexus 4,1024,yes,P,P,P,P,,,P,P,P,P,P,P,P +,,mips,Nexus 4,1024,yes,P,P,P,P,,,P,P,P,P,P,P,P +,,x86,Nexus 4,1024,yes,P,P,P,P,,,P,P,P,X,X,X,X +API 15,default,armeabi-v7a,,,no,,,P,,,,,,,,,, +,,mips,,,no,,,P,,,,,,,,,, +,,x86,,,no,,,P,,,,,,,,,, +API 10,default,x86,,,no,P,P,P,P,,,P,P,P,P,P,P,P
\ No newline at end of file diff --git a/emu_test/test_boot/test_boot.py b/emu_test/test_boot/test_boot.py index 9e9551f0..41c64b68 100644 --- a/emu_test/test_boot/test_boot.py +++ b/emu_test/test_boot/test_boot.py @@ -20,26 +20,13 @@ class BootTestCase(EmuBaseTestCase): super(BootTestCase, cls).setUpClass() def tearDown(self): - - def kill_proc_by_name(proc_names): - for x in psutil.process_iter(): - try: - proc = psutil.Process(x.pid) - # mips 64 use qemu-system-mipsel64, others emulator-[arch] - if any([x in proc.name() for x in proc_names]): - if proc.status() != psutil.STATUS_ZOMBIE: - self.m_logger.info("kill_proc_by_name - %s, %s" % (proc.name(), proc.status())) - proc.kill() - except psutil.NoSuchProcess: - pass - self.m_logger.debug('First try - quit emulator by adb emu kill') kill_proc = psutil.Popen(["adb", "emu", "kill"]) # check emulator process is terminated result = self.term_check(timeout=5) if not result: self.m_logger.debug('Second try - quit emulator by psutil') - kill_proc_by_name(["emulator", "qemu-system"]) + self.kill_proc_by_name(["emulator", "qemu-system"]) result = self.term_check(timeout=10) self.m_logger.debug("term_check after psutil.kill - %s", result) self.m_logger.info("Remove AVD inside of tear down") @@ -48,7 +35,7 @@ class BootTestCase(EmuBaseTestCase): try: if result: self.start_proc.wait() - kill_proc_by_name(["crash-service"]) + self.kill_proc_by_name(["crash-service"]) psutil.Popen(["adb", "kill-server"]) os.remove(os.path.join(avd_dir, '%s.ini' % self.avd_config.name())) shutil.rmtree(os.path.join(avd_dir, '%s.avd' % self.avd_config.name()), ignore_errors=True) diff --git a/emu_test/utils/download_unzip_image.py b/emu_test/utils/download_unzip_image.py index be5fbddb..230e06a7 100644 --- a/emu_test/utils/download_unzip_image.py +++ b/emu_test/utils/download_unzip_image.py @@ -28,6 +28,8 @@ def get_dst_dir(remote_path): api = '22' elif 'mnc' in branch_name: api = '23' + elif 'nyc' in branch_name: + api = 'N' else: raise ValueError("unsupported image %s", branch_name) return os.path.join(os.environ['ANDROID_SDK_ROOT'], @@ -69,8 +71,10 @@ def download_and_unzip(): verbose_call(['mkdir', '-p', dst_dir]) if 'x86_64' in file_path: verbose_call(['rm', '-rf', os.path.join(dst_dir,'x86_64')]) - else: + elif 'x86' in file_path: verbose_call(['rm', '-rf', os.path.join(dst_dir,'x86')]) + elif 'armv7' in file_path: + verbose_call(['rm', '-rf', os.path.join(dst_dir,'armeabi-v7a')]) verbose_call(['unzip', '-o', file_name, '-d', dst_dir]) else: verbose_call(['unzip', '-o', file_name]) diff --git a/emu_test/utils/emu_testcase.py b/emu_test/utils/emu_testcase.py index 193e4f08..4a375858 100644 --- a/emu_test/utils/emu_testcase.py +++ b/emu_test/utils/emu_testcase.py @@ -115,6 +115,18 @@ class EmuBaseTestCase(LoggedTestCase): pass return None + def kill_proc_by_name(self, proc_names): + for x in psutil.process_iter(): + try: + proc = psutil.Process(x.pid) + # mips 64 use qemu-system-mipsel64, others emulator-[arch] + if any([x in proc.name() for x in proc_names]): + if proc.status() != psutil.STATUS_ZOMBIE: + self.m_logger.info("kill_proc_by_name - %s, %s" % (proc.name(), proc.status())) + proc.kill() + except psutil.NoSuchProcess: + pass + def launch_emu(self, avd): """Launch given avd and return immediately""" exec_path = emu_args.emulator_exec @@ -129,6 +141,7 @@ class EmuBaseTestCase(LoggedTestCase): logcat_path = os.path.join(emu_args.session_dir, "%s_logcat.txt" % test_name) verbose_log_path = os.path.join(emu_args.session_dir, "%s_verbose.txt" % test_name) with open(logcat_path, 'w') as output: + self.run_with_timeout(["adb", "start-server"], 20) psutil.Popen(["adb", "logcat"], stdout=output, stderr=STDOUT) self.start_proc = psutil.Popen(launch_cmd, stdout=PIPE, stderr=STDOUT) with open(verbose_log_path, 'w') as verb_output: @@ -165,6 +178,7 @@ class EmuBaseTestCase(LoggedTestCase): self.m_logger.info('cmd %s timeout, force terminate', ' '.join(cmd)) try: vars['process'].terminate() + self.kill_proc_by_name(["adb"]) except Exception as e: self.m_logger.error('exception terminate adb getprop process: %r', e) thread.join(timeout) @@ -248,8 +262,9 @@ class EmuBaseTestCase(LoggedTestCase): gpu = "no" if avd_config.gpu == "no" else "yes" set_val('hw.gpu.enabled', gpu) set_val('hw.ramSize', avd_config.ram) + api_target = avd_config.api if avd_config.api != "24" else "N" set_val('image.sysdir.1', - 'system-images/android-%s/%s/%s/' % (avd_config.api, avd_config.tag, avd_config.abi)) + 'system-images/android-%s/%s/%s/' % (api_target, avd_config.tag, avd_config.abi)) set_val('tag.display', tag_id_to_display[avd_config.tag]) set_val('tag.id', avd_config.tag) @@ -277,10 +292,11 @@ class EmuBaseTestCase(LoggedTestCase): def try_create(): android_exec = "android.bat" if os.name == "nt" else "android" avd_abi = "%s/%s" % (avd_config.tag, avd_config.abi) + api_target = avd_config.api if avd_config.api != "24" else "N" if "google" in avd_config.tag: - avd_target = "Google Inc.:Google APIs:%s" % (avd_config.api) + avd_target = "Google Inc.:Google APIs:%s" % (api_target) else: - avd_target = "android-%s" % (avd_config.api) + avd_target = "android-%s" % (api_target) create_cmd = [android_exec, "create", "avd", "--force", "--name", avd_name, "--target", avd_target, "--abi", avd_abi] @@ -423,12 +439,9 @@ def create_test_case_from_file(desc, testcase_class, test_func): # For 32 bit machine, ram should be less than 768MB if not platform.machine().endswith('64'): ram = str(min([int(ram), 768])) - if api < "22" and row[6] == "yes": - raise ConfigError() - tot_image = row[6] if row[6] == "yes" else "no" avd_config = AVDConfig(api, tag, abi, device, ram, gpu, classic="yes", port=get_port(), cts=False) create_test_case(avd_config, op) # for unreleased images, test with qemu2 in addition - if tot_image == "yes": + if api > "21" and abi != "armeabi-v7a": avd_config = AVDConfig(api, tag, abi, device, ram, gpu, classic="no", port=get_port(), cts=False) create_test_case(avd_config, op) |