[mq]: winvm-talos
authorJoel Maher <jmaher@mozilla.com>
Fri, 14 Apr 2017 16:46:02 -0400
changeset 1144906 e02cb46d80bc4825705fde74e2c0192646bae0a7
parent 1144639 46c763762b0119a975101c7d4d14d78fb7d46534
child 1144907 4f340dd78273387a31ca8cc880a951147f29bd31
push id194628
push userjmaher@mozilla.com
push dateThu, 01 Jun 2017 19:23:48 +0000
treeherdertry@4f340dd78273 [default view] [failures only]
milestone55.0a1
[mq]: winvm-talos MozReview-Commit-ID: Ep6bTpI4qzu
taskcluster/ci/test/test-platforms.yml
taskcluster/ci/test/test-sets.yml
taskcluster/ci/test/tests.yml
taskcluster/taskgraph/transforms/tests.py
testing/mozharness/configs/talos/windows_config.py
testing/mozharness/mozharness/mozilla/testing/talos.py
--- a/taskcluster/ci/test/test-platforms.yml
+++ b/taskcluster/ci/test/test-platforms.yml
@@ -135,31 +135,26 @@ linux64-jsdcov/opt:
 windows7-32-vm/debug:
     build-platform: win32/debug
     test-sets:
         - windows-vm-tests
         - external-media-tests
 windows7-32-vm/opt:
     build-platform: win32/opt
     test-sets:
-        - windows-vm-tests
-        - external-media-tests
-        - external-media-tests-slow
-        - awsy
-        - desktop-screenshot-capture
+        - talos
 
 # win32 gpu
 windows7-32/debug:
     build-platform: win32/debug
     test-sets:
         - windows-gpu-tests
 windows7-32/opt:
     build-platform: win32/opt
     test-sets:
-        - windows-gpu-tests
         - desktop-screenshot-capture
 
 # win64 vm
 windows10-64-vm/debug:
     build-platform: win64/debug
     test-sets:
         - windows-vm-tests
         - external-media-tests
--- a/taskcluster/ci/test/test-sets.yml
+++ b/taskcluster/ci/test/test-sets.yml
@@ -54,17 +54,18 @@ external-media-tests-slow:
 opt-only-tests:
     - mochitest-valgrind
 
 talos:
     - talos-chrome
     - talos-dromaeojs
     - talos-g1
     - talos-g2
-    - talos-g3
+    - talos-xperf
+    - talos-quantum-pageload
     - talos-g4
     - talos-g5
     - talos-other
     - talos-svgr
     - talos-tp5o
     - talos-perf-reftest
 
 awsy:
