15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#!/usr/bin/env python
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (c) 2012 The Chromium Authors. All rights reserved.
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file.
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import os
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import subprocess
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import sys
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def Main(args):
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  pwd = os.environ.get('PWD', '')
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  is_integration_bot = 'nacl-chrome' in pwd
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # This environment variable check mimics what
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # buildbot_chrome_nacl_stage.py does.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  is_win64 = (sys.platform in ('win32', 'cygwin') and
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              ('64' in os.environ.get('PROCESSOR_ARCHITECTURE', '') or
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               '64' in os.environ.get('PROCESSOR_ARCHITEW6432', '')))
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # On the main Chrome waterfall, we may need to control where the tests are
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # run.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # If there is serious skew in the PPAPI interface that causes all of
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # the NaCl integration tests to fail, you can uncomment the
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # following block.  (Make sure you comment it out when the issues
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # are resolved.)  *However*, it is much preferred to add tests to
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # the 'tests_to_disable' list below.
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #if not is_integration_bot:
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  #  return
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tests_to_disable = []
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # In general, you should disable tests inside this conditional.  This turns
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # them off on the main Chrome waterfall, but not on NaCl's integration bots.
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # This makes it easier to see when things have been fixed NaCl side.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if not is_integration_bot:
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # http://code.google.com/p/nativeclient/issues/detail?id=2511
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    tests_to_disable.append('run_ppapi_ppb_image_data_browser_test')
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if sys.platform == 'darwin':
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # TODO(mseaborn) fix
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # http://code.google.com/p/nativeclient/issues/detail?id=1835
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      tests_to_disable.append('run_ppapi_crash_browser_test')
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if sys.platform in ('win32', 'cygwin'):
465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      # This one is only failing for nacl_glibc on x64 Windows but it is not
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      # clear how to disable only that limited case.
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # See http://crbug.com/132395
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      tests_to_disable.append('run_inbrowser_test_runner')
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      # run_breakpad_browser_process_crash_test is flaky.
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      # See http://crbug.com/317890
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      tests_to_disable.append('run_breakpad_browser_process_crash_test')
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      # See http://crbug.com/332301
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      tests_to_disable.append('run_breakpad_crash_in_syscall_test')
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      # It appears that crash_service.exe is not being reliably built by
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      # default in the CQ.  See: http://crbug.com/380880
5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      tests_to_disable.append('run_breakpad_untrusted_crash_test')
5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      tests_to_disable.append('run_breakpad_trusted_crash_in_startup_test')
6046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  script_dir = os.path.dirname(os.path.abspath(__file__))
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  nacl_integration_script = os.path.join(script_dir,
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                         'buildbot_chrome_nacl_stage.py')
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cmd = [sys.executable,
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         nacl_integration_script,
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         # TODO(ncbray) re-enable.
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         # https://code.google.com/p/chromium/issues/detail?id=133568
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         '--disable_glibc',
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)         '--disable_tests=%s' % ','.join(tests_to_disable)]
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cmd += args
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sys.stdout.write('Running %s\n' % ' '.join(cmd))
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sys.stdout.flush()
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return subprocess.call(cmd)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if __name__ == '__main__':
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sys.exit(Main(sys.argv[1:]))
78