Bug 917999 - Part 3.1 - Prepare taskcluster for a split test package.;r=jlal
☠☠ backed out by 7332cca1c329 ☠ ☠
authorChris Manchester <cmanchester@mozilla.com>
Mon, 29 Jun 2015 11:16:51 -0700
changeset 250564 50f9123412c71ff82aeede65da27808b4a49cfdd
parent 250563 3b19643ec039acca4c3da612bd0f3c8f42f31997
child 250565 58331e57de1c3f3bf9fa794de33499bf87aa18ef
push id61585
push usercmanchester@mozilla.com
push dateMon, 29 Jun 2015 18:16:56 +0000
treeherdermozilla-inbound@58331e57de1c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjlal
bugs917999
milestone41.0a1
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
Bug 917999 - Part 3.1 - Prepare taskcluster for a split test package.;r=jlal
build/gen_test_packages_manifest.py
testing/taskcluster/README.md
testing/taskcluster/mach_commands.py
testing/taskcluster/scripts/builder/build-b2g-desktop.sh
testing/taskcluster/scripts/builder/build-emulator-x86.sh
testing/taskcluster/scripts/builder/build-emulator.sh
testing/taskcluster/scripts/builder/build-mulet-linux.sh
testing/taskcluster/taskcluster_graph/build_task.py
testing/taskcluster/tasks/builds/b2g_desktop_base.yml
testing/taskcluster/tasks/builds/mulet_linux.yml
testing/taskcluster/tasks/tests/b2g_build_test.yml
testing/taskcluster/tasks/tests/b2g_build_unit.yml
testing/taskcluster/tasks/tests/b2g_gaia_js_integration_tests.yml
testing/taskcluster/tasks/tests/b2g_gaia_ui_test_accessibility.yml
testing/taskcluster/tasks/tests/b2g_gaia_ui_test_functional.yml
testing/taskcluster/tasks/tests/b2g_gaia_ui_test_unit.yml
testing/taskcluster/tasks/tests/b2g_gaia_unit.yml
testing/taskcluster/tasks/tests/b2g_gip_oop.yml
testing/taskcluster/tasks/tests/b2g_linter.yml
testing/taskcluster/tasks/tests/mulet_mochitests.yml
testing/taskcluster/tasks/tests/mulet_reftests.yml
testing/testsuite-targets.mk
toolkit/mozapps/installer/package-name.mk
--- a/build/gen_test_packages_manifest.py
+++ b/build/gen_test_packages_manifest.py
@@ -32,16 +32,19 @@ PACKAGE_SPECIFIED_HARNESSES = [
 def parse_args():
     parser = ArgumentParser(description='Generate a test_packages.json file to tell automation which harnesses require which test packages.')
     parser.add_argument("--common", required=True,
                         action="store", dest="tests_common",
                         help="Name of the \"common\" archive, a package to be used by all harnesses.")
     parser.add_argument("--jsshell", required=True,
                         action="store", dest="jsshell",
                         help="Name of the jsshell zip.")
+    parser.add_argument("--use-short-names", action="store_true",
+                        help="Use short names for packages (target.$name.tests.zip "
+                             "instead of $(PACKAGE_BASENAME).$name.tests.zip)")
     for harness in PACKAGE_SPECIFIED_HARNESSES:
         parser.add_argument("--%s" % harness, required=True,
                             action="store", dest=harness,
                             help="Name of the %s zip." % harness)
     parser.add_argument("--dest-file", required=True,
                         action="store", dest="destfile",
                         help="Path to the output file to be written.")
     return parser.parse_args()
@@ -49,21 +52,27 @@ def parse_args():
 def generate_package_data(args):
     # Generate a dictionary mapping test harness names (exactly as they're known to
     # mozharness and testsuite-targets.mk, ideally) to the set of archive names that
     # harness depends on to run.
     # mozharness will use this file to determine what test zips to download,
     # which will be an optimization once parts of the main zip are split to harness
     # specific zips.
     tests_common = args.tests_common
+    if args.use_short_names:
+        tests_common = 'target.common.tests.zip'
+
     jsshell = args.jsshell
 
     harness_requirements = dict([(k, [tests_common]) for k in ALL_HARNESSES])
     harness_requirements['jittest'].append(jsshell)
     for harness in PACKAGE_SPECIFIED_HARNESSES:
-        harness_requirements[harness].append(getattr(args, harness))
+        pkg_name = getattr(args, harness)
+        if args.use_short_names:
+            pkg_name = 'target.%s.tests.zip' % harness
+        harness_requirements[harness].append(pkg_name)
     return harness_requirements
 
 if __name__ == '__main__':
     args = parse_args()
     packages_data = generate_package_data(args)
     with open(args.destfile, 'w') as of:
         json.dump(packages_data, of, indent=4)
--- a/testing/taskcluster/README.md
+++ b/testing/taskcluster/README.md
@@ -82,17 +82,17 @@ task:
       'public/some_tests.zip': '/path/to/tests'
 
   extra:
     # Build tasks may put their artifacts anywhere but there are common
     # resources that test tasks need to do their job correctly so we
     # need to provide an easy way to lookup the correct aritfact path.
     locations:
       build: 'public/name_i_made_up.tar.gz'
-      tests: 'public/some_tests.zip'
+      tests: 'public/some_tests.zip' or test_packages: 'public/test_packages.json'
 ```
 
 #### Templates properties
 
   - repository: Target HG repository (ex:
     https://hg.mozilla.org/mozilla-central)
 
   - revision: Target HG revision for gecko
--- a/testing/taskcluster/mach_commands.py
+++ b/testing/taskcluster/mach_commands.py
@@ -275,20 +275,29 @@ class Graph(object):
             if params['revision_hash']:
                 decorate_task_treeherder_routes(build_task['task'],
                                                 treeherder_route)
 
             # Ensure each build graph is valid after construction.
             taskcluster_graph.build_task.validate(build_task)
             graph['tasks'].append(build_task)
 
-            tests_url = ARTIFACT_URL.format(
-                build_parameters['build_slugid'],
-                build_task['task']['extra']['locations']['tests']
-            )
+            test_packages_url, tests_url = None, None
+
+            if 'test_packages' in build_task['task']['extra']['locations']:
+                test_packages_url = ARTIFACT_URL.format(
+                    build_parameters['build_slugid'],
+                    build_task['task']['extra']['locations']['test_packages']
+                )
+
+            if 'tests' in build_task['task']['extra']['locations']:
+                tests_url = ARTIFACT_URL.format(
+                    build_parameters['build_slugid'],
+                    build_task['task']['extra']['locations']['tests']
+                )
 
             build_url = ARTIFACT_URL.format(
                 build_parameters['build_slugid'],
                 build_task['task']['extra']['locations']['build']
             )
 
             # img_url is only necessary for device builds
             img_url = ARTIFACT_URL.format(
@@ -322,17 +331,20 @@ class Graph(object):
                 message = '({}), extra.treeherder.collection must contain one type'
                 raise ValueError(message.fomrat(build['task']))
 
             for test in build['dependents']:
                 test = test['allowed_build_tasks'][build['task']]
                 test_parameters = copy.copy(build_parameters)
                 test_parameters['build_url'] = build_url
                 test_parameters['img_url'] = img_url
-                test_parameters['tests_url'] = tests_url
+                if tests_url:
+                    test_parameters['tests_url'] = tests_url
+                if test_packages_url:
+                    test_parameters['test_packages_url'] = test_packages_url
 
                 test_definition = templates.load(test['task'], {})['task']
                 chunk_config = test_definition['extra']['chunks']
 
                 # Allow branch configs to override task level chunking...
                 if 'chunks' in test:
                     chunk_config['total'] = test['chunks']
 
--- a/testing/taskcluster/scripts/builder/build-b2g-desktop.sh
+++ b/testing/taskcluster/scripts/builder/build-b2g-desktop.sh
@@ -22,26 +22,29 @@ cd $MOZ_OBJDIR
 make package package-tests buildsymbols
 
 ### Extract artifacts
 # Navigate to dist/ folder
 cd $MOZ_OBJDIR/dist
 ls -lah $MOZ_OBJDIR/dist/
 
 # Target names are cached so make sure we discard them first if found.
-rm -f target.linux-x86_64.tar.bz2 target.linux-x86_64.json target.tests.zip
+rm -f target.linux-x86_64.tar.bz2 target.linux-x86_64.json target*.tests.zip
 
 # Artifacts folder is outside of the cache.
 mkdir -p $HOME/artifacts/
 
 # Discard version numbers from packaged files, they just make it hard to write
 # the right filename in the task payload where artifacts are declared
 mv *.linux-x86_64.tar.bz2       $HOME/artifacts/target.linux-x86_64.tar.bz2
 mv *.linux-x86_64.json          $HOME/artifacts/target.linux-x86_64.json
-mv *.tests.zip                  $HOME/artifacts/target.tests.zip
+for name in common cppunittest reftest mochitest xpcshell; do
+    mv *.$name.tests.zip          $HOME/artifacts/target.$name.tests.zip ;
+done
+mv test_packages_tc.json        $HOME/artifacts/test_packages.json
 mv *.crashreporter-symbols.zip  $HOME/artifacts/target.crashreporter-symbols.zip
 
 # If the simulator does not exist don't fail
 mv fxos-simulator*              $HOME/artifacts/fxos-simulator.xpi || :
 
 ccache -s
 
 ################################### build.sh ###################################
--- a/testing/taskcluster/scripts/builder/build-emulator-x86.sh
+++ b/testing/taskcluster/scripts/builder/build-emulator-x86.sh
@@ -53,13 +53,13 @@ rm -rf $WORKSPACE/B2G/out/target/product
 # Move files into artifact locations!
 mkdir -p $HOME/artifacts
 
 ls -lah $WORKSPACE/B2G/out
 ls -lah $WORKSPACE/B2G/objdir-gecko/dist/
 
 mv $WORKSPACE/B2G/sources.xml $HOME/artifacts/sources.xml
 mv $WORKSPACE/B2G/out/target/product/generic_x86/tests/gaia-tests.zip $HOME/artifacts/gaia-tests.zip
-mv $WORKSPACE/B2G/out/target/product/generic_x86/tests/b2g-*tests.zip $HOME/artifacts/b2g-tests.zip
+mv $WORKSPACE/B2G/out/target/product/generic_x86/tests/b2g-*.zip $HOME/artifacts
 mv $WORKSPACE/B2G/out/emulator.tar.gz $HOME/artifacts/emulator.tar.gz
 mv $WORKSPACE/B2G/objdir-gecko/dist/b2g-*.crashreporter-symbols.zip $HOME/artifacts/b2g-crashreporter-symbols.zip
 
 ccache -s
--- a/testing/taskcluster/scripts/builder/build-emulator.sh
+++ b/testing/taskcluster/scripts/builder/build-emulator.sh
@@ -59,13 +59,13 @@ rm -rf $WORKSPACE/B2G/out/target/product
 # Move files into artifact locations!
 mkdir -p $HOME/artifacts
 
 ls -lah $WORKSPACE/B2G/out
 ls -lah $WORKSPACE/B2G/objdir-gecko/dist/
 
 mv $WORKSPACE/B2G/sources.xml $HOME/artifacts/sources.xml
 mv $WORKSPACE/B2G/out/target/product/generic/tests/gaia-tests.zip $HOME/artifacts/gaia-tests.zip
-mv $WORKSPACE/B2G/out/target/product/generic/tests/b2g-*tests.zip $HOME/artifacts/b2g-tests.zip
+mv $WORKSPACE/B2G/out/target/product/generic/tests/b2g-*.zip $HOME/artifacts
 mv $WORKSPACE/B2G/out/emulator.tar.gz $HOME/artifacts/emulator.tar.gz
 mv $WORKSPACE/B2G/objdir-gecko/dist/b2g-*.crashreporter-symbols.zip $HOME/artifacts/b2g-crashreporter-symbols.zip
 
 ccache -s
--- a/testing/taskcluster/scripts/builder/build-mulet-linux.sh
+++ b/testing/taskcluster/scripts/builder/build-mulet-linux.sh
@@ -16,24 +16,27 @@ make package package-tests buildsymbols;
 
 ### Extract artifacts
 # Navigate to dist/ folder
 cd $MOZ_OBJDIR/dist;
 
 ls -lah $MOZ_OBJDIR/dist/
 
 # Target names are cached so make sure we discard them first if found.
-rm -f target.linux-x86_64.tar.bz2 target.linux-x86_64.json target.tests.zip
+rm -f target.linux-x86_64.tar.bz2 target.linux-x86_64.json target*.tests.zip
 
 # Artifacts folder is outside of the cache.
 mkdir -p $HOME/artifacts/
 
 # Discard version numbers from packaged files, they just make it hard to write
 # the right filename in the task payload where artifacts are declared
 mv *.linux-x86_64.tar.bz2       $HOME/artifacts/target.linux-x86_64.tar.bz2
 mv *.linux-x86_64.json          $HOME/artifacts/target.linux-x86_64.json
-mv *.tests.zip                  $HOME/artifacts/target.tests.zip
+for name in common cppunittest reftest mochitest xpcshell; do
+    mv *.$name.tests.zip          $HOME/artifacts/target.$name.tests.zip ;
+done
+mv test_packages_tc.json        $HOME/artifacts/test_packages.json
 mv *.crashreporter-symbols.zip  $HOME/artifacts/target.crashreporter-symbols.zip
 mv jsshell-linux-x86_64.zip     $HOME/artifacts/jsshell-linux-x86_64.zip
 
 ccache -s
 
 ################################### build.sh ###################################
--- a/testing/taskcluster/taskcluster_graph/build_task.py
+++ b/testing/taskcluster/taskcluster_graph/build_task.py
@@ -24,10 +24,11 @@ def validate(task):
     if 'locations' not in task_def['extra']:
         raise BuildTaskValidationException('task.extra.locations missing')
 
     locations = task_def['extra']['locations']
 
     if 'build' not in locations:
         raise BuildTaskValidationException('task.extra.locations.build missing')
 
-    if 'tests' not in locations:
-        raise BuildTaskValidationException('task.extra.locations.tests missing')
+    if 'tests' not in locations and 'test_packages' not in locations:
+        raise BuildTaskValidationException('task.extra.locations.tests or '
+                                           'task.extra.locations.tests_packages missing')
--- a/testing/taskcluster/tasks/builds/b2g_desktop_base.yml
+++ b/testing/taskcluster/tasks/builds/b2g_desktop_base.yml
@@ -30,9 +30,9 @@ task:
       machine:
         platform: b2g-linux64
 
     # Rather then enforcing particular conventions we require that all build
     # tasks provide the "build" extra field to specify where the build and tests
     # files are located.
     locations:
       build: 'public/build/target.linux-x86_64.tar.bz2'
-      tests: 'public/build/target.tests.zip'
+      test_packages: 'public/build/test_packages.json'
--- a/testing/taskcluster/tasks/builds/mulet_linux.yml
+++ b/testing/taskcluster/tasks/builds/mulet_linux.yml
@@ -45,9 +45,9 @@ task:
       groupSymbol: "?"
       machine:
         platform: mulet-linux64
     # Rather then enforcing particular conventions we require that all build
     # tasks provide the "build" extra field to specify where the build and tests
     # files are located.
     locations:
       build: 'public/build/target.linux-x86_64.tar.bz2'
-      tests: 'public/build/target.tests.zip'
+      test_packages: 'public/build/test_packages.json'
--- a/testing/taskcluster/tasks/tests/b2g_build_test.yml
+++ b/testing/taskcluster/tasks/tests/b2g_build_test.yml
@@ -13,17 +13,17 @@ task:
       - >
         python ./mozharness/scripts/gaia_build_integration.py
         --no-read-buildbot-config
         --config-file ./mozharness/configs/b2g/gaia_integration_config.py
         --config-file ./mozharness_configs/gaia_integration_override.py
         --config-file ./mozharness_configs/remove_executables.py
         --installer-url {{build_url}}
         --no-pull
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --download-symbols ondemand
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker
         --xre-url https://queue.taskcluster.net/v1/task/wXAHAaxDQpqxoWF1iljJjg/runs/0/artifacts/public/cache/xulrunner-sdk-40.zip
     artifacts:
       'public/build':
         type: directory
         path: '/home/worker/artifacts/'
--- a/testing/taskcluster/tasks/tests/b2g_build_unit.yml
+++ b/testing/taskcluster/tasks/tests/b2g_build_unit.yml
@@ -15,17 +15,17 @@ task:
         python ./mozharness/scripts/gaia_build_unit.py
         --no-read-buildbot-config
         --config-file ./mozharness/configs/b2g/gaia_integration_config.py
         --config-file ./mozharness_configs/gaia_integration_override.py
         --config-file ./mozharness_configs/remove_executables.py
         --no-pull
         --download-symbols ondemand
         --installer-url {{build_url}}
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker
     artifacts:
       'public/build':
         type: directory
         path: '/home/worker/artifacts/'
         expires: '{{#from_now}}1 year{{/from_now}}'
 
--- a/testing/taskcluster/tasks/tests/b2g_gaia_js_integration_tests.yml
+++ b/testing/taskcluster/tasks/tests/b2g_gaia_js_integration_tests.yml
@@ -14,17 +14,17 @@ task:
       - >
         python ./mozharness/scripts/gaia_integration.py
         --no-read-buildbot-config
         --config-file b2g/gaia_integration_config.py
         --config-file ./mozharness_configs/gaia_integration_override.py
         --config-file ./mozharness_configs/remove_executables.py
         --no-pull
         --installer-url {{build_url}}
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --download-symbols ondemand
         --total-chunk {{total_chunks}}
         --this-chunk {{chunk}}
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker
     artifacts:
       'public/build':
         type: directory
--- a/testing/taskcluster/tasks/tests/b2g_gaia_ui_test_accessibility.yml
+++ b/testing/taskcluster/tasks/tests/b2g_gaia_ui_test_accessibility.yml
@@ -14,17 +14,17 @@ task:
       - >
         python ./mozharness/scripts/marionette.py
         --no-read-buildbot-config
         --config-file marionette/gaia_ui_test_prod_config.py
         --config-file ./mozharness_configs/gaia_integration_override.py
         --config-file ./mozharness_configs/remove_executables.py
         --no-pull
         --installer-url {{build_url}}
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --download-symbols ondemand
         --gip-suite accessibility
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker
         --xre-url https://queue.taskcluster.net/v1/task/wXAHAaxDQpqxoWF1iljJjg/runs/0/artifacts/public/cache/xulrunner-sdk-40.zip
     artifacts:
       'public/build':
         type: directory
--- a/testing/taskcluster/tasks/tests/b2g_gaia_ui_test_functional.yml
+++ b/testing/taskcluster/tasks/tests/b2g_gaia_ui_test_functional.yml
@@ -14,17 +14,17 @@ task:
       - >
         python ./mozharness/scripts/marionette.py
         --no-read-buildbot-config
         --config-file marionette/gaia_ui_test_prod_config.py
         --config-file ./mozharness_configs/gaia_integration_override.py
         --config-file ./mozharness_configs/remove_executables.py
         --no-pull
         --installer-url {{build_url}}
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --download-symbols ondemand
         --gip-suite functional
         --total-chunk {{total_chunks}}
         --this-chunk {{chunk}}
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker
         --xre-url https://queue.taskcluster.net/v1/task/wXAHAaxDQpqxoWF1iljJjg/runs/0/artifacts/public/cache/xulrunner-sdk-40.zip
     artifacts:
--- a/testing/taskcluster/tasks/tests/b2g_gaia_ui_test_unit.yml
+++ b/testing/taskcluster/tasks/tests/b2g_gaia_ui_test_unit.yml
@@ -14,17 +14,17 @@ task:
       - >
         python ./mozharness/scripts/marionette.py
         --no-read-buildbot-config
         --config-file marionette/gaia_ui_test_prod_config.py
         --config-file ./mozharness_configs/gaia_integration_override.py
         --config-file ./mozharness_configs/remove_executables.py
         --installer-url {{build_url}}
         --no-pull
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --download-symbols ondemand
         --gip-suite unit
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker
         --xre-url https://queue.taskcluster.net/v1/task/wXAHAaxDQpqxoWF1iljJjg/runs/0/artifacts/public/cache/xulrunner-sdk-40.zip
     artifacts:
       'public/build':
         type: directory
--- a/testing/taskcluster/tasks/tests/b2g_gaia_unit.yml
+++ b/testing/taskcluster/tasks/tests/b2g_gaia_unit.yml
@@ -15,17 +15,17 @@ task:
         python ./mozharness/scripts/gaia_unit.py
         --no-read-buildbot-config
         --config-file ./mozharness/configs/b2g/gaia_unit_production_config.py
         --config-file ./mozharness_configs/gaia_integration_override.py
         --config-file ./mozharness_configs/remove_executables.py
         --download-symbols ondemand
         --no-pull
         --installer-url {{build_url}}
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker
         --xre-url https://queue.taskcluster.net/v1/task/wXAHAaxDQpqxoWF1iljJjg/runs/0/artifacts/public/cache/xulrunner-sdk-40.zip
     artifacts:
       'public/build':
         type: directory
         path: '/home/worker/artifacts/'
         expires: '{{#from_now}}1 year{{/from_now}}'
--- a/testing/taskcluster/tasks/tests/b2g_gip_oop.yml
+++ b/testing/taskcluster/tasks/tests/b2g_gip_oop.yml
@@ -15,17 +15,17 @@ task:
         python ./mozharness/scripts/marionette.py
         --no-read-buildbot-config
         --config-file marionette/gaia_ui_test_prod_config.py
         --config-file ./mozharness_configs/gaia_integration_override.py
         --config-file ./mozharness_configs/remove_executables.py
         --no-pull
         --app-arg -oop
         --installer-url {{build_url}}
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --download-symbols ondemand
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker
         --xre-url https://queue.taskcluster.net/v1/task/wXAHAaxDQpqxoWF1iljJjg/runs/0/artifacts/public/cache/xulrunner-sdk-40.zip
     artifacts:
       'public/build':
         type: directory
         path: '/home/worker/artifacts/'
--- a/testing/taskcluster/tasks/tests/b2g_linter.yml
+++ b/testing/taskcluster/tasks/tests/b2g_linter.yml
@@ -13,17 +13,17 @@ task:
       - >
         python ./mozharness/scripts/gaia_linter.py
         --no-read-buildbot-config
         --config-file ./mozharness/configs/b2g/gaia_integration_config.py
         --config-file ./mozharness_configs/gaia_integration_override.py
         --download-symbols ondemand
         --no-pull
         --installer-url {{build_url}}
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker
     artifacts:
       'public/build':
         type: directory
         path: '/home/worker/artifacts/'
         expires: '{{#from_now}}1 year{{/from_now}}'
 
--- a/testing/taskcluster/tasks/tests/mulet_mochitests.yml
+++ b/testing/taskcluster/tasks/tests/mulet_mochitests.yml
@@ -9,17 +9,17 @@ task:
     command:
       - entrypoint # entrypoint ensures we are running in xvfb
       - >
         python ./mozharness/scripts/desktop_unittest.py
         --no-read-buildbot-config
         --config-file ./mozharness/configs/unittests/linux_unittest.py
         --config-file ./mozharness_configs/remove_executables.py
         --installer-url {{build_url}}
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --download-symbols ondemand
         --mochitest-suite plain-chunked
         --total-chunk={{total_chunks}}
         --this-chunk={{chunk}}
     artifacts:
       'public/build':
         type: directory
         path: '/home/worker/artifacts/'
--- a/testing/taskcluster/tasks/tests/mulet_reftests.yml
+++ b/testing/taskcluster/tasks/tests/mulet_reftests.yml
@@ -14,17 +14,17 @@ task:
       - ./bin/pull_gaia.sh &&
       - >
         python ./mozharness/scripts/mulet_unittest.py --no-read-buildbot-config
         --config-file ./mozharness/configs/b2g/generic_config.py
         --config-file ./mozharness/configs/b2g/mulet_config.py
         --config-file ./mozharness_configs/remove_executables.py
         --no-pull
         --installer-url {{build_url}}
-        --test-url {{tests_url}}
+        --test-packages-url {{test_packages_url}}
         --download-symbols ondemand
         --test-suite reftest
         --test-manifest tests/layout/reftests/reftest.list
         --this-chunk {{chunk}}
         --total-chunk {{total_chunks}}
         --gaia-repo https://hg.mozilla.org/integration/gaia-central
         --gaia-dir /home/worker/gaia
     artifacts:
--- a/testing/testsuite-targets.mk
+++ b/testing/testsuite-targets.mk
@@ -402,16 +402,17 @@ package-tests: \
   stage-tps \
   stage-modules \
   stage-marionette \
   stage-cppunittests \
   stage-jittest \
   stage-web-platform-tests \
   stage-luciddream \
   test-packages-manifest \
+  test-packages-manifest-tc \
   $(NULL)
 ifdef MOZ_WEBRTC
 package-tests: stage-steeplechase
 endif
 else
 # This staging area has been built for us by universal/flight.mk
 PKG_STAGE = $(DIST)/universal/test-stage
 endif
@@ -421,16 +422,24 @@ TEST_PKGS := \
   mochitest \
   reftest \
   xpcshell \
   web-platform \
   $(NULL)
 
 PKG_ARG = --$(1) $(PKG_BASENAME).$(1).tests.zip
 
+test-packages-manifest-tc:
+	$(PYTHON) $(topsrcdir)/build/gen_test_packages_manifest.py \
+      --jsshell $(JSSHELL_NAME) \
+      --dest-file $(MOZ_TEST_PACKAGES_FILE_TC) \
+      --use-short-names \
+      $(call PKG_ARG,common) \
+      $(foreach pkg,$(TEST_PKGS),$(call PKG_ARG,$(pkg)))
+
 test-packages-manifest:
 	@rm -f $(MOZ_TEST_PACKAGES_FILE)
 	$(PYTHON) $(topsrcdir)/build/gen_test_packages_manifest.py \
       --jsshell $(JSSHELL_NAME) \
       --dest-file $(MOZ_TEST_PACKAGES_FILE) \
       $(call PKG_ARG,common) \
       $(foreach pkg,$(TEST_PKGS),$(call PKG_ARG,$(pkg)))
 
@@ -620,10 +629,11 @@ stage-instrumentation-tests: make-stage-
   stage-tps \
   stage-modules \
   stage-marionette \
   stage-steeplechase \
   stage-web-platform-tests \
   stage-instrumentation-tests \
   stage-luciddream \
   test-packages-manifest \
+  test-packages-manifest-tc \
   $(NULL)
 
--- a/toolkit/mozapps/installer/package-name.mk
+++ b/toolkit/mozapps/installer/package-name.mk
@@ -156,14 +156,15 @@ MOZ_SOURCE_STAMP = $(firstword $(shell h
 ifdef MOZ_INCLUDE_SOURCE_INFO
 MOZ_SOURCE_REPO = $(call getSourceRepo,$(MOZILLA_DIR)$(NULL) $(NULL))
 endif
 
 MOZ_SOURCESTAMP_FILE = $(DIST)/$(PKG_PATH)/$(MOZ_INFO_BASENAME).txt
 MOZ_BUILDINFO_FILE = $(DIST)/$(PKG_PATH)/$(MOZ_INFO_BASENAME).json
 MOZ_MOZINFO_FILE = $(DIST)/$(PKG_PATH)/$(MOZ_INFO_BASENAME).mozinfo.json
 MOZ_TEST_PACKAGES_FILE = $(DIST)/$(PKG_PATH)/test_packages.json
+MOZ_TEST_PACKAGES_FILE_TC = $(DIST)/$(PKG_PATH)/test_packages_tc.json
 
 # JavaScript Shell
 JSSHELL_NAME = jsshell-$(MOZ_PKG_PLATFORM).zip
 PKG_JSSHELL = $(DIST)/$(JSSHELL_NAME)
 
 endif # PACKAGE_NAME_MK_INCLUDED