Backed out 8 changesets (bug 1286900) for win7vm wpt timeouts a=backout
authorWes Kocher <wkocher@mozilla.com>
Tue, 04 Oct 2016 17:17:07 -0700
changeset 359278 cda7c3e91ad7eb8119e1ae352cf362d9afa19918
parent 359277 3470e326025c62381dc5f7c06629dbe5dbd7f242
child 359312 9dc03b80c67223e32853b309e6c95fdd182061ba
push id6795
push userjlund@mozilla.com
push dateMon, 23 Jan 2017 14:19:46 +0000
treeherdermozilla-beta@76101b503191 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbackout
bugs1286900
milestone52.0a1
backs out3fff88de2f2d5194bc940ad67ca2187498d00243
748abfe6748e95dcaadf50187f71c42c14ae47e3
b4844ee1e542d33e2b857ad143c717526592a0b6
bde587e47d00d689f58126a705f5014eb00f1a66
a1311218621b1f23ffa8a4f8167e643155c0d837
2de97e3cfcb3aad58312dc4e27be960025a312a6
43df1e962f8e833babb0bf1d71fc33d77be9f0a9
6ed46e8ac86c2347c7f78d53cc04595b35f40752
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out 8 changesets (bug 1286900) for win7vm wpt timeouts a=backout Backed out changeset 3fff88de2f2d (bug 1286900) Backed out changeset 748abfe6748e (bug 1286900) Backed out changeset b4844ee1e542 (bug 1286900) Backed out changeset bde587e47d00 (bug 1286900) Backed out changeset a1311218621b (bug 1286900) Backed out changeset 2de97e3cfcb3 (bug 1286900) Backed out changeset 43df1e962f8e (bug 1286900) Backed out changeset 6ed46e8ac86c (bug 1286900)
build/gen_test_packages_manifest.py
python/mozbuild/mozbuild/action/test_archive.py
testing/mozbase/mozinfo/mozinfo/mozinfo.py
testing/mozbase/mozinfo/tests/test.py
testing/mozharness/configs/web_platform_tests/prod_config.py
testing/mozharness/configs/web_platform_tests/prod_config_windows.py
testing/mozharness/configs/web_platform_tests/test_config.py
testing/mozharness/configs/web_platform_tests/test_config_windows.py
testing/mozharness/mozharness/base/vcs/mercurial.py
testing/mozharness/mozharness/mozilla/testing/testbase.py
testing/mozharness/scripts/web_platform_tests.py
testing/testsuite-targets.mk
--- a/build/gen_test_packages_manifest.py
+++ b/build/gen_test_packages_manifest.py
@@ -11,25 +11,27 @@ from argparse import ArgumentParser
 ALL_HARNESSES = [
     'common', # Harnesses without a specific package will look here.
     'mochitest',
     'reftest',
     'xpcshell',
     'cppunittest',
     'jittest',
     'mozbase',
+    'web-platform',
     'talos',
     'gtest',
 ]
 
 PACKAGE_SPECIFIED_HARNESSES = [
     'cppunittest',
     'mochitest',
     'reftest',
     'xpcshell',
+    'web-platform',
     'talos',
 ]
 
 # These packages are not present for every build configuration.
 OPTIONAL_PACKAGES = [
     'gtest',
 ]
 
--- a/python/mozbuild/mozbuild/action/test_archive.py
+++ b/python/mozbuild/mozbuild/action/test_archive.py
@@ -359,16 +359,44 @@ ARCHIVE_FILES = {
     ],
     'talos': [
         {
             'source': buildconfig.topsrcdir,
             'base': 'testing',
             'pattern': 'talos/**',
         },
     ],
