Skip to content

Commit 8b777c7

Browse files
committed
fix another case of pypy results parsing
1 parent 91d60c0 commit 8b777c7

File tree

3 files changed

+48
-1
lines changed

3 files changed

+48
-1
lines changed

mx.graalpython/mx_graalpython_python_benchmarks.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,13 @@ def parse(self, text: str) -> dict:
308308

309309
for result in js["results"]:
310310
name = result[0]
311-
values = result[2]["base_times"]
311+
if result[1] == "RawResult":
312+
values = result[2]["base_times"]
313+
elif result[1] == "SimpleComparisonResult":
314+
values = [result[2]["base_time"]]
315+
else:
316+
mx.warn(f"No data found for {name} with {result[1]}")
317+
continue
312318
for iteration, value in enumerate(values):
313319
r.append(
314320
{

mx.graalpython/test_json_parsing.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,28 @@ def test_pypy_results_parsing(self):
170170

171171
self.assertEqual(len(results), 100, "should have 2*50 peak values")
172172

173+
def test_pypy_results_parsing2(self):
174+
import mx
175+
import mx_graalpython_python_benchmarks
176+
from mx_graalpython_python_benchmarks import PyPyJsonRule
177+
178+
rule = PyPyJsonRule("", "pypy")
179+
180+
with mock.patch('mx_graalpython_python_benchmarks.open', mock.mock_open(read_data=PYPY_JSON2)):
181+
results = rule.parse("ignored")
182+
183+
for result in results:
184+
self.assertEqual(result["bench-suite"], "pypy")
185+
self.assertIn(result["benchmark"], ["scimark_fft"])
186+
self.assertIn(result["metric.name"], ["time"])
187+
self.assertIn(result["metric.unit"], ["s"])
188+
self.assertEqual(result["metric.score-function"], "id")
189+
self.assertEqual(result["metric.type"], "numeric")
190+
self.assertIsInstance(result["metric.value"], float)
191+
self.assertIsInstance(result["metric.iteration"], int)
192+
193+
self.assertEqual(len(results), 1, "just 1 value expected")
194+
173195

174196
if __name__ == '__main__':
175197
unittest.main()

mx.graalpython/test_json_parsing_data.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,22 @@
5858

5959
PYPY_JSON = """{"revision":null,"results":[["ai","RawResult",{"base_times":[0.1217505931854248,0.11989736557006836,0.12207770347595215,0.1212611198425293,0.12156319618225098,0.12146615982055664,0.12032508850097656,0.1202230453491211,0.12592768669128418,0.13594508171081543,0.122528076171875,0.1665651798248291,0.1241462230682373,0.12212920188903809,0.12382888793945312,0.12459158897399902,0.122039794921875,0.13077545166015625,0.12950801849365234,0.1267859935760498,0.12106966972351074,0.1210174560546875,0.12207388877868652,0.14129161834716797,0.13507962226867676,0.14200639724731445,0.11904263496398926,0.11947965621948242,0.12305212020874023,0.1311967372894287,0.12037253379821777,0.14057588577270508,0.14170050621032715,0.12280845642089844,0.11976122856140137,0.12080550193786621,0.12368440628051758,0.12019705772399902,0.11932086944580078,0.14517879486083984,0.1198279857635498,0.11819911003112793,0.11786103248596191,0.1181638240814209,0.11869239807128906,0.11780905723571777,0.1181485652923584,0.11883139610290527,0.1194918155670166,0.11823678016662598],"changed_times":[0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001]}],["deltablue","RawResult",{"base_times":[0.026775598526000977,0.026055097579956055,0.02671957015991211,0.022783279418945312,0.02802562713623047,0.026577234268188477,0.035811662673950195,0.01685333251953125,0.03618144989013672,0.013469457626342773,0.013250112533569336,0.0172579288482666,0.0043566226959228516,0.010727643966674805,0.03354144096374512,0.002112865447998047,0.002906322479248047,0.002869844436645508,0.002597808837890625,0.0019690990447998047,0.001994609832763672,0.0019328594207763672,0.012478828430175781,0.0018014907836914062,0.0017092227935791016,0.02298450469970703,0.0014376640319824219,0.002154827117919922,0.0023458003997802734,0.0013427734375,0.0012488365173339844,0.0012402534484863281,0.001291513442993164,0.0031270980834960938,0.0015931129455566406,0.001474618911743164,0.0013575553894042969,0.0013427734375,0.0013327598571777344,0.001308441162109375,0.0013232231140136719,0.0019099712371826172,0.0013327598571777344,0.001382589340209961,0.0025641918182373047,0.002003908157348633,0.0012929439544677734,0.0015599727630615234,0.0013189315795898438,0.0012421607971191406],"changed_times":[0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001,0.0001]}]],"options":"","branch":"default"}
6060
"""
61+
62+
63+
PYPY_JSON2 = """{
64+
"revision": null,
65+
"results": [
66+
[
67+
"scimark_fft",
68+
"SimpleComparisonResult",
69+
{
70+
"base_time": 0.17319999694824217,
71+
"changed_time": -1,
72+
"time_delta": -1
73+
}
74+
]
75+
],
76+
"options": "",
77+
"branch": "default"
78+
}
79+
"""

0 commit comments

Comments
 (0)