Skip to content

Commit 1efa870

Browse files
author
Bastien Abadie
committed
bot: Build suite, chunk and platform from full task, fixes #20
1 parent 0a66ca1 commit 1efa870

File tree

12 files changed

+1494
-100
lines changed

12 files changed

+1494
-100
lines changed

bot/code_coverage_bot/taskcluster.py

Lines changed: 31 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -109,48 +109,45 @@ def perform_download():
109109
retry(perform_download)
110110

111111

112-
BUILD_PLATFORMS = [
113-
"build-linux64-ccov/debug",
114-
"build-win64-ccov/debug",
115-
"build-android-test-ccov/opt",
116-
]
117-
112+
def is_coverage_task(task):
113+
return get_suite(task) != "build"
118114

119-
TEST_PLATFORMS = [
120-
"test-linux64-ccov/debug",
121-
"test-windows10-64-ccov/debug",
122-
"test-android-em-4.3-arm7-api-16-ccov/debug",
123-
] + BUILD_PLATFORMS
124115

116+
def get_chunk(task):
117+
suite = get_suite(task)
118+
chunks = task["extra"].get("chunks", {})
119+
if "current" in chunks:
120+
return f'{suite}-{chunks["current"]}'
121+
return suite
125122

126-
def is_coverage_task(task):
127-
return any(task["task"]["metadata"]["name"].startswith(t) for t in TEST_PLATFORMS)
128123

124+
def get_suite(task):
125+
assert isinstance(task, dict)
126+
tags = task["tags"]
127+
extra = task["extra"]
128+
treeherder = extra.get("treeherder", {})
129129

130-
def get_chunk(name):
131-
# Some tests are run on build machines, we define a placeholder chunk for those.
132-
if name in BUILD_PLATFORMS:
130+
if treeherder.get("jobKind") == "build":
133131
return "build"
132+
elif "suite" in extra:
133+
if isinstance(extra["suite"], dict):
134+
return extra["suite"]["name"]
135+
return extra["suite"]
136+
else:
137+
return tags.get("test-type")
134138

135-
for t in TEST_PLATFORMS:
136-
if name.startswith(t):
137-
name = name[len(t) + 1 :]
138-
break
139-
return "-".join([p for p in name.split("-") if p != "e10s"])
139+
raise Exception("Unknown chunk")
140140

141141

142-
def get_suite(chunk_name):
143-
return "-".join([p for p in chunk_name.split("-") if not p.isdigit()])
142+
def get_platform(task):
143+
assert isinstance(task, dict)
144+
tags = task.get("tags", {})
145+
platform = tags.get("os")
146+
if not platform:
147+
raise Exception("Unknown platform")
144148

149+
# Weird case for android build on Linux docker
150+
if platform == "linux" and tags.get("android-stuff"):
151+
return "android"
145152

