Bug 917999 - Part 3.1 - Prepare taskcluster for a split test package.;r=jlal
authorChris Manchester <cmanchester@mozilla.com>
Mon, 29 Jun 2015 11:16:51 -0700
changeset 282388 a7a6d91116abb5c244b46793301d0e0271056603
parent 282387 7656864dc35b44889baa3dd4a385012b599e42f2
child 282389 4c47d54f05bf6e6f404a3ee58934da45ff3a9f1c
push id5067
push userraliiev@mozilla.com
push dateMon, 21 Sep 2015 14:04:52 +0000
treeherdermozilla-beta@14221ffe5b2f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjlal
bugs917999
milestone42.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 web-platform; 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 web-platform; 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