--- a/taskcluster/ci/test/tests.yml
+++ b/taskcluster/ci/test/tests.yml
@@ -1230,16 +1230,18 @@ talos-chrome:
             default: ['mozilla-beta', 'mozilla-aurora', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try']
     max-run-time: 3600
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
+                windows.*:
+                    - talos/windows_config.py
                 macosx.*:
                     - talos/mac_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=chromez
             - --add-option
             - --webServer,localhost
@@ -1255,16 +1257,18 @@ talos-dromaeojs:
             default: ['mozilla-beta', 'mozilla-aurora', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try']
     max-run-time: 3600
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
+                windows.*:
+                    - talos/windows_config.py
                 macosx.*:
                     - talos/mac_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=dromaeojs
             - --add-option
             - --webServer,localhost
@@ -1282,16 +1286,18 @@ talos-g1:
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
                 macosx.*:
                     - talos/mac_config.py
+                windows.*:
+                    - talos/windows_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=g1
             - --add-option
             - --webServer,localhost
 
 talos-g2:
@@ -1308,16 +1314,18 @@ talos-g2:
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
                 macosx.*:
                     - talos/mac_config.py
+                windows.*:
+                    - talos/windows_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=g2
             - --add-option
             - --webServer,localhost
 
 talos-g3:
@@ -1333,16 +1341,18 @@ talos-g3:
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
                 macosx.*:
                     - talos/mac_config.py
+                windows.*:
+                    - talos/windows_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=g3
             - --add-option
             - --webServer,localhost
 
 talos-g4:
@@ -1358,16 +1368,18 @@ talos-g4:
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
                 macosx.*:
                     - talos/mac_config.py
+                windows.*:
+                    - talos/windows_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=g4
             - --add-option
             - --webServer,localhost
 
 talos-g5:
@@ -1384,16 +1396,18 @@ talos-g5:
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
                 macosx.*:
                     - remove_executables.py
                     - talos/mac_config.py
+                windows.*:
+                    - talos/windows_config.py
                 default:
                     - talos/linux_config.py
                     - remove_executables.py
         extra-options:
             - --suite=g5
             - --add-option
             - --webServer,localhost
 
@@ -1410,16 +1424,18 @@ talos-other:
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
                 macosx.*:
                     - talos/mac_config.py
+                windows.*:
+                    - talos/windows_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=other
             - --add-option
             - --webServer,localhost
 
 talos-perf-reftest:
@@ -1433,21 +1449,46 @@ talos-perf-reftest:
             default: ['mozilla-central', 'mozilla-inbound', 'autoland', 'try']
     max-run-time: 3600
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
+                windows.*:
+                    - talos/windows_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=perf-reftest
 
+talos-quantum-pageload:
+    description: "Talos Quantum Pageload"
+    suite: talos
+    try-name: quantum
+    treeherder-symbol: tc-T(q1)
+    run-on-projects:
+        by-test-platform:
+            default: ['mozilla-central', 'mozilla-inbound', 'autoland', 'try']
+    max-run-time: 3600
+    e10s: true
+    mozharness:
+        script: talos_script.py
+        no-read-buildbot-config: true
+        config:
+            by-test-platform:
+                windows.*:
+                    - talos/windows_config.py
+                default:
+                    - talos/linux_config.py
+                    - remove_executables.py
+        extra-options:
+            - --suite=quantum-pageload
+
 talos-svgr:
     description: "Talos svgr"
     suite: talos
     try-name: svgr
     treeherder-symbol: tc-T(s)
     run-on-projects:
         by-test-platform:
             linux64-stylo/.*: ['mozilla-central', 'try']
@@ -1456,16 +1497,18 @@ talos-svgr:
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
                 macosx.*:
                     - talos/mac_config.py
+                windows.*:
+                    - talos/windows_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=svgr
             - --add-option
             - --webServer,localhost
 
 talos-tp5o:
@@ -1481,23 +1524,45 @@ talos-tp5o:
     e10s: true
     mozharness:
         script: talos_script.py
         no-read-buildbot-config: true
         config:
             by-test-platform:
                 macosx.*:
                     - talos/mac_config.py
+                windows.*:
+                    - talos/windows_config.py
                 default:
                     - talos/linux_config.py
         extra-options:
             - --suite=tp5o
             - --add-option
             - --webServer,localhost
 
+talos-xperf:
+    description: "Talos xperf"
+    suite: talos
+    try-name: xperf
+    treeherder-symbol: tc-T(x)
+    run-on-projects:
+        by-test-platform:
+            default: ['mozilla-beta', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try']
+    max-run-time: 3600
+    e10s: true
+    mozharness:
+        script: talos_script.py
+        no-read-buildbot-config: true
+        config:
+            by-test-platform:
+                default:
+                    - talos/windows_config.py
+        extra-options:
+            - --suite=xperf
+
 web-platform-tests:
     description: "Web platform test run"
     suite: web-platform-tests
     treeherder-symbol: tc-W(wpt)
     chunks:
       by-test-platform:
         macosx64/opt: 5
         macosx64/debug: 10
--- a/taskcluster/taskgraph/transforms/tests.py
+++ b/taskcluster/taskgraph/transforms/tests.py
@@ -695,19 +695,19 @@ def set_worker_type(config, tests):
     for test in tests:
         # during the taskcluuster migration, this is a bit tortured, but it
         # will get simpler eventually!
         test_platform = test['test-platform']
         if test_platform.startswith('macosx'):
             # note that some portion of these will be allocated to BBB below
             test['worker-type'] = 'tc-worker-provisioner/gecko-t-osx-10-10'
         elif test_platform.startswith('win'):
-            if test.get('suite', '') == 'talos':
-                test['worker-type'] = 'buildbot-bridge/buildbot-bridge'
-            else:
+#            if test.get('suite', '') == 'talos':
+#                test['worker-type'] = 'buildbot-bridge/buildbot-bridge'
+#            else:
                 test['worker-type'] = WINDOWS_WORKER_TYPES[test_platform.split('/')[0]]
         elif test_platform.startswith('linux') or test_platform.startswith('android'):
             if test.get('suite', '') == 'talos':
                 if config.config['args'].taskcluster_worker:
                     test['worker-type'] = 'releng-hardware/gecko-t-linux-talos'
                 else:
                     test['worker-type'] = 'buildbot-bridge/buildbot-bridge'
             else:
--- a/testing/mozharness/configs/talos/windows_config.py
+++ b/testing/mozharness/configs/talos/windows_config.py
@@ -1,12 +1,14 @@
 import os
 import socket
+import sys
 
-PYTHON = 'c:/mozilla-build/python27/python.exe'
+#PYTHON = 'c:/mozilla-build/python27/python.exe'
+PYTHON = sys.executable
 PYTHON_DLL = 'c:/mozilla-build/python27/python27.dll'
 VENV_PATH = os.path.join(os.getcwd(), 'build/venv')
 
 config = {
     "log_name": "talos",
     "buildbot_json_path": "buildprops.json",
     "installer_path": "installer.exe",
     "virtualenv_path": VENV_PATH,
@@ -14,23 +16,23 @@ config = {
     "pip_index": False,
     "find_links": [
         "http://pypi.pvt.build.mozilla.org/pub",
         "http://pypi.pub.build.mozilla.org/pub",
     ],
     "virtualenv_modules": ['pywin32', 'talos', 'mozinstall'],
     "exes": {
         'python': PYTHON,
-        'virtualenv': [PYTHON, 'c:/mozilla-build/buildbotve/virtualenv.py'],
+        'virtualenv': [PYTHON, os.path.join(os.path.dirname(sys.executable), 'Lib', 'site-packages', 'virtualenv.py')],
         'easy_install': ['%s/scripts/python' % VENV_PATH,
                          '%s/scripts/easy_install-2.7-script.py' % VENV_PATH],
         'mozinstall': ['%s/scripts/python' % VENV_PATH,
                        '%s/scripts/mozinstall-script.py' % VENV_PATH],
-        'hg': 'c:/mozilla-build/hg/hg',
-        'tooltool.py': [PYTHON, 'C:/mozilla-build/tooltool.py'],
+        'hg': os.path.join(os.environ['PROGRAMFILES'], 'Mercurial', 'hg'),
+        'tooltool.py': [PYTHON, os.path.join(os.environ['MOZILLABUILD'], 'tooltool.py')],
     },
     "title": socket.gethostname().split('.')[0],
     "default_actions": [
         "clobber",
         "read-buildbot-config",
         "download-and-extract",
         "populate-webroot",
         "create-virtualenv",
--- a/testing/mozharness/mozharness/mozilla/testing/talos.py
+++ b/testing/mozharness/mozharness/mozilla/testing/talos.py
@@ -132,16 +132,22 @@ class Talos(TestingMixin, MercurialScrip
             "help": "Whether or not to profile the test run and save the profile results"
         }],
         [["--geckoProfileInterval"], {
             "dest": "gecko_profile_interval",
             "type": "int",
             "default": 0,
             "help": "The interval between samples taken by the profiler (milliseconds)"
         }],
+        [["--e10s"], {
+            "dest": "e10s",
+            "action": "store_true",
+            "default": False,
+            "help": "we should have --disable-e10s, but instead we assume non-e10s and use --e10s to help"
+        }],
     ] + testing_config_options + copy.deepcopy(blobupload_config_options)
 
     def __init__(self, **kwargs):
         kwargs.setdefault('config_options', self.config_options)
         kwargs.setdefault('all_actions', ['clobber',
                                           'read-buildbot-config',
                                           'download-and-extract',
                                           'populate-webroot',
@@ -278,16 +284,18 @@ class Talos(TestingMixin, MercurialScrip
         options = []
         # talos can't gather data if the process name ends with '.exe'
         if binary_path.endswith('.exe'):
             binary_path = binary_path[:-4]
         # options overwritten from **kw
         kw_options = {'executablePath': binary_path}
         if 'suite' in self.config:
             kw_options['suite'] = self.config['suite']
+            if self.config.get('e10s', False):
+                lw_options['suite'] = "%s-e10s" % self.config['suite']
         if self.config.get('title'):
             kw_options['title'] = self.config['title']
         if self.config.get('branch'):
             kw_options['branchName'] = self.config['branch']
         if self.symbols_path:
             kw_options['symbolsPath'] = self.symbols_path
         # if using mitmproxy, we've already created a py3 venv just
         # for it; need to add the path to that env/mitdump tool
@@ -312,17 +320,17 @@ class Talos(TestingMixin, MercurialScrip
 
     def populate_webroot(self):
         """Populate the production test slaves' webroots"""
         self.talos_path = os.path.join(
             self.query_abs_dirs()['abs_work_dir'], 'tests', 'talos'
         )
 
         # need to determine if talos pageset is required to be downloaded
-        if self.config.get('run_local'):
+        if self.config.get('run_local') and 'talos_extra_options' in self.config:
             # talos initiated locally, get and verify test/suite from cmd line
             self.talos_path = os.path.dirname(self.talos_json)
             if '-a' in self.config['talos_extra_options'] or '--activeTests' in self.config['talos_extra_options']:
                 # test name (-a or --activeTests) specified, find out what suite it is a part of
                 self.suite = self.get_suite_from_test()
             elif '--suite' in self.config['talos_extra_options']:
                 # --suite specified, get suite from cmd line and ensure is valid
                 suite_name_index = self.config['talos_extra_options'].index('--suite') + 1
@@ -333,17 +341,17 @@ class Talos(TestingMixin, MercurialScrip
                     self.fatal("Suite name not provided")
         else:
             # talos initiated in production via mozharness
             self.suite = self.config['suite']
 
         # now that have the suite name, check if pageset is required, if so download it
         # the --no-download option will override this
         if self.query_pagesets_name():
-            if '--no-download' not in self.config['talos_extra_options']:
+            if '--no-download' not in self.config.get('talos_extra_options', []):
                 self.info("Downloading pageset with tooltool...")
                 self.src_talos_webdir = os.path.join(self.talos_path, 'talos')
                 src_talos_pageset = os.path.join(self.src_talos_webdir, 'tests')
                 manifest_file = os.path.join(self.talos_path, 'tp5n-pageset.manifest')
                 self.tooltool_fetch(
                     manifest_file,
                     output_dir=src_talos_pageset,
                     cache=self.config.get('tooltool_cache')