146-
def get_platform(name):
147-
if "linux" in name:
148-
return "linux"
149-
elif "win" in name:
150-
return "windows"
151-
elif "android-test" in name:
152-
return "android-test"
153-
elif "android-em" in name:
154-
return "android-emulator"
155-
else:
156-
raise Exception("Unknown platform")
153+
return platform
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
{
2+
"provisionerId": "aws-provisioner-v1",
3+
"workerType": "gecko-3-b-android",
4+
"schedulerId": "gecko-level-3",
5+
"taskGroupId": "Mu6w3n-dS9GOfrv6wGOtvg",
6+
"dependencies": [
7+
"CGQi0Z1nQhizLPmm9d3wYQ",
8+
"L0gYcGJ1QgeMRebLMme27Q",
9+
"RZMFIeVKTqekWYEP91wu8w",
10+
"SDBWKWVPTC6SI4o4cNXn0w",
11+
"fn4N8jQtRZWbuUAjlqXFLA",
12+
"Mu6w3n-dS9GOfrv6wGOtvg"
13+
],
14+
"requires": "all-completed",
15+
"routes": [
16+
"index.gecko.v2.mozilla-central.latest.mobile.android-test-ccov",
17+
"index.gecko.v2.mozilla-central.pushdate.2019.03.28.20190328173141.mobile.android-test-ccov",
18+
"index.gecko.v2.mozilla-central.pushlog-id.35772.mobile.android-test-ccov",
19+
"index.gecko.v2.mozilla-central.revision.e31357c7759379d2279b6883cb09c91997bfaa5d.mobile.android-test-ccov",
20+
"index.gecko.v2.trunk.revision.e31357c7759379d2279b6883cb09c91997bfaa5d.mobile.android-test-ccov",
21+
"tc-treeherder.v2.mozilla-central.e31357c7759379d2279b6883cb09c91997bfaa5d.35772"
22+
],
23+
"priority": "medium",
24+
"retries": 5,
25+
"created": "2019-03-28T17:38:38.640Z",
26+
"deadline": "2019-03-29T17:38:38.640Z",
27+
"expires": "2020-03-27T17:38:38.640Z",
28+
"scopes": [
29+
"queue:get-artifact:project/gecko/android-sdk/*",
30+
"secrets:get:project/taskcluster/gecko/hgfingerprint",
31+
"docker-worker:relengapi-proxy:tooltool.download.public",
32+
"docker-worker:relengapi-proxy:tooltool.download.internal",
33+
"secrets:get:project/releng/gecko/build/level-3/*",
34+
"docker-worker:cache:gecko-level-3-mozilla-central-build-android-test-ccov-opt-workspace-v3-33ea6ead87f10b63cd64",
35+
"docker-worker:cache:gecko-level-3-checkouts-v3-33ea6ead87f10b63cd64",
36+
"docker-worker:cache:gecko-level-3-tooltool-cache-v3-33ea6ead87f10b63cd64"
37+
],
38+
"payload": {
39+
"onExitStatus": {
40+
"retry": [
41+
4,
42+
72
43+
],
44+
"purgeCaches": [
45+
72
46+
]
47+
},
48+
"maxRunTime": 7200,
49+
"image": {
50+
"path": "public/image.tar.zst",
51+
"type": "task-image",
52+
"taskId": "fn4N8jQtRZWbuUAjlqXFLA"
53+
},
54+
"cache": {
55+
"gecko-level-3-tooltool-cache-v3-33ea6ead87f10b63cd64": "/builds/worker/tooltool-cache",
56+
"gecko-level-3-checkouts-v3-33ea6ead87f10b63cd64": "/builds/worker/checkouts",
57+
"gecko-level-3-mozilla-central-build-android-test-ccov-opt-workspace-v3-33ea6ead87f10b63cd64": "/builds/worker/workspace"
58+
},
59+
"artifacts": {
60+
"public/logs": {
61+
"path": "/builds/worker/logs/",
62+
"expires": "2020-03-27T17:38:38.640Z",
63+
"type": "directory"
64+
},
65+
"public/build": {
66+
"path": "/builds/worker/artifacts/",
67+
"expires": "2020-03-27T17:38:38.640Z",
68+
"type": "directory"
69+
},
70+
"public/code-coverage-grcov.zip": {
71+
"path": "/builds/worker/workspace/build/src/obj-firefox/code-coverage-grcov.zip",
72+
"expires": "2020-03-27T17:38:38.640Z",
73+
"type": "file"
74+
}
75+
},
76+
"command": [
77+
"/builds/worker/bin/run-task",
78+
"--gecko-checkout",
79+
"/builds/worker/workspace/build/src",
80+
"--",
81+
"/builds/worker/workspace/build/src/taskcluster/scripts/builder/build-linux.sh"
82+
],
83+
"env": {
84+
"MOZ_AUTOMATION": "1",
85+
"MOZ_SOURCE_CHANGESET": "e31357c7759379d2279b6883cb09c91997bfaa5d",
86+
"MOZ_FETCHES": "[{\"artifact\": \"public/build/grcov.tar.xz\", \"extract\": true, \"task\": \"CGQi0Z1nQhizLPmm9d3wYQ\"}]",
87+
"PERFHERDER_EXTRA_OPTIONS": "android-test-ccov",
88+
"TOOLTOOL_CACHE": "/builds/worker/tooltool-cache",
89+
"PYTHONUNBUFFERED": "1",
90+
"MOZ_FETCHES_DIR": "/builds/worker/fetches",
91+
"MOZHARNESS_SCRIPT": "mozharness/scripts/fx_desktop_build.py",
92+
"MOZ_BUILD_DATE": "20190328173141",
93+
"MH_BUILD_POOL": "taskcluster",
94+
"HG_STORE_PATH": "/builds/worker/checkouts/hg-store",
95+
"MH_CUSTOM_BUILD_VARIANT_CFG": "android-test-ccov",
96+
"MOZHARNESS_ACTIONS": "get-secrets build",
97+
"GECKO_PATH": "/builds/worker/workspace/build/src",
98+
"GECKO_HEAD_REPOSITORY": "https://hg.mozilla.org/mozilla-central",
99+
"EXTRA_MOZHARNESS_CONFIG": "{\"update_channel\": \"nightly\"}",
100+
"SCCACHE_DISABLE": "1",
101+
"MOZ_TOOLCHAINS": "public/build/android-gradle-dependencies.tar.xz@RZMFIeVKTqekWYEP91wu8w project/gecko/android-sdk/android-sdk-linux.tar.xz@L0gYcGJ1QgeMRebLMme27Q public/build/node.tar.xz@SDBWKWVPTC6SI4o4cNXn0w",
102+
"MOZ_SOURCE_REPO": "https://hg.mozilla.org/mozilla-central",
103+
"GECKO_HEAD_REV": "e31357c7759379d2279b6883cb09c91997bfaa5d",
104+
"MH_BRANCH": "mozilla-central",
105+
"MOZ_SCM_LEVEL": "3",
106+
"GECKO_BASE_REPOSITORY": "https://hg.mozilla.org/mozilla-unified",
107+
"NEED_XVFB": "false",
108+
"MOZ_DISABLE_FULL_SYMBOLS": "1",
109+
"TASKCLUSTER_CACHES": "/builds/worker/checkouts;/builds/worker/tooltool-cache;/builds/worker/workspace",
110+
"GRADLE_USER_HOME": "/builds/worker/workspace/build/src/mobile/android/gradle/dotgradle-offline",
111+
"TASKCLUSTER_VOLUMES": "/builds/worker/checkouts;/builds/worker/tooltool-cache;/builds/worker/workspace",
112+
"MOZHARNESS_CONFIG": "builds/releng_base_android_64_builds.py"
113+
},
114+
"features": {
115+
"taskclusterProxy": true,
116+
"relengAPIProxy": true,
117+
"chainOfTrust": true
118+
}
119+
},
120+
"metadata": {
121+
"owner": "[email protected]",
122+
"source": "https://hg.mozilla.org/mozilla-central/file/e31357c7759379d2279b6883cb09c91997bfaa5d/taskcluster/ci/build",
123+
"description": "Android armv7 unit test coverage report ([Treeherder push](https://treeherder.mozilla.org/#/jobs?repo=mozilla-central&revision=e31357c7759379d2279b6883cb09c91997bfaa5d))",
124+
"name": "build-android-test-ccov/opt"
125+
},
126+
"tags": {
127+
"kind": "build",
128+
"worker-implementation": "docker-worker",
129+
"createdForUser": "[email protected]",
130+
"label": "build-android-test-ccov/opt",
131+
"os": "linux",
132+
"android-stuff": "true"
133+
},
134+
"extra": {
135+
"index": {
136+
"rank": 1553794301
137+
},
138+
"chainOfTrust": {
139+
"inputs": {
140+
"docker-image": "fn4N8jQtRZWbuUAjlqXFLA"
141+
}
142+
},
143+
"treeherder": {
144+
"jobKind": "build",
145+
"groupSymbol": "A",
146+
"collection": {
147+
"opt": true
148+
},
149+
"machine": {
150+
"platform": "android-4-0-armv7-api16"
151+
},
152+
"groupName": "Android Gradle tests",
153+
"tier": 1,
154+
"symbol": "test-ccov"
155+
},
156+
"treeherder-platform": "android-4-0-armv7-api16/opt",
157+
"parent": "Mu6w3n-dS9GOfrv6wGOtvg"
158+
}
159+
}

0 commit comments

Comments
 (0)