1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from __future__ import absolute_import, print_function, unicode_literals
import pytest
import six
from taskgraph import morph
from taskgraph.graph import Graph
from taskgraph.parameters import Parameters
from taskgraph.taskgraph import TaskGraph
from taskgraph.task import Task
from mozunit import main
@pytest.fixture
def make_taskgraph():
def inner(tasks):
label_to_taskid = {k: k + "-tid" for k in tasks}
for label, task_id in six.iteritems(label_to_taskid):
tasks[label].task_id = task_id
graph = Graph(nodes=set(tasks), edges=set())
taskgraph = TaskGraph(tasks, graph)
return taskgraph, label_to_taskid
return inner
def test_make_index_tasks(make_taskgraph, graph_config):
task_def = {
"routes": [
"index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.es-MX",
"index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.fy-NL",
"index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.sk",
"index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.sl",
"index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.uk",
"index.gecko.v2.mozilla-central.latest.firefox-l10n.linux64-opt.zh-CN",
"index.gecko.v2.mozilla-central.pushdate."
"2017.04.04.20170404100210.firefox-l10n.linux64-opt.es-MX",
"index.gecko.v2.mozilla-central.pushdate."
"2017.04.04.20170404100210.firefox-l10n.linux64-opt.fy-NL",
"index.gecko.v2.mozilla-central.pushdate."
"2017.04.04.20170404100210.firefox-l10n.linux64-opt.sk",
"index.gecko.v2.mozilla-central.pushdate."
"2017.04.04.20170404100210.firefox-l10n.linux64-opt.sl",
"index.gecko.v2.mozilla-central.pushdate."
"2017.04.04.20170404100210.firefox-l10n.linux64-opt.uk",
"index.gecko.v2.mozilla-central.pushdate."
"2017.04.04.20170404100210.firefox-l10n.linux64-opt.zh-CN",
"index.gecko.v2.mozilla-central.revision."
"b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.es-MX",
"index.gecko.v2.mozilla-central.revision."
"b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.fy-NL",
"index.gecko.v2.mozilla-central.revision."
"b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.sk",
"index.gecko.v2.mozilla-central.revision."
"b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.sl",
"index.gecko.v2.mozilla-central.revision."
"b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.uk",
"index.gecko.v2.mozilla-central.revision."
"b5d8b27a753725c1de41ffae2e338798f3b5cacd.firefox-l10n.linux64-opt.zh-CN",
],
"deadline": "soon",
"metadata": {
"description": "desc",
"owner": "owner@foo.com",
"source": "https://source",
},
"extra": {
"index": {"rank": 1540722354},
},
}
task = Task(kind="test", label="a", attributes={}, task=task_def)
docker_task = Task(
kind="docker-image", label="docker-image-index-task", attributes={}, task={}
)
taskgraph, label_to_taskid = make_taskgraph(
{
task.label: task,
docker_task.label: docker_task,
}
)
index_paths = [
r.split(".", 1)[1] for r in task_def["routes"] if r.startswith("index.")
]
index_task = morph.make_index_task(
task,
taskgraph,
label_to_taskid,
Parameters(strict=False),
graph_config,
index_paths=index_paths,
index_rank=1540722354,
purpose="index-task",
dependencies={},
)
assert index_task.task["payload"]["command"][0] == "insert-indexes.js"
assert index_task.task["payload"]["env"]["TARGET_TASKID"] == "a-tid"
assert index_task.task["payload"]["env"]["INDEX_RANK"] == 1540722354
# check the scope summary
assert index_task.task["scopes"] == ["index:insert-task:gecko.v2.mozilla-central.*"]
if __name__ == "__main__":
main()
|