#!/usr/bin/env python3 import requests import random import string import pprint registry_url = "docker-registry.wikimedia.org" def randstr(): return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(5)) def _request(url_part, bust_cache=False): headers = {} headers["Accept"] = "application/vnd.docker.distribution.manifest.v2+json" url = "https://{}{}".format(registry_url, url_part) if bust_cache: url += "?cache={}".format(randstr()) response = requests.request("GET", url, headers=headers, stream=True) response.raise_for_status() return response def compare_content_length(bust_cache=False): r = _request(url, bust_cache) try: expected = int(r.headers["content-length"]) except KeyError: print("ERROR: {} no content-length header".format(r.url)) pprint.pprint(r.headers, width=1) return got = len(r.raw.data) if expected != got: print("ERROR: {} expected: {} got: {} ".format(img, expected, got)) pprint.pprint(r.headers, width=1) img = ["/v2/releng/node10-test-browser/manifests/latest", ] for url in img: compare_content_length() compare_content_length(bust_cache=True)