summaryrefslogtreecommitdiffstats
path: root/testing/performance/hooks_android_startup.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/performance/hooks_android_startup.py
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/performance/hooks_android_startup.py')
-rw-r--r--testing/performance/hooks_android_startup.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/testing/performance/hooks_android_startup.py b/testing/performance/hooks_android_startup.py
new file mode 100644
index 0000000000..863df74447
--- /dev/null
+++ b/testing/performance/hooks_android_startup.py
@@ -0,0 +1,60 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+import pathlib
+import re
+import subprocess
+from datetime import datetime, timedelta
+
+import requests
+from mozperftest.system.android_startup import (
+ BASE_URL_DICT,
+ DATETIME_FORMAT,
+ KEY_ARCHITECTURE,
+ KEY_COMMIT,
+ KEY_DATETIME,
+ KEY_NAME,
+ KEY_PRODUCT,
+)
+
+HTTP_200_OKAY = 200
+
+
+def before_iterations(kw):
+ product = kw["AndroidStartUp_product"]
+ architecture = "arm64-v8a"
+ if product == "geckoview_example":
+ architecture = "aarch64"
+ commit_info = subprocess.getoutput("hg log -l 1")
+ commit_date = re.search(r"date:\s+([:\s\w]+)\s+", str(commit_info)).group(1)
+ download_date = (
+ datetime.strptime(commit_date, "%a %b %d %H:%M:%S %Y") - timedelta(days=1)
+ ).strftime(DATETIME_FORMAT)
+
+ nightly_url = BASE_URL_DICT[product].format(
+ date=download_date, architecture=architecture
+ )
+ filename = f"{product}_nightly_{architecture}.apk"
+ print("Fetching {}...".format(filename), end="", flush=True)
+ download_apk_as_date(nightly_url, download_date, filename)
+ print(f"Downloaded {product} for date: {download_date}")
+
+ kw["apk_metadata"] = {
+ KEY_NAME: filename,
+ KEY_DATETIME: download_date,
+ KEY_COMMIT: "",
+ KEY_ARCHITECTURE: architecture,
+ KEY_PRODUCT: product,
+ }
+
+
+def download_apk_as_date(nightly_url, download_date_string, filename):
+ apk = requests.get(nightly_url)
+ if apk.status_code != HTTP_200_OKAY:
+ raise Exception(
+ f"Something went wrong downloading the apk check to make sure you have entered"
+ f" a date that is valid and that the apk for the date you have requested("
+ f"{download_date_string}) is available and that the URL({nightly_url}) is also "
+ f"valid"
+ )
+ pathlib.Path(filename).write_bytes(apk.content)