def test_move_beet(event_loop): context = Context() context.config = get_fake_valid_config() context.task = get_fake_valid_task() context.checksums = dict() context.balrog_manifest = list() context.release_props = get_fake_balrog_props()["properties"] context.release_props['platform'] = context.release_props['stage_platform'] locale = "sample-locale" target_source = 'beetmoverscript/test/test_work_dir/cot/eSzfNqMZT_mSiQQXu8hyqg/public/build/target.txt' pretty_name = 'fake-99.0a1.en-US.target.txt' target_destinations = ( 'pub/mobile/nightly/2016/09/2016-09-01-16-26-14-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt', 'pub/mobile/nightly/latest-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt' ) expected_upload_args = [( 'pub/mobile/nightly/2016/09/2016-09-01-16-26-14-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt', 'pub/mobile/nightly/latest-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt' ), 'beetmoverscript/test/test_work_dir/cot/eSzfNqMZT_mSiQQXu8hyqg/public/build/target.txt' ] expected_balrog_manifest = { 'hash': '73b91c3625d70e9ba1992f119bdfd3fba85041e6f804a985a18efe06ebb1d4147fb044ac06b28773130b4887dd8b5b3bc63958e1bd74003077d8bc2a3909416b', 'size': 18, 'url': 'https://archive.mozilla.org/pub/mobile/nightly/2016/09/2016-09-01-16-26-14-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt', } actual_upload_args = [] async def fake_retry_upload(context, destinations, path): actual_upload_args.extend([destinations, path]) with mock.patch('beetmoverscript.script.retry_upload', fake_retry_upload): event_loop.run_until_complete( move_beet(context, target_source, target_destinations, locale, update_balrog_manifest=True, artifact_pretty_name=pretty_name)) assert expected_upload_args == actual_upload_args for k in expected_balrog_manifest.keys(): assert (context.balrog_manifest[0]['completeInfo'][0][k] == expected_balrog_manifest[k])
def test_checksums_manifest_generation(): checksums = { "firefox-53.0a1.en-US.linux-i686.complete.mar": { "sha512": "14f2d1cb999a8b42a3b6b671f7376c3e246daa65d108e2b8fe880f069601dc2b26afa155b52001235db059", "size": 618149, "sha256": "293975734953874539475" } } context = Context() context.task = get_fake_valid_task() context.config = get_fake_valid_config() context.checksums = checksums expected_checksums_manifest_dump = get_fake_checksums_manifest() checksums_manifest_dump = generate_checksums_manifest(context) assert checksums_manifest_dump == expected_checksums_manifest_dump
async def test_move_beet(update_manifest, action): context = Context() context.config = get_fake_valid_config() context.task = get_fake_valid_task() context.task['extra'] = dict() context.task['extra']['partials'] = [{ "artifact_name": "target-98.0b96.partial.mar", "platform": "linux", "locale": "de", "buildid": "19991231235959", "previousVersion": "98.0b96", "previousBuildNumber": "1" }, { "artifact_name": "target-97.0b96.partial.mar", "platform": "linux", "locale": "de", "buildid": "22423423402984", "previousVersion": "97.0b96", "previousBuildNumber": "1" }] context.action = action context.bucket = 'nightly' context.checksums = dict() context.balrog_manifest = list() context.raw_balrog_manifest = dict() context.release_props = context.task['payload']['releaseProperties'] locale = "sample-locale" target_source = 'beetmoverscript/test/test_work_dir/cot/eSzfNqMZT_mSiQQXu8hyqg/public/build/target.txt' pretty_name = 'fake-99.0a1.en-US.target.txt' target_destinations = ( 'pub/mobile/nightly/2016/09/2016-09-01-16-26-14-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt', 'pub/mobile/nightly/latest-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt' ) expected_upload_args = [( 'pub/mobile/nightly/2016/09/2016-09-01-16-26-14-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt', 'pub/mobile/nightly/latest-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt' ), 'beetmoverscript/test/test_work_dir/cot/eSzfNqMZT_mSiQQXu8hyqg/public/build/target.txt' ] expected_balrog_manifest = { 'hash': '73b91c3625d70e9ba1992f119bdfd3fba85041e6f804a985a18efe06ebb1d4147fb044ac06b28773130b4887dd8b5b3bc63958e1bd74003077d8bc2a3909416b', 'size': 18, 'url': 'https://archive.test/pub/mobile/nightly/2016/09/2016-09-01-16-26-14-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt', } actual_upload_args = [] async def fake_retry_upload(context, destinations, path): actual_upload_args.extend([destinations, path]) with mock.patch('beetmoverscript.script.retry_upload', fake_retry_upload): await move_beet(context, target_source, target_destinations, locale, update_balrog_manifest=update_manifest, balrog_format='', artifact_pretty_name=pretty_name, from_buildid=None) assert expected_upload_args == actual_upload_args if update_manifest: for k in expected_balrog_manifest.keys(): assert (context.raw_balrog_manifest[locale]['completeInfo'][''][k] == expected_balrog_manifest[k]) expected_balrog_manifest['from_buildid'] = '19991231235959' with mock.patch('beetmoverscript.script.retry_upload', fake_retry_upload): await move_beet(context, target_source, target_destinations, locale, update_balrog_manifest=update_manifest, balrog_format='', artifact_pretty_name=pretty_name, from_buildid='19991231235959') if update_manifest: if is_promotion_action(context.action): expected_balrog_manifest['previousBuildNumber'] = '1' expected_balrog_manifest['previousVersion'] = '98.0b96' for k in expected_balrog_manifest.keys(): assert (context.raw_balrog_manifest[locale]['partialInfo'][0][k] == expected_balrog_manifest[k])
async def test_move_beet(update_manifest, action): context = Context() context.config = get_fake_valid_config() context.task = get_fake_valid_task() context.task["extra"] = dict() context.task["extra"]["partials"] = [ { "artifact_name": "target-98.0b96.partial.mar", "platform": "linux", "locale": "de", "buildid": "19991231235959", "previousVersion": "98.0b96", "previousBuildNumber": "1", }, { "artifact_name": "target-97.0b96.partial.mar", "platform": "linux", "locale": "de", "buildid": "22423423402984", "previousVersion": "97.0b96", "previousBuildNumber": "1", }, ] context.action = action context.bucket = "nightly" context.checksums = dict() context.balrog_manifest = list() context.raw_balrog_manifest = dict() context.release_props = context.task["payload"]["releaseProperties"] locale = "sample-locale" target_source = "tests/test_work_dir/cot/eSzfNqMZT_mSiQQXu8hyqg/public/build/target.txt" pretty_name = "fake-99.0a1.en-US.target.txt" target_destinations = ( "pub/mobile/nightly/2016/09/2016-09-01-16-26-14-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt", "pub/mobile/nightly/latest-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt", ) expected_upload_args = [ ( "pub/mobile/nightly/2016/09/2016-09-01-16-26-14-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt", "pub/mobile/nightly/latest-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt", ), "tests/test_work_dir/cot/eSzfNqMZT_mSiQQXu8hyqg/public/build/target.txt", ] expected_balrog_manifest = { "hash": "73b91c3625d70e9ba1992f119bdfd3fba85041e6f804a985a18efe06ebb1d4147fb044ac06b28773130b4887dd8b5b3bc63958e1bd74003077d8bc2a3909416b", "size": 18, "url": "https://archive.test/pub/mobile/nightly/2016/09/2016-09-01-16-26-14-mozilla-central-fake/en-US/fake-99.0a1.en-US.target.txt", } actual_upload_args = [] async def fake_retry_upload(context, destinations, path): actual_upload_args.extend([destinations, path]) with mock.patch("beetmoverscript.script.retry_upload", fake_retry_upload): await move_beet( context, target_source, target_destinations, locale, update_balrog_manifest=update_manifest, balrog_format="", artifact_pretty_name=pretty_name, from_buildid=None, ) assert expected_upload_args == actual_upload_args if update_manifest: for k in expected_balrog_manifest.keys(): assert context.raw_balrog_manifest[locale]["completeInfo"][""][k] == expected_balrog_manifest[k] expected_balrog_manifest["from_buildid"] = "19991231235959" with mock.patch("beetmoverscript.script.retry_upload", fake_retry_upload): await move_beet( context, target_source, target_destinations, locale, update_balrog_manifest=update_manifest, balrog_format="", artifact_pretty_name=pretty_name, from_buildid="19991231235959", ) if update_manifest: if is_promotion_action(context.action): expected_balrog_manifest["previousBuildNumber"] = "1" expected_balrog_manifest["previousVersion"] = "98.0b96" for k in expected_balrog_manifest.keys(): assert context.raw_balrog_manifest[locale]["partialInfo"][0][k] == expected_balrog_manifest[k]