Backed out 6 changesets (bug 1286900) for making wpt-7 permanently fail on Windows debug
authorPhil Ringnalda <philringnalda@gmail.com>
Tue, 27 Sep 2016 18:24:38 -0700
changeset 315387 aed585286446d6d39996d8c878a6ccabdef0d4f5
parent 315386 ea0886a6ed22cf814e0e9886230fd41448fb2711
child 315388 5ef08ec39cd74f6572442b32dc8677a12040a70a
push id30748
push usercbook@mozilla.com
push dateWed, 28 Sep 2016 13:53:19 +0000
treeherdermozilla-central@8c84b7618840 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1286900
milestone52.0a1
backs out859457467e3c1ad5da67f684bfc9a6d568c192dd
4b08ed30e0a5326dc1b63949d7e8375561a6dce8
3928e945b584cb4efd837fcd0bb55fca88f3a656
5b0f69c86028c974b83717b5f67e6d240d13f1ce
01c3527edde5d90114b72e52e5890b43e6ba15cb
6b5f059a85ad581fe9078941c80a8e22869f8149
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 6 changesets (bug 1286900) for making wpt-7 permanently fail on Windows debug CLOSED TREE Backed out changeset 859457467e3c (bug 1286900) Backed out changeset 4b08ed30e0a5 (bug 1286900) Backed out changeset 3928e945b584 (bug 1286900) Backed out changeset 5b0f69c86028 (bug 1286900) Backed out changeset 01c3527edde5 (bug 1286900) Backed out changeset 6b5f059a85ad (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/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/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
@@ -51,17 +51,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',
                 'create-virtualenv',
                 'pull',
                 'install',
                 'run-tests',
             ],
             require_config_file=require_config_file,
             config={'require_test_zip': True})
@@ -89,17 +88,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')
@@ -126,35 +125,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"]:
@@ -184,33 +172,28 @@ 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 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