--- a/testing/taskcluster/tasks/branches/base_job_flags.yml
+++ b/testing/taskcluster/tasks/branches/base_job_flags.yml
@@ -101,16 +101,17 @@ flags:
- android-partner-sample1
- android-b2gdroid
- linux
- linux64
- linux64-st-an
- macosx64
- macosx64-st-an
- eslint-gecko
+ - marionette-harness
tests:
- cppunit
- crashtest
- crashtest-e10s
- crashtest-ipc
- gaia-build
- gaia-build-unit
--- a/testing/taskcluster/tasks/branches/base_jobs.yml
+++ b/testing/taskcluster/tasks/branches/base_jobs.yml
@@ -169,16 +169,23 @@ builds:
opt:
task: tasks/builds/android_api_15_b2gdroid.yml
eslint-gecko:
platforms:
- lint
types:
opt:
task: tasks/tests/eslint-gecko.yml
+ # these are tests that don't depend on a build, just vcs checkout
+ marionette-harness:
+ platforms:
+ - Linux64
+ types:
+ opt:
+ task: tasks/tests/harness_marionette.yml
tests:
cppunit:
allowed_build_tasks:
tasks/builds/b2g_emulator_x86_kk_opt.yml:
task: tasks/tests/b2g_emulator_cpp_unit.yml
tasks/builds/b2g_emulator_x86_kk_debug.yml:
task: tasks/tests/b2g_emulator_cpp_unit.yml
new file mode 100644
--- /dev/null
+++ b/testing/taskcluster/tasks/harness_test.yml
@@ -0,0 +1,73 @@
+# This is the "base" task which contains the common values all harness
+# unit tests must provide.
+# It's inspired by build.yml, since harness unit tests just depend on
+# checking out the source tree.
+---
+taskId: {{build_slugid}}
+
+task:
+ created: '{{now}}'
+ deadline: '{{#from_now}}24 hours{{/from_now}}'
+ metadata:
+ source: '{{source}}'
+ owner: mozilla-taskcluster-maintenance@mozilla.com
+ tags:
+ createdForUser: {{owner}}
+ workerType: b2gtest
+ provisionerId: aws-provisioner-v1
+ schedulerId: task-graph-scheduler
+
+ scopes:
+ # Nearly all of our build tasks use tc-vcs so just include the scope across
+ # the board.
+ - 'docker-worker:cache:level-{{level}}-{{project}}-tc-vcs'
+
+ payload:
+ # 30 minutes should be more than enough for harness unit tests
+ maxRunTime: 1800
+ image:
+ type: 'task-image'
+ path: 'public/image.tar'
+ taskId: '{{#task_id_for_image}}desktop-build{{/task_id_for_image}}'
+ cache:
+ # The taskcluster-vcs tooling stores the large clone caches in this
+ # directory and will reuse them for new requests this saves about 20s~
+ # and is the most generic cache possible.
+ level-{{level}}-{{project}}-tc-vcs: '/home/worker/.tc-vcs'
+
+ # All tests share a common artifact directory for ease of uploading.
+ artifacts:
+ 'public/logs/':
+ type: directory
+ path: '/home/worker/workspace/build/upload/logs/'
+ expires: '{{#from_now}}1 year{{/from_now}}'
+ 'public/test_info/':
+ type: directory
+ path: '/home/worker/workspace/build/blobber_upload_dir/'
+ expires: '{{#from_now}}1 year{{/from_now}}'
+ 'public/test':
+ type: directory
+ path: '/home/worker/artifacts/'
+ expires: '{{#from_now}}1 year{{/from_now}}'
+
+ # These can be used in mozharness script, for example. For now, not using.
+ env:
+ # Common environment variables for checking out gecko
+ GECKO_BASE_REPOSITORY: '{{base_repository}}'
+ GECKO_HEAD_REPOSITORY: '{{head_repository}}'
+ GECKO_HEAD_REV: '{{head_rev}}'
+ GECKO_HEAD_REF: '{{head_ref}}'
+
+ extra:
+ # These definitions are expected of build tasks but not used in our case
+ build_product: '{{build_product}}'
+ build_name: '{{build_name}}'
+ build_type: '{{build_type}}'
+ locations:
+ build: null
+ tests: null
+ index:
+ rank: {{pushlog_id}}
+ treeherder:
+ groupSymbol: tc
+ groupName: Submitted by taskcluster
new file mode 100644
--- /dev/null
+++ b/testing/taskcluster/tasks/tests/harness_marionette.yml
@@ -0,0 +1,27 @@
+---
+$inherits:
+ from: 'tasks/harness_test.yml'
+
+task:
+ metadata:
+ name: '[TC] - Marionette harness unit test'
+ description: 'Marionette harness unit test'
+
+ payload:
+ command:
+ - bash
+ - -cx
+ - >
+ tc-vcs checkout ./gecko {{base_repository}} {{head_repository}} {{head_rev}} {{head_ref}} &&
+ cd gecko &&
+ ./mach marionette-harness-test
+ extra:
+ treeherder:
+ symbol: Mnh
+ tier: 3
+ machine:
+ # see https://github.com/mozilla/treeherder/blob/master/ui/js/values.js
+ platform: linux64
+ treeherderEnv:
+ - production
+ - staging