Bug 1856942: part 5) Factor async loading of a sheet out of `Loader::LoadSheet`....
[gecko.git] / testing / performance / hooks_android_startup.py
blob863df74447d03c0dcf4568cd3d23fdd30ca2b96b
1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4 import pathlib
5 import re
6 import subprocess
7 from datetime import datetime, timedelta
9 import requests
10 from mozperftest.system.android_startup import (
11 BASE_URL_DICT,
12 DATETIME_FORMAT,
13 KEY_ARCHITECTURE,
14 KEY_COMMIT,
15 KEY_DATETIME,
16 KEY_NAME,
17 KEY_PRODUCT,
20 HTTP_200_OKAY = 200
23 def before_iterations(kw):
24 product = kw["AndroidStartUp_product"]
25 architecture = "arm64-v8a"
26 if product == "geckoview_example":
27 architecture = "aarch64"
28 commit_info = subprocess.getoutput("hg log -l 1")
29 commit_date = re.search(r"date:\s+([:\s\w]+)\s+", str(commit_info)).group(1)
30 download_date = (
31 datetime.strptime(commit_date, "%a %b %d %H:%M:%S %Y") - timedelta(days=1)
32 ).strftime(DATETIME_FORMAT)
34 nightly_url = BASE_URL_DICT[product].format(
35 date=download_date, architecture=architecture
37 filename = f"{product}_nightly_{architecture}.apk"
38 print("Fetching {}...".format(filename), end="", flush=True)
39 download_apk_as_date(nightly_url, download_date, filename)
40 print(f"Downloaded {product} for date: {download_date}")
42 kw["apk_metadata"] = {
43 KEY_NAME: filename,
44 KEY_DATETIME: download_date,
45 KEY_COMMIT: "",
46 KEY_ARCHITECTURE: architecture,
47 KEY_PRODUCT: product,
51 def download_apk_as_date(nightly_url, download_date_string, filename):
52 apk = requests.get(nightly_url)
53 if apk.status_code != HTTP_200_OKAY:
54 raise Exception(
55 f"Something went wrong downloading the apk check to make sure you have entered"
56 f" a date that is valid and that the apk for the date you have requested("
57 f"{download_date_string}) is available and that the URL({nightly_url}) is also "
58 f"valid"
60 pathlib.Path(filename).write_bytes(apk.content)