Exemplo n.º 1
0
def generate_balrog_info(context,
                         artifact_pretty_name,
                         locale,
                         destinations,
                         from_buildid=None):
    release_props = context.release_props
    checksums = context.checksums

    url = "{prefix}/{s3_key}".format(prefix=get_bucket_url_prefix(context),
                                     s3_key=destinations[0])

    data = {
        "hash": checksums[artifact_pretty_name][release_props["hashType"]],
        "size": checksums[artifact_pretty_name]["size"],
        "url": url
    }
    if from_buildid:
        data["from_buildid"] = from_buildid
        if is_promotion_action(context.action):
            partials = get_partials_props(context.task)
            for p in partials.values():
                if p["buildid"] == str(from_buildid):
                    data["previousVersion"] = p["previousVersion"]
                    data["previousBuildNumber"] = p["previousBuildNumber"]
                    break

    return data
Exemplo n.º 2
0
def enrich_balrog_manifest(context, locale):
    release_props = context.release_props

    url_replacements = []
    if release_props["branch"] in RELEASE_BRANCHES:
        url_replacements.append(['http://archive.mozilla.org/pub',
                                 'http://download.cdn.mozilla.net/pub'])

    enrich_dict = {
        "appName": get_product_name(release_props['appName'], release_props['stage_platform']),
        "appVersion": release_props["appVersion"],
        "branch": release_props["branch"],
        "buildid": release_props["buildid"],
        "extVersion": release_props["appVersion"],
        "hashType": release_props["hashType"],
        "locale": locale if not locale == 'multi' else 'en-US',
        "platform": NORMALIZED_BALROG_PLATFORMS.get(release_props["stage_platform"],
                                                    release_props["stage_platform"]),
        "url_replacements": url_replacements
    }

    if is_promotion_action(context.action) or is_release_action(context.action):
        enrich_dict["tc_release"] = True
        enrich_dict["build_number"] = context.task['payload']['build_number']
        enrich_dict["version"] = context.task['payload']['version']
    else:
        enrich_dict["tc_nightly"] = True

    return enrich_dict
Exemplo n.º 3
0
def test_is_action_release_or_promotion(action, release, promotion):
    assert is_release_action(action) is release
    assert is_promotion_action(action) is promotion
Exemplo n.º 4
0
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])
Exemplo n.º 5
0
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]