:Generic harness unit test task
authorMaja Frydrychowicz <mjzffr@gmail.com>
Tue, 02 Feb 2016 17:59:46 -0500
changeset 687457 6b7479c4aa3077046fd8b794c3f4d38b8e5e9030
parent 687388 6f2f09fe0877b56640a7dd6a8eef29d332f5a5a9
child 687458 63cddebc3fcd61562df6525a58aa7f55f60138a1
push id107645
push usermjzffr@gmail.com
push dateWed, 03 Feb 2016 00:22:50 +0000
treeherdertry@63cddebc3fcd [default view] [failures only]
milestone47.0a1
:Generic harness unit test task
testing/taskcluster/tasks/branches/base_job_flags.yml
testing/taskcluster/tasks/branches/base_jobs.yml
testing/taskcluster/tasks/harness_test.yml
testing/taskcluster/tasks/tests/harness_marionette.yml
--- 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