From a95cc35c5eba5607436cbfae64c8839b9a469974 Mon Sep 17 00:00:00 2001 From: "navabi@google.com" Date: Fri, 2 Aug 2013 21:08:06 +0000 Subject: [PATCH] Put cleanup steps in finally block so cleanup happens after halt on failure. The device_status_check hangs because there are still processes launched by the buildbot script that are not cleaned up. E.g. https://chromegw.corp.google.com/i/clank/builders/manta-sharded-official-perf-clankium/builds/2359 This makes sure the post commands are executed after halt on failure. BUG=265578 Review URL: https://chromiumcodereview.appspot.com/21261006 git-svn-id: http://src.chromium.org/svn/trunk/src/build@215365 4ff67af0-8c30-449e-8e8b-ad334ec8d88c --- android/buildbot/bb_device_steps.py | 43 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/android/buildbot/bb_device_steps.py b/android/buildbot/bb_device_steps.py index a1b5f93b2..2f4b0c7f8 100755 --- a/android/buildbot/bb_device_steps.py +++ b/android/buildbot/bb_device_steps.py @@ -306,34 +306,32 @@ def GenerateTestReport(options): os.remove(report) -def GetPostTestStepCmds(): - return [ - ('logcat_dump', LogcatDump), - ('test_report', GenerateTestReport) - ] - - def MainTestWrapper(options): - # Spawn logcat monitor - SpawnLogcatMonitor() + try: + # Spawn logcat monitor + SpawnLogcatMonitor() - # Run all device setup steps - for _, cmd in GetDeviceSetupStepCmds(): - cmd(options) + # Run all device setup steps + for _, cmd in GetDeviceSetupStepCmds(): + cmd(options) - if options.install: - test_obj = INSTRUMENTATION_TESTS[options.install] - InstallApk(options, test_obj, print_step=True) + if options.install: + test_obj = INSTRUMENTATION_TESTS[options.install] + InstallApk(options, test_obj, print_step=True) - if options.test_filter: - bb_utils.RunSteps(options.test_filter, GetTestStepCmds(), options) + if options.test_filter: + bb_utils.RunSteps(options.test_filter, GetTestStepCmds(), options) - if options.experimental: - RunTestSuites(options, gtest_config.EXPERIMENTAL_TEST_SUITES) + if options.experimental: + RunTestSuites(options, gtest_config.EXPERIMENTAL_TEST_SUITES) - # Run all post test steps - for _, cmd in GetPostTestStepCmds(): - cmd(options) + finally: + # Run all post test steps + LogcatDump(options) + GenerateTestReport(options) + # KillHostHeartbeat() has logic to check if heartbeat process is running, + # and kills only if it finds the process is running on the host. + provision_devices.KillHostHeartbeat() def GetDeviceStepsOptParser(): @@ -377,7 +375,6 @@ def main(argv): setattr(options, 'target', options.factory_properties.get('target', 'Debug')) MainTestWrapper(options) - provision_devices.KillHostHeartbeat() if __name__ == '__main__':