+    'web-platform': [
+        {
+            'source': buildconfig.topsrcdir,
+            'base': 'testing',
+            'pattern': 'web-platform/meta/**',
+        },
+        {
+            'source': buildconfig.topsrcdir,
+            'base': 'testing',
+            'pattern': 'web-platform/mozilla/**',
+        },
+        {
+            'source': buildconfig.topsrcdir,
+            'base': 'testing',
+            'pattern': 'web-platform/tests/**',
+        },
+        {
+            'source': buildconfig.topobjdir,
+            'base': '_tests',
+            'pattern': 'web-platform/**',
+        },
+        {
+            'source': buildconfig.topobjdir,
+            'base': '',
+            'pattern': 'mozinfo.json',
+            'dest': 'web-platform',
+        },
+    ],
     'xpcshell': [
         {
             'source': buildconfig.topobjdir,
             'base': '_tests/xpcshell',
             'pattern': '**',
             'dest': 'xpcshell/tests',
         },
         {
--- a/testing/mozbase/mozinfo/mozinfo/mozinfo.py
+++ b/testing/mozbase/mozinfo/mozinfo/mozinfo.py
@@ -196,30 +196,23 @@ def update(new_info):
     if isLinux or isBsd:
         globals()['isUnix'] = True
 
 def find_and_update_from_json(*dirs):
     """
     Find a mozinfo.json file, load it, and update the info with the
     contents.
 
-    The search strategy is as follows. The first available file is used.
-
-    1) MOZINFO_PATH environment variable.
-    2) objdir (via a build system context)
-    3) Traversing directories ``dirs`` for a mozinfo.json file.
+    :param dirs: Directories in which to look for the file. They will be
+                 searched after first looking in the root of the objdir
+                 if the current script is being run from a Mozilla objdir.
 
     Returns the full path to mozinfo.json if it was found, or None otherwise.
     """
-    env_path = _os.environ.get('MOZINFO_PATH', None)
-    if env_path:
-        # Will raise if path does not exist or can't be loaded.
-        update(env_path)
-        return env_path
-
+    # First, see if we're in an objdir
     try:
         from mozbuild.base import MozbuildObject, BuildEnvironmentNotFoundException
         build = MozbuildObject.from_environment()
         json_path = _os.path.join(build.topobjdir, "mozinfo.json")
         if _os.path.isfile(json_path):
             update(json_path)
             return json_path
     except ImportError:
--- a/testing/mozbase/mozinfo/tests/test.py
+++ b/testing/mozbase/mozinfo/tests/test.py
@@ -48,31 +48,16 @@ class TestMozinfo(unittest.TestCase):
 
     def test_update_file_invalid_json(self):
         """Test that mozinfo.update handles invalid JSON correctly"""
         j = os.path.join(self.tempdir,'test.json')
         with open(j, 'w') as f:
             f.write('invalid{"json":')
         self.assertRaises(ValueError,mozinfo.update,[j])
 
-    def test_find_and_update_file_env(self):
-        """mozinfo.find_and_update_json finds path from environment variable."""
-        j = os.path.join(self.tempdir, 'explicit_mozinfo.json')
-        with open(j, 'w') as fh:
-            json.dump({'foo': 'environment'}, fh)
-
-        old_env = dict(os.environ)
-        try:
-            os.environ['MOZINFO_PATH'] = j
-            self.assertEqual(mozinfo.find_and_update_from_json(), j)
-            self.assertEqual(mozinfo.info['foo'], 'environment')
-        finally:
-            os.environ.clear()
-            os.environ.update(old_env)
-
     def test_find_and_update_file(self):
         """Test that mozinfo.find_and_update_from_json can
         find mozinfo.json in a directory passed to it."""
         j = os.path.join(self.tempdir, "mozinfo.json")
         with open(j, "w") as f:
             f.write(json.dumps({"foo": "abcdefg"}))
         self.assertEqual(mozinfo.find_and_update_from_json(self.tempdir), j)
         self.assertEqual(mozinfo.info["foo"], "abcdefg")
--- a/testing/mozharness/configs/web_platform_tests/prod_config.py
+++ b/testing/mozharness/configs/web_platform_tests/prod_config.py
@@ -1,16 +1,26 @@
 # ***** BEGIN LICENSE BLOCK *****
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
 # You can obtain one at http://mozilla.org/MPL/2.0/.
 # ***** END LICENSE BLOCK *****
 import os
 
 config = {
+    "options": [
+        "--prefs-root=%(test_path)s/prefs",
+        "--processes=1",
+        "--config=%(test_path)s/wptrunner.ini",
+        "--ca-cert-path=%(test_path)s/certs/cacert.pem",
+        "--host-key-path=%(test_path)s/certs/web-platform.test.key",
+        "--host-cert-path=%(test_path)s/certs/web-platform.test.pem",
+        "--certutil-binary=%(test_install_path)s/bin/certutil",
+    ],
+
     "exes": {
         'python': '/tools/buildbot/bin/python',
         'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'],
         'tooltool.py': "/tools/tooltool.py",
     },
 
     "find_links": [
         "http://pypi.pvt.build.mozilla.org/pub",
--- a/testing/mozharness/configs/web_platform_tests/prod_config_windows.py
+++ b/testing/mozharness/configs/web_platform_tests/prod_config_windows.py
@@ -5,16 +5,26 @@
 # ***** END LICENSE BLOCK *****
 
 # This is a template config file for web-platform-tests test.
 
 import os
 import sys
 
 config = {
+    "options": [
+        "--prefs-root=%(test_path)s/prefs",
+        "--processes=1",
+        "--config=%(test_path)s/wptrunner.ini",
+        "--ca-cert-path=%(test_path)s/certs/cacert.pem",
+        "--host-key-path=%(test_path)s/certs/web-platform.test.key",
+        "--host-cert-path=%(test_path)s/certs/web-platform.test.pem",
+        "--certutil-binary=%(test_install_path)s/bin/certutil",
+    ],
+
     "exes": {
         'python': sys.executable,
         'virtualenv': [sys.executable, 'c:/mozilla-build/buildbotve/virtualenv.py'],
         'hg': 'c:/mozilla-build/hg/hg',
         'mozinstall': ['%s/build/venv/scripts/python' % os.getcwd(),
                        '%s/build/venv/scripts/mozinstall-script.py' % os.getcwd()],
         'tooltool.py': [sys.executable, 'C:/mozilla-build/tooltool.py'],
     },
--- a/testing/mozharness/configs/web_platform_tests/test_config.py
+++ b/testing/mozharness/configs/web_platform_tests/test_config.py
@@ -1,15 +1,25 @@
 # ***** BEGIN LICENSE BLOCK *****
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
 # You can obtain one at http://mozilla.org/MPL/2.0/.
 # ***** END LICENSE BLOCK *****
 
 config = {
+    "options": [
+        "--prefs-root=%(test_path)s/prefs",
+        "--processes=1",
+        "--config=%(test_path)s/wptrunner.ini",
+        "--ca-cert-path=%(test_path)s/certs/cacert.pem",
+        "--host-key-path=%(test_path)s/certs/web-platform.test.key",
+        "--host-cert-path=%(test_path)s/certs/web-platform.test.pem",
+        "--certutil-binary=%(test_install_path)s/bin/certutil",
+    ],
+
     "default_actions": [
         'clobber',
         'download-and-extract',
         'create-virtualenv',
         'pull',
         'install',
         'run-tests',
     ],
--- a/testing/mozharness/configs/web_platform_tests/test_config_windows.py
+++ b/testing/mozharness/configs/web_platform_tests/test_config_windows.py
@@ -3,16 +3,26 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
 # You can obtain one at http://mozilla.org/MPL/2.0/.
 # ***** END LICENSE BLOCK *****
 
 import os
 import sys
 
 config = {
+    "options": [
+        "--prefs-root=%(test_path)s/prefs",
+        "--processes=1",
+        "--config=%(test_path)s/wptrunner.ini",
+        "--ca-cert-path=%(test_path)s/certs/cacert.pem",
+        "--host-key-path=%(test_path)s/certs/web-platform.test.key",
+        "--host-cert-path=%(test_path)s/certs/web-platform.test.pem",
+        "--certutil-binary=%(test_install_path)s/bin/certutil",
+    ],
+
     "exes": {
         'python': sys.executable,
         'virtualenv': [sys.executable, 'c:/mozilla-source/cedar/python/virtualenv/virtualenv.py'], #'c:/mozilla-build/buildbotve/virtualenv.py'],
         'hg': 'c:/mozilla-build/hg/hg',
         'mozinstall': ['%s/build/venv/scripts/python' % os.getcwd(),
                        '%s/build/venv/scripts/mozinstall-script.py' % os.getcwd()],
     },
 
--- a/testing/mozharness/mozharness/base/vcs/mercurial.py
+++ b/testing/mozharness/mozharness/base/vcs/mercurial.py
@@ -383,19 +383,17 @@ class MercurialVCS(ScriptMixin, LogMixin
 
         if rev:
             args.extend(['--revision', rev])
         if branch:
             args.extend(['--branch', branch])
 
         parser = RepositoryUpdateRevisionParser(config=self.config,
                                                 log_obj=self.log_obj)
-        env = dict(os.environ)
-        env[b'PYTHONUNBUFFERED'] = b'1'
-        if self.run_command(args, output_parser=parser, env=env):
+        if self.run_command(args, output_parser=parser):
             raise VCSException('repo checkout failed!')
 
         if not parser.revision:
             raise VCSException('could not identify revision updated to')
 
         return parser.revision
 
     def apply_and_push(self, localrepo, remote, changer, max_attempts=10,
--- a/testing/mozharness/mozharness/mozilla/testing/testbase.py
+++ b/testing/mozharness/mozharness/mozilla/testing/testbase.py
@@ -4,30 +4,28 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this file,
 # You can obtain one at http://mozilla.org/MPL/2.0/.
 # ***** END LICENSE BLOCK *****
 
 import copy
 import os
 import platform
 import pprint
+import re
 import urllib2
 import json
 import socket
 
 from mozharness.base.errors import BaseErrorList
 from mozharness.base.log import FATAL, WARNING
 from mozharness.base.python import (
     ResourceMonitoringMixin,
     VirtualenvMixin,
     virtualenv_config_options,
 )
-from mozharness.base.vcs.vcsbase import (
-    VCSMixin,
-)
 from mozharness.mozilla.buildbot import BuildbotMixin, TBPL_WARNING
 from mozharness.mozilla.proxxy import Proxxy
 from mozharness.mozilla.structuredlog import StructuredOutputParser
 from mozharness.mozilla.taskcluster_helper import TaskClusterArtifactFinderMixin
 from mozharness.mozilla.testing.unittest import DesktopUnittestOutputParser
 from mozharness.mozilla.testing.try_tools import TryToolsMixin, try_config_options
 from mozharness.mozilla.tooltool import TooltoolMixin
 
@@ -99,18 +97,17 @@ testing_config_options = [
      "choices": ['ondemand', 'true'],
      "help": "Download and extract crash reporter symbols.",
       }],
 ] + copy.deepcopy(virtualenv_config_options) + copy.deepcopy(try_config_options)
 
 
 # TestingMixin {{{1
 class TestingMixin(VirtualenvMixin, BuildbotMixin, ResourceMonitoringMixin,
-                   TaskClusterArtifactFinderMixin, TooltoolMixin, TryToolsMixin,
-                   VCSMixin):
+                   TaskClusterArtifactFinderMixin, TooltoolMixin, TryToolsMixin):
     """
     The steps to identify + download the proper bits for [browser] unit
     tests and Talos.
     """
 
     installer_url = None
     installer_path = None
     binary_path = None
@@ -118,65 +115,16 @@ class TestingMixin(VirtualenvMixin, Buil
     test_packages_url = None
     symbols_url = None
     symbols_path = None
     jsshell_url = None
     minidump_stackwalk_path = None
     default_tools_repo = 'https://hg.mozilla.org/build/tools'
     proxxy = None
 
-    def query_abs_dirs(self):
-        dirs = super(TestingMixin, self).query_abs_dirs()
-
-        if self.topsrcdir:
-            dirs['checkout'] = self.topsrcdir
-        else:
-            dirs['checkout'] = os.path.join(dirs['base_work_dir'], 'checkout')
-
-        if 'HG_SHARE_BASE_DIR' in os.environ:
-            dirs['hg_shared'] = os.environ['HG_SHARE_BASE_DIR']
-        else:
-            dirs['hg_shared'] = os.path.join(dirs['base_work_dir'], 'hg-shared')
-
-        return dirs
-
-    def ensure_firefox_checkout(self):
-        """Action that ensures we have a source checkout available.
-
-        If a source checkout is not available, we create one.
-        """
-        if self.topsrcdir:
-            self.info('already running from a source checkout; nothing to do')
-            return
-
-        self.info('not running from source checkout')
-
-        bb_config = getattr(self, 'buildbot_config', None)
-        if not bb_config:
-            self.fatal('buildbot config not loaded; unable to proceed '
-                       '(a buildbot config must be loaded to obtain VCS info)')
-
-        bb_props = bb_config['properties']
-
-        dirs = self.query_abs_dirs()
-
-        args = {
-            'repo': 'https://hg.mozilla.org/%s' % bb_props['repo_path'],
-            'dest': dirs['checkout'],
-            'vcs_share_base': dirs['hg_shared'],
-            'revision': bb_props['revision'],
-            'clone_with_purge': True,
-            # Always use the unified repo as the upstream because it is
-            # stored more efficiently.
-            'clone_upstream_url': 'https://hg.mozilla.org/mozilla-unified',
-        }
-
-        self.vcs_checkout(vcs='hg', **args)
-        self.topsrcdir = dirs['checkout']
-
     def _query_proxxy(self):
         """manages the proxxy"""
         if not self.proxxy:
             self.proxxy = Proxxy(self.config, self.log_obj)
         return self.proxxy
 
     def download_proxied_file(self, url, file_name=None, parent_dir=None,
                               create_parent_dir=True, error_level=FATAL,
--- a/testing/mozharness/scripts/web_platform_tests.py
+++ b/testing/mozharness/scripts/web_platform_tests.py
@@ -53,17 +53,16 @@ class WebPlatformTest(TestingMixin, Merc
         copy.deepcopy(blobupload_config_options)
 
     def __init__(self, require_config_file=True):
         super(WebPlatformTest, self).__init__(
             config_options=self.config_options,
             all_actions=[
                 'clobber',
                 'read-buildbot-config',
-                'ensure-firefox-checkout',
                 'download-and-extract',
                 'fetch-geckodriver',
                 'create-virtualenv',
                 'pull',
                 'install',
                 'run-tests',
             ],
             require_config_file=require_config_file,
@@ -93,17 +92,17 @@ class WebPlatformTest(TestingMixin, Merc
     def query_abs_dirs(self):
         if self.abs_dirs:
             return self.abs_dirs
         abs_dirs = super(WebPlatformTest, self).query_abs_dirs()
 
         dirs = {}
         dirs['abs_app_install_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'application')
         dirs['abs_test_install_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'tests')
-        dirs['abs_wpttest_dir'] = os.path.join(abs_dirs['checkout'], 'testing', 'web-platform')
+        dirs["abs_wpttest_dir"] = os.path.join(dirs['abs_test_install_dir'], "web-platform")
         dirs['abs_blob_upload_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'blobber_upload_dir')
 
         abs_dirs.update(dirs)
         self.abs_dirs = abs_dirs
 
         return self.abs_dirs
 
     @PreScriptAction('create-virtualenv')
@@ -130,35 +129,24 @@ class WebPlatformTest(TestingMixin, Merc
         cmd = [self.query_python_path('python'), '-u']
         cmd.append(os.path.join(dirs["abs_wpttest_dir"], run_file_name))
 
         # Make sure that the logging directory exists
         if self.mkdir_p(dirs["abs_blob_upload_dir"]) == -1:
             self.fatal("Could not create blobber upload directory")
             # Exit
 
-        blob_upload_dir = dirs['abs_blob_upload_dir']
-        wpt_dir = dirs['abs_wpttest_dir']
-
-        cmd.extend([
-            '--log-raw=-',
-            '--log-raw=%s' % os.path.join(blob_upload_dir, 'wpt_raw.log'),
-            '--log-errorsummary=%s' % os.path.join(blob_upload_dir,
-                                                   'wpt_errorsummary.log'),
-            '--binary=%s' % self.binary_path,
-            '--symbols-path=%s' % self.query_symbols_url(),
-            '--stackwalk-binary=%s' % self.query_minidump_stackwalk(),
-            '--processes=1',
-            '--prefs-root=%s' % os.path.join(dirs['checkout'], 'testing', 'profiles'),
-            '--config=%s/wptrunner.ini' % wpt_dir,
-            '--ca-cert-path=%s/certs/cacert.pem' % wpt_dir,
-            '--host-key-path=%s/certs/web-platform.test.key' % wpt_dir,
-            '--host-cert-path=%s/certs/web-platform.test.pem' % wpt_dir,
-            '--certutil-binary=%s/bin/certutil' % dirs['abs_test_install_dir'],
-        ])
+        cmd += ["--log-raw=-",
+                "--log-raw=%s" % os.path.join(dirs["abs_blob_upload_dir"],
+                                              "wpt_raw.log"),
+                "--log-errorsummary=%s" % os.path.join(dirs["abs_blob_upload_dir"],
+                                                       "wpt_errorsummary.log"),
+                "--binary=%s" % self.binary_path,
+                "--symbols-path=%s" % self.query_symbols_url(),
+                "--stackwalk-binary=%s" % self.query_minidump_stackwalk()]
 
         for test_type in c.get("test_type", []):
             cmd.append("--test-type=%s" % test_type)
 
         if not c["e10s"]:
             cmd.append("--disable-e10s")
 
         for opt in ["total_chunks", "this_chunk"]:
@@ -192,18 +180,17 @@ class WebPlatformTest(TestingMixin, Merc
 
     def download_and_extract(self):
         super(WebPlatformTest, self).download_and_extract(
             extract_dirs=["bin/*",
                           "config/*",
                           "mozbase/*",
                           "marionette/*",
                           "tools/wptserve/*",
-                          "web-platform/*",
-                          "mozinfo.json"],
+                          "web-platform/*"],
             suite_categories=["web-platform"])
 
     def fetch_geckodriver(self):
         c = self.config
         dirs = self.query_abs_dirs()
 
         platform_name = self.platform_name()
 
@@ -241,21 +228,17 @@ class WebPlatformTest(TestingMixin, Merc
     def run_tests(self):
         dirs = self.query_abs_dirs()
         cmd = self._query_cmd()
 
         parser = StructuredOutputParser(config=self.config,
                                         log_obj=self.log_obj,
                                         log_compact=True)
 
-        env = {
-            'MINIDUMP_SAVE_PATH': dirs['abs_blob_upload_dir'],
-            'MOZINFO_PATH': os.path.join(dirs['abs_test_install_dir'],
-                                         'mozinfo.json'),
-        }
+        env = {'MINIDUMP_SAVE_PATH': dirs['abs_blob_upload_dir']}
 
         if self.config['allow_software_gl_layers']:
             env['MOZ_LAYERS_ALLOW_SOFTWARE_GL'] = '1'
 
         env = self.query_env(partial_env=env, log_level=INFO)
 
         return_code = self.run_command(cmd,
                                        cwd=dirs['abs_work_dir'],
--- a/testing/testsuite-targets.mk
+++ b/testing/testsuite-targets.mk
@@ -193,16 +193,17 @@ stage-all: stage-cppunittests
 endif
 
 TEST_PKGS := \
   common \
   cppunittest \
   mochitest \
   reftest \
   talos \
+  web-platform \
   xpcshell \
   $(NULL)
 
 ifdef BUILD_GTEST
 stage-all: stage-gtest
 TEST_PKGS += gtest
 endif