mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 11:25:00 +00:00
f6f42d4f18
Considering docker images contents depend very much on the moment they were built, it is possible that two images with the same hash in the taskcluster index (at different levels) have different contents. When this happens, the build or test results could be significantly different between e.g. try and mozilla-central, possibly leading to misleading results at landing time. So if for some reason multiple levels have images for the same hash, the one used at the highest level should be prefered, such that try uses the same as mozilla-central once mozilla-central generates the image for that hash, even if there is an image previously generated for try. --HG-- extra : rebase_source : 57f593a530da02f9f576872404915c26af544688
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
# 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 unittest
|
|
|
|
from ..graph import Graph
|
|
from ..task.docker_image import DockerImageTask
|
|
from ..task.transform import TransformTask
|
|
from ..taskgraph import TaskGraph
|
|
from mozunit import main
|
|
from taskgraph.util.docker import INDEX_PREFIX
|
|
|
|
|
|
class TestTargetTasks(unittest.TestCase):
|
|
|
|
def test_from_json(self):
|
|
task = {
|
|
"routes": [],
|
|
"extra": {
|
|
"imageMeta": {
|
|
"contextHash": "<hash>",
|
|
"imageName": "<image>",
|
|
"level": "1"
|
|
}
|
|
}
|
|
}
|
|
index_paths = ["{}.level-{}.<image>.hash.<hash>".format(INDEX_PREFIX, level)
|
|
for level in reversed(range(1, 4))]
|
|
graph = TaskGraph(tasks={
|
|
'a': TransformTask(
|
|
kind='fancy',
|
|
task={
|
|
'label': 'a',
|
|
'attributes': {},
|
|
'dependencies': {},
|
|
'when': {},
|
|
'task': {'task': 'def'},
|
|
}),
|
|
'b': DockerImageTask(kind='docker-image',
|
|
label='b',
|
|
attributes={},
|
|
task=task,
|
|
index_paths=index_paths),
|
|
}, graph=Graph(nodes={'a', 'b'}, edges=set()))
|
|
|
|
tasks, new_graph = TaskGraph.from_json(graph.to_json())
|
|
self.assertEqual(graph.tasks['a'], new_graph.tasks['a'])
|
|
self.assertEqual(graph, new_graph)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|