def setUp(self): self.graph = make_task_graph( product="firefox", version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=True, en_US_config={"platforms": { "linux": {"task_id": "xyz"}, "win32": {"task_id": "xyy"} }}, l10n_config={}, repo_path="releases/foo", revision="fedcba654321", branch="foo", updates_enabled=False, bouncer_enabled=False, push_to_candidates_enabled=False, postrelease_version_bump_enabled=False, signing_class="release-signing", verifyConfigs={}, signing_pvt_key=PVT_KEY_FILE, ) self.task_def = get_task_by_name(self.graph, "foo_source") self.task = self.task_def["task"] self.payload = self.task["payload"] self.signing_task_def = get_task_by_name(self.graph, "foo_source_signing") self.signing_task = self.signing_task_def["task"]
def setUp(self): self.graph = make_task_graph( version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=False, updates_enabled=False, bouncer_enabled=False, push_to_candidates_enabled=True, postrelease_version_bump_enabled=False, en_US_config=self.en_US_config, l10n_config=self.l10n_config, partial_updates={"38.0": {"buildNumber": 1}, "37.0": {"buildNumber": 2}}, balrog_api_root="https://fake.balrog/api", signing_class="release-signing", branch="mozilla-beta", product="firefox", repo_path="releases/mozilla-beta", revision="abcdef123456", release_channels=["beta"], signing_pvt_key=PVT_KEY_FILE, ) self.tasks = { "win32": get_task_by_name( self.graph, "release-{}_{}_{}_l10n_repack_beetmover_candidates_1".format("mozilla-beta", "firefox", "win32"), ), "macosx64": get_task_by_name( self.graph, "release-{}_{}_{}_l10n_repack_beetmover_candidates_1".format("mozilla-beta", "firefox", "macosx64"), ), }
def test_task_scopes(self): for p in ("win32", "macosx64"): for v in ("38.0build1", "37.0build2"): generator = get_task_by_name(self.graph, "{}_en-US_{}_funsize_update_generator".format(p, v)) signing = get_task_by_name(self.graph, "{}_en-US_{}_funsize_signing_task".format(p, v)) balrog = get_task_by_name(self.graph, "{}_en-US_{}_funsize_balrog_task".format(p, v)) self.assertIsNone(generator["task"].get("scopes")) self.assertItemsEqual(signing["task"]["scopes"], ["signing:cert:release-signing", "signing:format:mar", "signing:format:gpg"]) self.assertItemsEqual(balrog["task"]["scopes"], ["docker-worker:feature:balrogVPNProxy"])
def test_partials_present(self): for pl in ["win32", "linux64"]: for part in ["37.0", "38.0"]: for chunk in [1, 2]: task_name1 = "release-mozilla-beta_firefox_{pl}_l10n_repack_{chunk}_{part}_update_generator".format( pl=pl, part=part, chunk=chunk) task_name2 = "release-mozilla-beta_firefox_{pl}_l10n_repack_{chunk}_{part}_signing_task".format( pl=pl, part=part, chunk=chunk) self.assertIsNotNone( get_task_by_name(self.graph, task_name1)) self.assertIsNotNone( get_task_by_name(self.graph, task_name2))
def test_signing_manifests(self): for p in ("win32", "macosx64"): for v in ("38.0build1", "37.0build2"): generator = get_task_by_name(self.graph, "{}_en-US_{}_funsize_update_generator".format(p, v)) signing = get_task_by_name(self.graph, "{}_en-US_{}_funsize_signing_task".format(p, v)) balrog = get_task_by_name(self.graph, "{}_en-US_{}_funsize_balrog_task".format(p, v)) self.assertIsNone(generator["task"].get("scopes")) self.assertItemsEqual(signing["task"]["scopes"], ["signing:cert:release-signing", "signing:format:mar", "signing:format:gpg"]) self.assertIsNotNone(balrog["task"].get("scopes")) self.assertEqual( signing["task"]["payload"]["signingManifest"], "https://queue.taskcluster.net/v1/task/%s/artifacts/public/env/manifest.json" % generator["taskId"])
def setUp(self): self.graph = make_task_graph( version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=False, en_US_config={ "platforms": { "macosx64": {}, "win32": {}, "win64": {}, "linux": {}, "linux64": {}, } }, l10n_config={}, repo_path="releases/foo", revision="fedcba654321", branch="foo", updates_enabled=False, bouncer_enabled=False, push_to_candidates_enabled=False, postrelease_version_bump_enabled=False, product="firefox", signing_class="release-signing", release_channels=["foo"], enUS_platforms=["linux", "linux64", "win64", "win32", "macosx64"], signing_pvt_key=PVT_KEY_FILE, ) self.task_def = get_task_by_name(self.graph, "foo_final_verify") self.task = self.task_def["task"] self.payload = self.task["payload"]
def test_taskid_in_command(self): for platform, task in self.tasks.iteritems(): l10n_artifact_task = get_task_by_name( self.graph, "release-mozilla-beta_firefox_{}_l10n_repack_artifacts_1".format(platform) ) command = task["task"]["payload"]["command"] self.assertTrue("--taskid {}".format(l10n_artifact_task["taskId"]) in "".join(command))
def test_taskid_in_command(self): for platform, task in self.tasks.iteritems(): l10n_artifact_task = get_task_by_name( self.graph, "release-mozilla-beta_firefox_{}_l10n_repack_artifacts_1".format(platform) ) command = task['task']['payload']['command'] self.assertTrue("--taskid {}".format(l10n_artifact_task['taskId']) in "".join(command))
def setUp(self): self.graph = make_task_graph( version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=False, updates_enabled=True, bouncer_enabled=False, push_to_candidates_enabled=False, postrelease_version_bump_enabled=False, en_US_config={"platforms": { "win32": { "task_id": "xyy" } }}, l10n_config={ "platforms": { "win32": { "en_us_binary_url": "https://queue.taskcluster.net/something/firefox.exe", "locales": ["de", "en-GB", "zh-TW"], "chunks": 1, }, "linux64": { "en_us_binary_url": "https://queue.taskcluster.net/something/firefox.tar.xz", "locales": ["de", "en-GB", "zh-TW"], "chunks": 1, }, }, "changesets": { "de": "default", "en-GB": "default", "zh-TW": "default", }, }, partial_updates={ "38.0": { "buildNumber": 1, }, "37.0": { "buildNumber": 2, }, }, balrog_api_root="https://fake.balrog/api", signing_class="release-signing", branch="mozilla-beta", product="firefox", repo_path="releases/mozilla-beta", revision="abcdef123456", release_channels=["beta"], signing_pvt_key=PVT_KEY_FILE, ) self.task = get_task_by_name( self.graph, "release-mozilla-beta_firefox_win32_l10n_repack_1") self.payload = self.task["task"]["payload"] self.properties = self.payload["properties"]
def test_taskid_in_command(self): for platform, task in self.tasks.iteritems(): if platform == "win32": buildername = "release-mozilla-beta_firefox_win32_l10n_repack_1_38.0_signing_task" else: # macosx64 buildername = "release-mozilla-beta_firefox_macosx64_l10n_repack_1_37.0_signing_task" funsize_artifact = get_task_by_name(self.graph, buildername) command = task['task']['payload']['command'] self.assertTrue("--taskid {}".format(funsize_artifact['taskId']) in "".join(command))
def test_taskid_in_command(self): for platform, task in self.tasks.iteritems(): if platform == "win32": buildername = "win32_en-US_38.0build1_funsize_signing_task" else: # macosx64 buildername = "macosx64_en-US_37.0build2_funsize_signing_task" funsize_artifact = get_task_by_name(self.graph, buildername) command = task['task']['payload']['command'] self.assertTrue("--taskid {}".format(funsize_artifact['taskId']) in "".join(command))
def setUp(self): self.graph = make_task_graph( version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=False, updates_enabled=False, bouncer_enabled=False, push_to_candidates_enabled=True, postrelease_version_bump_enabled=False, en_US_config=self.en_US_config, l10n_config={}, partial_updates={ "38.0": { "buildNumber": 1, }, "37.0": { "buildNumber": 2, }, }, branch="mozilla-beta", repo_path="releases/mozilla-beta", product="firefox", revision="abcdef123456", balrog_api_root="https://fake.balrog/api", signing_class="release-signing", verifyConfigs={}, signing_pvt_key=PVT_KEY_FILE, ) self.tasks = { 'win32': get_task_by_name( self.graph, "release-{}_{}_{}_complete_en-US_beetmover_candidates".format( "mozilla-beta", "firefox", 'win32' ) ), 'macosx64': get_task_by_name( self.graph, "release-{}_{}_{}_complete_en-US_beetmover_candidates".format( "mozilla-beta", "firefox", 'macosx64' ) ), }
def setUp(self): self.graph = make_task_graph( version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=False, en_US_config={ "platforms": { "macosx64": {}, "win32": {}, "win64": {}, "linux": {}, "linux64": {}, } }, l10n_config={}, repo_path="releases/foo", product="firefox", revision="fedcba654321", partial_updates={ "38.0": { "buildNumber": 1, }, "37.0": { "buildNumber": 2, }, }, branch="foo", updates_enabled=False, bouncer_enabled=True, push_to_candidates_enabled=False, postrelease_version_bump_enabled=True, signing_class="release-signing", release_channels=["foo"], signing_pvt_key=PVT_KEY_FILE, ) self.task = get_task_by_name( self.graph, "release-foo-firefox_version_bump") self.human_task = get_task_by_name( self.graph, "release-foo-firefox_version_bump_human_decision") self.payload = self.task["task"]["payload"]
def setUp(self): self.graph = make_task_graph( version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=False, updates_enabled=True, bouncer_enabled=False, push_to_candidates_enabled=True, postrelease_version_bump_enabled=False, en_US_config=self.en_US_config, l10n_config={}, partial_updates={ "38.0": { "buildNumber": 1, }, "37.0": { "buildNumber": 2, }, }, branch="mozilla-beta", repo_path="releases/mozilla-beta", product="firefox", revision="abcdef123456", balrog_api_root="https://fake.balrog/api", signing_class="release-signing", verifyConfigs={}, signing_pvt_key=PVT_KEY_FILE, ) self.tasks = { 'win32': get_task_by_name( self.graph, "release-{}_{}_{}_partial_en-US_{}build{}_beetmover_candidates".format( "mozilla-beta", "firefox", 'win32', "38.0", 1 ) ), 'macosx64': get_task_by_name( self.graph, "release-{}_{}_{}_partial_en-US_{}build{}_beetmover_candidates".format( "mozilla-beta", "firefox", 'macosx64', "37.0", 2 ) ), }
def test_mar_urls(self): for p in ("win32", "macosx64"): for v, appV in (("38.0build1", "38.0"), ("37.0build2", "37.0")): generator = get_task_by_name(self.graph, "{}_en-US_{}_funsize_update_generator".format(p, v)) signing = get_task_by_name(self.graph, "{}_en-US_{}_funsize_signing_task".format(p, v)) balrog = get_task_by_name(self.graph, "{}_en-US_{}_funsize_balrog_task".format(p, v)) assert generator.get("requires") is None assert signing.get("requires") == [generator["taskId"]] assert balrog.get("requires") == [signing["taskId"]] if p == "win32": assert generator["task"]["extra"]["funsize"]["partials"][0]["from_mar"] == \ "http://download.mozilla.org/?product=firefox-%s-complete&os=win&lang=en-US" % appV assert generator["task"]["extra"]["funsize"]["partials"][0]["to_mar"] == \ "https://queue.taskcluster.net/v1/task/xyy/artifacts/public/build/firefox-42.0.en-US.win32.complete.mar" elif p == "macosx64": assert generator["task"]["extra"]["funsize"]["partials"][0]["from_mar"] == \ "http://download.mozilla.org/?product=firefox-%s-complete&os=osx&lang=en-US" % appV assert generator["task"]["extra"]["funsize"]["partials"][0]["to_mar"] == \ "https://queue.taskcluster.net/v1/task/xyz/artifacts/public/build/firefox-42.0.en-US.mac.complete.mar"
def test_encryption(self): graph = make_task_graph( version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=False, updates_enabled=True, bouncer_enabled=False, push_to_candidates_enabled=False, postrelease_version_bump_enabled=False, en_US_config={ "platforms": { "macosx64": { "task_id": "xyz" }, "win32": { "task_id": "xyy" } } }, l10n_config={}, partial_updates={ "38.0": { "buildNumber": 1, }, "37.0": { "buildNumber": 2, }, }, branch="mozilla-beta", product="firefox", revision="abcdef123456", balrog_api_root="https://fake.balrog/api", signing_class="dep-signing", release_channels=["beta"], signing_pvt_key=PVT_KEY_FILE, repo_path="foo/bar", ) do_common_assertions(graph) for p in ("win32", "macosx64"): for v in ("38.0build1", "37.0build2"): balrog = get_task_by_name( graph, "{}_en-US_{}_funsize_balrog_task".format(p, v)) self.assertEqual( len(balrog["task"]["payload"]["encryptedEnv"]), 2) self.assertTrue( balrog["task"]["payload"]["encryptedEnv"][0].startswith( "wcB"), "Encrypted string should always start with 'wcB'")
def setUp(self): self.graph = make_task_graph( product="firefox", version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=True, en_US_config={ "platforms": { "linux": { "task_id": "xyz" }, "win32": { "task_id": "xyy" } } }, l10n_config={}, repo_path="releases/foo", revision="fedcba654321", branch="foo", updates_enabled=False, bouncer_enabled=False, push_to_candidates_enabled=False, postrelease_version_bump_enabled=False, signing_class="release-signing", verifyConfigs={}, signing_pvt_key=PVT_KEY_FILE, ) self.task_def = get_task_by_name(self.graph, "foo_source") self.task = self.task_def["task"] self.payload = self.task["payload"] self.signing_task_def = get_task_by_name(self.graph, "foo_source_signing") self.signing_task = self.signing_task_def["task"]
def test_multichannel(self): for chan in ["beta", "release"]: task_def = get_task_by_name( self.graph, "{chan}_final_verify".format(chan=chan)) task = task_def["task"] payload = task["payload"] self.assertEqual(task["provisionerId"], "aws-provisioner-v1") self.assertEqual(task["workerType"], "b2gtest") self.assertFalse("scopes" in task) # XXX: Change the image name once it's in-tree. self.assertTrue(payload["image"].startswith("rail/python-test-runner")) self.assertFalse("cache" in payload) self.assertFalse("artifacts" in payload) self.assertTrue("env" in payload) self.assertTrue("command" in payload)
def test_multichannel(self): for chan in ["beta", "release"]: task_def = get_task_by_name( self.graph, "{chan}_final_verify".format(chan=chan)) task = task_def["task"] payload = task["payload"] self.assertEqual(task["provisionerId"], "aws-provisioner-v1") self.assertEqual(task["workerType"], "b2gtest") self.assertFalse("scopes" in task) # XXX: Change the image name once it's in-tree. self.assertTrue( payload["image"].startswith("rail/python-test-runner")) self.assertFalse("cache" in payload) self.assertFalse("artifacts" in payload) self.assertTrue("env" in payload) self.assertTrue("command" in payload)
def test_encryption(self): graph = make_task_graph( version="42.0b2", next_version="42.0b3", appVersion="42.0", buildNumber=3, source_enabled=False, updates_enabled=True, bouncer_enabled=False, push_to_candidates_enabled=False, postrelease_version_bump_enabled=False, en_US_config={"platforms": { "macosx64": {"task_id": "xyz"}, "win32": {"task_id": "xyy"} }}, l10n_config={}, partial_updates={ "38.0": { "buildNumber": 1, }, "37.0": { "buildNumber": 2, }, }, branch="mozilla-beta", product="firefox", revision="abcdef123456", balrog_api_root="https://fake.balrog/api", signing_class="dep-signing", release_channels=["beta"], signing_pvt_key=PVT_KEY_FILE, repo_path="foo/bar", ) do_common_assertions(graph) for p in ("win32", "macosx64"): for v in ("38.0build1", "37.0build2"): balrog = get_task_by_name(graph, "{}_en-US_{}_funsize_balrog_task".format(p, v)) self.assertEqual(len(balrog["task"]["payload"]["encryptedEnv"]), 2) self.assertTrue( balrog["task"]["payload"]["encryptedEnv"][0].startswith("wcB"), "Encrypted string should always start with 'wcB'")
def test_chunk2_artifacts_task_present(self): self.assertIsNotNone( get_task_by_name( self.graph, "release-mozilla-beta_firefox_win32_l10n_repack_artifacts_2"))
def test_artifacts_task_only_one_chunk_1(self): self.assertIsNone( get_task_by_name( self.graph, "release-mozilla-beta_firefox_win32_l10n_repack_artifacts_0"))
def test_artifacts_task_provisioner(self): art_task = get_task_by_name( self.graph, "release-mozilla-beta_firefox_win32_l10n_repack_artifacts_1") self.assertEqual(art_task["task"]["provisionerId"], "null-provisioner")
def test_chunk1_artifacts_task_present(self): # make sure artifacts tasks are present self.assertIsNotNone( get_task_by_name( self.graph, "release-mozilla-beta_firefox_win32_l10n_repack_artifacts_1"))
def test_no_chunk3_artifacts(self): self.assertIsNone( get_task_by_name( self.graph, "release-mozilla-beta_firefox_win32_l10n_repack_artifacts_3"))
def test_partials_present(self): for pl in ["win32", "linux64"]: for part in ["37.0", "38.0"]: task_name = "release-mozilla-beta_firefox_{pl}_l10n_repack_1_{part}_update_generator".format( pl=pl, part=part) self.assertIsNotNone(get_task_by_name(self.graph, task_name))
def test_artifacts_task_worker_type(self): art_task = get_task_by_name( self.graph, "release-mozilla-beta_firefox_win32_l10n_repack_artifacts_1") self.assertEqual(art_task["task"]["workerType"], "buildbot")