Skip to content

Commit ed1df96

Browse files
[add] Enabled target tables on RTS (#242)
1 parent 19935b1 commit ed1df96

File tree

5 files changed

+98
-11
lines changed

5 files changed

+98
-11
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "redisbench-admin"
3-
version = "0.5.18"
3+
version = "0.5.19"
44
description = "Redis benchmark run helper. A wrapper around Redis and Redis Modules benchmark tools ( ftsb_redisearch, memtier_benchmark, redis-benchmark, aibench, etc... )."
55
authors = ["filipecosta90 <[email protected]>","Redis Performance Group <[email protected]>"]
66
readme = "README.md"

redisbench_admin/run/common.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,10 @@ def common_exporter_logic(
229229
per_version_time_series_dict = {}
230230
per_branch_time_series_dict = {}
231231
testcase_metric_context_paths = []
232+
version_target_table_keyname = None
233+
version_target_table_dict = None
234+
branch_target_table_keyname = None
235+
branch_target_table_dict = None
232236

233237
if exporter_timemetric_path is not None and len(metrics) > 0:
234238
if datapoints_timestamp is None:
@@ -245,6 +249,8 @@ def common_exporter_logic(
245249
(
246250
_,
247251
per_version_time_series_dict,
252+
version_target_table_keyname,
253+
version_target_table_dict,
248254
) = extract_perversion_timeseries_from_results(
249255
datapoints_timestamp,
250256
metrics,
@@ -263,7 +269,12 @@ def common_exporter_logic(
263269
)
264270
if tf_github_branch is not None and tf_github_branch != "":
265271
# extract per branch datapoints
266-
_, per_branch_time_series_dict = extract_perbranch_timeseries_from_results(
272+
(
273+
_,
274+
per_branch_time_series_dict,
275+
branch_target_table_keyname,
276+
branch_target_table_dict,
277+
) = extract_perbranch_timeseries_from_results(
267278
datapoints_timestamp,
268279
metrics,
269280
results_dict,
@@ -295,6 +306,10 @@ def common_exporter_logic(
295306
per_version_time_series_dict,
296307
per_branch_time_series_dict,
297308
testcase_metric_context_paths,
309+
version_target_table_keyname,
310+
version_target_table_dict,
311+
branch_target_table_keyname,
312+
branch_target_table_dict,
298313
)
299314

300315

redisbench_admin/run/redistimeseries.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ def prepare_timeseries_dict(
4949
per_version_time_series_dict,
5050
per_branch_time_series_dict,
5151
testcase_metric_context_paths,
52+
version_target_table_keyname,
53+
version_target_table_dict,
54+
branch_target_table_keyname,
55+
branch_target_table_dict,
5256
) = common_exporter_logic(
5357
deployment_name,
5458
deployment_type,
@@ -71,6 +75,10 @@ def prepare_timeseries_dict(
7175
return (
7276
time_series_dict,
7377
testcase_metric_context_paths,
78+
version_target_table_keyname,
79+
version_target_table_dict,
80+
branch_target_table_keyname,
81+
branch_target_table_dict,
7482
)
7583

7684

@@ -237,7 +245,14 @@ def timeseries_test_sucess_flow(
237245
):
238246
testcase_metric_context_paths = []
239247
if timeseries_dict is None:
240-
timeseries_dict, testcase_metric_context_paths = prepare_timeseries_dict(
248+
(
249+
timeseries_dict,
250+
testcase_metric_context_paths,
251+
version_target_table_keyname,
252+
version_target_table_dict,
253+
branch_target_table_keyname,
254+
branch_target_table_dict,
255+
) = prepare_timeseries_dict(
241256
artifact_version,
242257
benchmark_config,
243258
default_metrics,
@@ -262,6 +277,21 @@ def timeseries_test_sucess_flow(
262277
)
263278
)
264279
push_data_to_redistimeseries(rts, timeseries_dict)
280+
if (
281+
version_target_table_keyname is not None
282+
and version_target_table_dict is not None
283+
):
284+
rts.redis.hset(
285+
version_target_table_keyname, None, None, version_target_table_dict
286+
)
287+
if (
288+
branch_target_table_keyname is not None
289+
and branch_target_table_dict is not None
290+
):
291+
rts.redis.hset(
292+
branch_target_table_keyname, None, None, branch_target_table_dict
293+
)
294+
265295
update_secondary_result_keys(
266296
artifact_version,
267297
benchmark_duration_seconds,

redisbench_admin/utils/remote.py

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,11 @@ def extract_perversion_timeseries_from_results(
583583
):
584584
break_by_key = "version"
585585
break_by_str = "by.{}".format(break_by_key)
586-
branch_time_series_dict = common_timeseries_extraction(
586+
(
587+
branch_time_series_dict,
588+
target_table_keyname,
589+
target_table_dict,
590+
) = common_timeseries_extraction(
587591
break_by_key,
588592
break_by_str,
589593
datapoints_timestamp,
@@ -601,7 +605,7 @@ def extract_perversion_timeseries_from_results(
601605
running_platform,
602606
testcase_metric_context_paths,
603607
)
604-
return True, branch_time_series_dict
608+
return True, branch_time_series_dict, target_table_keyname, target_table_dict
605609

606610

607611
def common_timeseries_extraction(
@@ -633,7 +637,7 @@ def common_timeseries_extraction(
633637
test_case_targets_dict = cleaned_metric[4]
634638
use_metric_context_path = cleaned_metric[5]
635639

636-
from_metric_kv_to_timeserie(
640+
target_table_keyname, target_table_dict = from_metric_kv_to_timeserie(
637641
break_by_key,
638642
break_by_str,
639643
break_by_value,
@@ -656,7 +660,7 @@ def common_timeseries_extraction(
656660
time_series_dict,
657661
use_metric_context_path,
658662
)
659-
return time_series_dict
663+
return time_series_dict, target_table_keyname, target_table_dict
660664

661665

662666
def from_metric_kv_to_timeserie(
@@ -706,6 +710,16 @@ def from_metric_kv_to_timeserie(
706710
"data": {datapoints_timestamp: metric_value},
707711
}
708712
original_ts_name = ts_name
713+
target_table_keyname = "ci.benchmarks.redislabs/{break_by_key}/{break_by_str}/{tf_github_org}/{tf_github_repo}/{deployment_type}/{deployment_name}/{metric_name}".format(
714+
break_by_key=break_by_key,
715+
break_by_str=break_by_str,
716+
tf_github_org=tf_github_org,
717+
tf_github_repo=tf_github_repo,
718+
deployment_name=deployment_name,
719+
deployment_type=deployment_type,
720+
metric_name=metric_name,
721+
)
722+
target_table_dict = {"test-case": test_name, tf_github_repo: metric_value}
709723
for target_name, target_value in test_case_targets_dict.items():
710724
ts_name = original_ts_name + "/target/{}".format(target_name)
711725
timeserie_tags_target = timeserie_tags.copy()
@@ -717,6 +731,26 @@ def from_metric_kv_to_timeserie(
717731
"labels": timeserie_tags_target,
718732
"data": {datapoints_timestamp: target_value},
719733
}
734+
if "overallQuantiles" in metric_name:
735+
comparison_type = "(lower-better)"
736+
else:
737+
comparison_type = "(higher-better)"
738+
if comparison_type == "(higher-better)":
739+
target_value_pct = (
740+
(float(metric_value) / float(target_value)) - 1.0
741+
) * 100.0
742+
else:
743+
target_value_pct = (
744+
(float(target_value) / float(metric_value)) - 1.0
745+
) * 100.0
746+
747+
target_value_pct_str = "{:.2f}".format(target_value_pct)
748+
749+
target_table_dict[target_name] = target_value
750+
target_table_dict[
751+
"{}:percent {}".format(target_name, comparison_type)
752+
] = target_value_pct_str
753+
return target_table_keyname, target_table_dict
720754

721755

722756
def get_ts_tags_and_name(
@@ -827,7 +861,11 @@ def extract_perbranch_timeseries_from_results(
827861
):
828862
break_by_key = "branch"
829863
break_by_str = "by.{}".format(break_by_key)
830-
branch_time_series_dict = common_timeseries_extraction(
864+
(
865+
branch_time_series_dict,
866+
target_table_keyname,
867+
target_table_dict,
868+
) = common_timeseries_extraction(
831869
break_by_key,
832870
break_by_str,
833871
datapoints_timestamp,
@@ -845,7 +883,7 @@ def extract_perbranch_timeseries_from_results(
845883
running_platform,
846884
testcase_metric_context_paths,
847885
)
848-
return True, branch_time_series_dict
886+
return True, branch_time_series_dict, target_table_keyname, target_table_dict
849887

850888

851889
def get_overall_dashboard_keynames(

tests/test_remote.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def test_extract_perversion_timeseries_from_results():
150150
) as json_file:
151151
results_dict = json.load(json_file)
152152

153-
(timeseries_dict, _,) = prepare_timeseries_dict(
153+
(timeseries_dict, _, _, _, _, _) = prepare_timeseries_dict(
154154
"1.0.0",
155155
benchmark_config,
156156
default_metrics,
@@ -207,6 +207,8 @@ def test_extract_timeseries_from_results():
207207
(
208208
ok,
209209
per_version_time_series_dict,
210+
_,
211+
_,
210212
) = extract_perversion_timeseries_from_results(
211213
datapoints_timestamp,
212214
metrics,
@@ -228,6 +230,8 @@ def test_extract_timeseries_from_results():
228230
(
229231
ok,
230232
per_branch_time_series_dict,
233+
_,
234+
_,
231235
) = extract_perbranch_timeseries_from_results(
232236
datapoints_timestamp,
233237
metrics,
@@ -415,7 +419,7 @@ def test_common_timeseries_extraction():
415419
tf_github_repo = "redis"
416420
tf_triggering_env = "gh"
417421

418-
timeseries_dict = common_timeseries_extraction(
422+
timeseries_dict, _, _ = common_timeseries_extraction(
419423
break_by_key,
420424
break_by_str,
421425
datapoints_timestamp,

0 commit comments

Comments
 (0)