commit 14586cbc060a3b4a3a0f6ff5cd92cb51695025fd
parent 6321054b3c3c93af3825da18b33fc6ba646562fa
Author: myeongjun <myeongjun.ko@gmail.com>
Date: Wed, 19 Nov 2025 13:58:40 +0000
Bug 2000845 - Generate unique perfherder-data filenames in mozperftest to prevent overwrite r=sparky,mozperftest-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D273177
Diffstat:
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/python/mozperftest/mozperftest/metrics/perfherder.py b/python/mozperftest/mozperftest/metrics/perfherder.py
@@ -1,11 +1,13 @@
# 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 hashlib
import json
import os
import pathlib
import statistics
import sys
+import time
import jsonschema
@@ -155,7 +157,10 @@ class Perfherder(Layer):
schema = json.load(f)
jsonschema.validate(all_perfherder_data, schema)
- file = "perfherder-data.json"
+ sequence = int(time.monotonic() * 1000)
+ payload = json.dumps(all_perfherder_data, sort_keys=True).encode("utf-8")
+ digest = hashlib.sha1(payload).hexdigest()[:8]
+ file = f"perfherder-data-{sequence}-{digest}.json"
if prefix:
file = f"{prefix}-{file}"
self.info(f"Writing perfherder results to {os.path.join(output, file)}")
diff --git a/python/mozperftest/mozperftest/tests/test_perfherder.py b/python/mozperftest/mozperftest/tests/test_perfherder.py
@@ -653,7 +653,7 @@ def test_perfherder_metrics_filtering():
with metrics as m, silence():
m(metadata)
- assert not pathlib.Path(output, "perfherder-data.json").exists()
+ assert not any(pathlib.Path(output).glob("perfherder-data*.json"))
def test_perfherder_exlude_stats():