redis-benchmarks-specification 0.1.208__py3-none-any.whl → 0.1.210__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of redis-benchmarks-specification might be problematic. Click here for more details.
- redis_benchmarks_specification/__builder__/builder.py +130 -64
- redis_benchmarks_specification/__cli__/args.py +13 -1
- redis_benchmarks_specification/__cli__/cli.py +66 -3
- redis_benchmarks_specification/__common__/env.py +1 -1
- redis_benchmarks_specification/__common__/github.py +7 -11
- redis_benchmarks_specification/__common__/runner.py +15 -3
- redis_benchmarks_specification/__common__/timeseries.py +1551 -0
- redis_benchmarks_specification/__compare__/compare.py +123 -36
- redis_benchmarks_specification/__runner__/runner.py +20 -6
- redis_benchmarks_specification/__self_contained_coordinator__/args.py +0 -5
- redis_benchmarks_specification/__self_contained_coordinator__/build_info.py +5 -3
- redis_benchmarks_specification/__self_contained_coordinator__/docker.py +2 -2
- redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py +4 -1
- redis_benchmarks_specification/__self_contained_coordinator__/runners.py +6 -2
- redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py +153 -52
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-1000B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-100B-expire-use-case.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-expire-use-case.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-1KiB-expire-use-case.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-4KiB-expire-use-case.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-exists-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expire-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expireat-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-touch-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-ttl-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hexists.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrby.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-1KiB-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values.yml +2 -5
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-200KiB-values.yml +2 -5
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-20KiB-values.yml +2 -5
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-2MB-values.yml +2 -5
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-decr.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-200KiB.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-20KiB.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-2MB.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mget-1KiB.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-bybox.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-pfadd-4KB-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smismember.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smembers.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smismember.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-smembers.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-200K-elements-sadd-constant.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-2M-elements-sadd-increasing.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zincrby-1M-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-1M-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrem-5M-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-eval-hset-expire.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-evalsha-hset-expire.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sdiff.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sinter.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sunion.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries.yml +1 -0
- redis_benchmarks_specification/test-suites/template.txt +1 -0
- {redis_benchmarks_specification-0.1.208.dist-info → redis_benchmarks_specification-0.1.210.dist-info}/METADATA +12 -4
- {redis_benchmarks_specification-0.1.208.dist-info → redis_benchmarks_specification-0.1.210.dist-info}/RECORD +120 -119
- {redis_benchmarks_specification-0.1.208.dist-info → redis_benchmarks_specification-0.1.210.dist-info}/LICENSE +0 -0
- {redis_benchmarks_specification-0.1.208.dist-info → redis_benchmarks_specification-0.1.210.dist-info}/WHEEL +0 -0
- {redis_benchmarks_specification-0.1.208.dist-info → redis_benchmarks_specification-0.1.210.dist-info}/entry_points.txt +0 -0
|
@@ -16,6 +16,9 @@ import os
|
|
|
16
16
|
from tqdm import tqdm
|
|
17
17
|
import argparse
|
|
18
18
|
|
|
19
|
+
from io import StringIO
|
|
20
|
+
import sys
|
|
21
|
+
|
|
19
22
|
from redis_benchmarks_specification.__common__.github import (
|
|
20
23
|
update_comment_if_needed,
|
|
21
24
|
create_new_pr_comment,
|
|
@@ -245,7 +248,6 @@ def compare_command_logic(args, project_name, project_version):
|
|
|
245
248
|
testname_regex = args.testname_regex
|
|
246
249
|
auto_approve = args.auto_approve
|
|
247
250
|
running_platform = args.running_platform
|
|
248
|
-
grafana_base_dashboard = args.grafana_base_dashboard
|
|
249
251
|
|
|
250
252
|
if running_platform is not None:
|
|
251
253
|
logging.info(
|
|
@@ -583,7 +585,11 @@ def compute_regression_table(
|
|
|
583
585
|
)
|
|
584
586
|
(
|
|
585
587
|
detected_regressions,
|
|
586
|
-
|
|
588
|
+
table_full,
|
|
589
|
+
table_stable,
|
|
590
|
+
table_unstable,
|
|
591
|
+
table_improvements,
|
|
592
|
+
table_regressions,
|
|
587
593
|
total_improvements,
|
|
588
594
|
total_regressions,
|
|
589
595
|
total_stable,
|
|
@@ -619,13 +625,60 @@ def compute_regression_table(
|
|
|
619
625
|
baseline_str, comparison_str
|
|
620
626
|
)
|
|
621
627
|
)
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
628
|
+
|
|
629
|
+
table_output = "# Comparison between {} and {}.\n\nTime Period from {}. (environment used: {})\n\n".format(
|
|
630
|
+
baseline_str,
|
|
631
|
+
comparison_str,
|
|
632
|
+
from_human_str,
|
|
633
|
+
baseline_deployment_name,
|
|
634
|
+
)
|
|
635
|
+
|
|
636
|
+
if total_regressions > 0:
|
|
637
|
+
old_stdout = sys.stdout
|
|
638
|
+
sys.stdout = mystdout = StringIO()
|
|
639
|
+
table_output += "#### Regressions Table\n\n"
|
|
640
|
+
writer_regressions = MarkdownTableWriter(
|
|
641
|
+
table_name="",
|
|
642
|
+
headers=[
|
|
643
|
+
"Test Case",
|
|
644
|
+
"Baseline {} (median obs. +- std.dev)".format(baseline_str),
|
|
645
|
+
"Comparison {} (median obs. +- std.dev)".format(comparison_str),
|
|
646
|
+
"% change ({})".format(metric_mode),
|
|
647
|
+
"Note",
|
|
648
|
+
],
|
|
649
|
+
value_matrix=table_regressions,
|
|
650
|
+
)
|
|
651
|
+
writer_regressions.dump(mystdout, False)
|
|
652
|
+
table_output += mystdout.getvalue()
|
|
653
|
+
table_output += "\n\n"
|
|
654
|
+
mystdout.close()
|
|
655
|
+
sys.stdout = old_stdout
|
|
656
|
+
|
|
657
|
+
if total_improvements > 0:
|
|
658
|
+
old_stdout = sys.stdout
|
|
659
|
+
sys.stdout = mystdout = StringIO()
|
|
660
|
+
table_output += "#### Improvements Table\n\n"
|
|
661
|
+
writer_regressions = MarkdownTableWriter(
|
|
662
|
+
table_name="",
|
|
663
|
+
headers=[
|
|
664
|
+
"Test Case",
|
|
665
|
+
"Baseline {} (median obs. +- std.dev)".format(baseline_str),
|
|
666
|
+
"Comparison {} (median obs. +- std.dev)".format(comparison_str),
|
|
667
|
+
"% change ({})".format(metric_mode),
|
|
668
|
+
"Note",
|
|
669
|
+
],
|
|
670
|
+
value_matrix=table_improvements,
|
|
671
|
+
)
|
|
672
|
+
writer_regressions.dump(mystdout, False)
|
|
673
|
+
table_output += mystdout.getvalue()
|
|
674
|
+
table_output += "\n\n"
|
|
675
|
+
mystdout.close()
|
|
676
|
+
sys.stdout = old_stdout
|
|
677
|
+
|
|
678
|
+
old_stdout = sys.stdout
|
|
679
|
+
sys.stdout = mystdout = StringIO()
|
|
680
|
+
writer_full = MarkdownTableWriter(
|
|
681
|
+
table_name="",
|
|
629
682
|
headers=[
|
|
630
683
|
"Test Case",
|
|
631
684
|
"Baseline {} (median obs. +- std.dev)".format(baseline_str),
|
|
@@ -633,21 +686,15 @@ def compute_regression_table(
|
|
|
633
686
|
"% change ({})".format(metric_mode),
|
|
634
687
|
"Note",
|
|
635
688
|
],
|
|
636
|
-
value_matrix=
|
|
689
|
+
value_matrix=table_full,
|
|
637
690
|
)
|
|
638
|
-
table_output
|
|
639
|
-
|
|
640
|
-
from io import StringIO
|
|
641
|
-
import sys
|
|
642
|
-
|
|
643
|
-
old_stdout = sys.stdout
|
|
644
|
-
sys.stdout = mystdout = StringIO()
|
|
691
|
+
table_output += "<details>\n <summary>Full Results table:</summary>\n\n"
|
|
645
692
|
|
|
646
|
-
|
|
693
|
+
writer_full.dump(mystdout, False)
|
|
647
694
|
|
|
648
695
|
sys.stdout = old_stdout
|
|
649
|
-
|
|
650
|
-
table_output
|
|
696
|
+
table_output += mystdout.getvalue()
|
|
697
|
+
table_output += "\n</details>\n"
|
|
651
698
|
|
|
652
699
|
return (
|
|
653
700
|
detected_regressions,
|
|
@@ -742,7 +789,11 @@ def from_rts_to_regression_table(
|
|
|
742
789
|
running_platform=None,
|
|
743
790
|
):
|
|
744
791
|
print_all = print_regressions_only is False and print_improvements_only is False
|
|
745
|
-
|
|
792
|
+
table_full = []
|
|
793
|
+
table_unstable = []
|
|
794
|
+
table_stable = []
|
|
795
|
+
table_regressions = []
|
|
796
|
+
table_improvements = []
|
|
746
797
|
detected_regressions = []
|
|
747
798
|
total_improvements = 0
|
|
748
799
|
total_stable = 0
|
|
@@ -752,6 +803,10 @@ def from_rts_to_regression_table(
|
|
|
752
803
|
noise_waterline = 3
|
|
753
804
|
progress = tqdm(unit="benchmark time-series", total=len(test_names))
|
|
754
805
|
for test_name in test_names:
|
|
806
|
+
compare_version = "v0.1.208"
|
|
807
|
+
github_link = "https://github.com/redis/redis-benchmarks-specification/blob"
|
|
808
|
+
test_path = f"redis_benchmarks_specification/test-suites/{test_name}.yml"
|
|
809
|
+
test_link = f"[{test_name}]({github_link}/{compare_version}/{test_path})"
|
|
755
810
|
multi_value_baseline = check_multi_value_filter(baseline_str)
|
|
756
811
|
multi_value_comparison = check_multi_value_filter(comparison_str)
|
|
757
812
|
|
|
@@ -940,6 +995,25 @@ def from_rts_to_regression_table(
|
|
|
940
995
|
total_unstable += 1
|
|
941
996
|
|
|
942
997
|
should_add_line = False
|
|
998
|
+
line = get_line(
|
|
999
|
+
baseline_v_str,
|
|
1000
|
+
comparison_v_str,
|
|
1001
|
+
note,
|
|
1002
|
+
percentage_change,
|
|
1003
|
+
test_link,
|
|
1004
|
+
)
|
|
1005
|
+
if detected_regression:
|
|
1006
|
+
table_regressions.append(line)
|
|
1007
|
+
|
|
1008
|
+
if detected_improvement:
|
|
1009
|
+
table_improvements.append(line)
|
|
1010
|
+
|
|
1011
|
+
if unstable:
|
|
1012
|
+
table_unstable.append(line)
|
|
1013
|
+
else:
|
|
1014
|
+
if not detected_regression and not detected_improvement:
|
|
1015
|
+
table_stable.append(line)
|
|
1016
|
+
|
|
943
1017
|
if print_regressions_only and detected_regression:
|
|
944
1018
|
should_add_line = True
|
|
945
1019
|
if print_improvements_only and detected_improvement:
|
|
@@ -951,17 +1025,14 @@ def from_rts_to_regression_table(
|
|
|
951
1025
|
|
|
952
1026
|
if should_add_line:
|
|
953
1027
|
total_comparison_points = total_comparison_points + 1
|
|
954
|
-
|
|
955
|
-
baseline_v_str,
|
|
956
|
-
comparison_v_str,
|
|
957
|
-
note,
|
|
958
|
-
percentage_change,
|
|
959
|
-
table,
|
|
960
|
-
test_name,
|
|
961
|
-
)
|
|
1028
|
+
table_full.append(line)
|
|
962
1029
|
return (
|
|
963
1030
|
detected_regressions,
|
|
964
|
-
|
|
1031
|
+
table_full,
|
|
1032
|
+
table_stable,
|
|
1033
|
+
table_unstable,
|
|
1034
|
+
table_improvements,
|
|
1035
|
+
table_regressions,
|
|
965
1036
|
total_improvements,
|
|
966
1037
|
total_regressions,
|
|
967
1038
|
total_stable,
|
|
@@ -1037,6 +1108,23 @@ def get_test_names_from_db(rts, tags_regex_string, test_names, used_key):
|
|
|
1037
1108
|
return test_names
|
|
1038
1109
|
|
|
1039
1110
|
|
|
1111
|
+
def get_line(
|
|
1112
|
+
baseline_v_str,
|
|
1113
|
+
comparison_v_str,
|
|
1114
|
+
note,
|
|
1115
|
+
percentage_change,
|
|
1116
|
+
test_name,
|
|
1117
|
+
):
|
|
1118
|
+
percentage_change_str = "{:.1f}% ".format(percentage_change)
|
|
1119
|
+
return [
|
|
1120
|
+
test_name,
|
|
1121
|
+
baseline_v_str,
|
|
1122
|
+
comparison_v_str,
|
|
1123
|
+
percentage_change_str,
|
|
1124
|
+
note.strip(),
|
|
1125
|
+
]
|
|
1126
|
+
|
|
1127
|
+
|
|
1040
1128
|
def add_line(
|
|
1041
1129
|
baseline_v_str,
|
|
1042
1130
|
comparison_v_str,
|
|
@@ -1045,15 +1133,14 @@ def add_line(
|
|
|
1045
1133
|
table,
|
|
1046
1134
|
test_name,
|
|
1047
1135
|
):
|
|
1048
|
-
percentage_change_str = "{:.1f}% ".format(percentage_change)
|
|
1049
1136
|
table.append(
|
|
1050
|
-
|
|
1051
|
-
test_name,
|
|
1137
|
+
get_line(
|
|
1052
1138
|
baseline_v_str,
|
|
1053
1139
|
comparison_v_str,
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1140
|
+
note,
|
|
1141
|
+
percentage_change,
|
|
1142
|
+
test_name,
|
|
1143
|
+
)
|
|
1057
1144
|
)
|
|
1058
1145
|
|
|
1059
1146
|
|
|
@@ -211,7 +211,7 @@ def prepare_memtier_benchmark_parameters(
|
|
|
211
211
|
server,
|
|
212
212
|
password,
|
|
213
213
|
local_benchmark_output_filename,
|
|
214
|
-
oss_cluster_api_enabled,
|
|
214
|
+
oss_cluster_api_enabled=False,
|
|
215
215
|
tls_enabled=False,
|
|
216
216
|
tls_skip_verify=False,
|
|
217
217
|
tls_cert=None,
|
|
@@ -382,6 +382,7 @@ def process_self_contained_coordinator_stream(
|
|
|
382
382
|
defaults_filename = args.defaults_filename
|
|
383
383
|
override_test_runs = args.override_test_runs
|
|
384
384
|
(
|
|
385
|
+
_,
|
|
385
386
|
_,
|
|
386
387
|
default_metrics,
|
|
387
388
|
_,
|
|
@@ -396,7 +397,7 @@ def process_self_contained_coordinator_stream(
|
|
|
396
397
|
|
|
397
398
|
with open(test_file, "r") as stream:
|
|
398
399
|
_, benchmark_config, test_name = get_final_benchmark_config(
|
|
399
|
-
None, stream, ""
|
|
400
|
+
None, None, stream, ""
|
|
400
401
|
)
|
|
401
402
|
|
|
402
403
|
if tls_enabled:
|
|
@@ -410,6 +411,7 @@ def process_self_contained_coordinator_stream(
|
|
|
410
411
|
for topology_spec_name in benchmark_config["redis-topologies"]:
|
|
411
412
|
test_result = False
|
|
412
413
|
benchmark_tool_global = ""
|
|
414
|
+
full_result_path = None
|
|
413
415
|
try:
|
|
414
416
|
current_cpu_pos = args.cpuset_start_pos
|
|
415
417
|
temporary_dir_client = tempfile.mkdtemp(dir=home)
|
|
@@ -756,7 +758,10 @@ def process_self_contained_coordinator_stream(
|
|
|
756
758
|
profiler_frequency = 99
|
|
757
759
|
|
|
758
760
|
# start the profile
|
|
759
|
-
(
|
|
761
|
+
(
|
|
762
|
+
profiler_name,
|
|
763
|
+
profilers_map,
|
|
764
|
+
) = profilers_start_if_required(
|
|
760
765
|
profilers_enabled,
|
|
761
766
|
profilers_list,
|
|
762
767
|
redis_pids,
|
|
@@ -821,7 +826,10 @@ def process_self_contained_coordinator_stream(
|
|
|
821
826
|
benchmark_end_time, benchmark_start_time
|
|
822
827
|
)
|
|
823
828
|
)
|
|
824
|
-
(
|
|
829
|
+
(
|
|
830
|
+
_,
|
|
831
|
+
overall_tabular_data_map,
|
|
832
|
+
) = profilers_stop_if_required(
|
|
825
833
|
datasink_push_results_redistimeseries,
|
|
826
834
|
benchmark_duration_seconds,
|
|
827
835
|
collection_summary_str,
|
|
@@ -1067,7 +1075,10 @@ def print_results_table_stdout(
|
|
|
1067
1075
|
cpu_usage=None,
|
|
1068
1076
|
):
|
|
1069
1077
|
# check which metrics to extract
|
|
1070
|
-
(
|
|
1078
|
+
(
|
|
1079
|
+
_,
|
|
1080
|
+
metrics,
|
|
1081
|
+
) = merge_default_and_config_metrics(
|
|
1071
1082
|
benchmark_config,
|
|
1072
1083
|
default_metrics,
|
|
1073
1084
|
None,
|
|
@@ -1092,7 +1103,10 @@ def prepare_overall_total_test_results(
|
|
|
1092
1103
|
benchmark_config, default_metrics, results_dict, test_name, overall_results_matrix
|
|
1093
1104
|
):
|
|
1094
1105
|
# check which metrics to extract
|
|
1095
|
-
(
|
|
1106
|
+
(
|
|
1107
|
+
_,
|
|
1108
|
+
metrics,
|
|
1109
|
+
) = merge_default_and_config_metrics(
|
|
1096
1110
|
benchmark_config,
|
|
1097
1111
|
default_metrics,
|
|
1098
1112
|
None,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import argparse
|
|
2
|
-
import datetime
|
|
3
2
|
import os
|
|
4
3
|
from redis_benchmarks_specification.__common__.env import (
|
|
5
4
|
MACHINE_CPU_COUNT,
|
|
@@ -20,10 +19,6 @@ from redis_benchmarks_specification.__common__.env import (
|
|
|
20
19
|
PROFILERS_DEFAULT,
|
|
21
20
|
ALLOWED_PROFILERS,
|
|
22
21
|
)
|
|
23
|
-
from redis_benchmarks_specification.__compare__.args import (
|
|
24
|
-
START_TIME_NOW_UTC,
|
|
25
|
-
START_TIME_LAST_SIX_MONTHS_UTC,
|
|
26
|
-
)
|
|
27
22
|
|
|
28
23
|
PERFORMANCE_GH_TOKEN = os.getenv("PERFORMANCE_GH_TOKEN", None)
|
|
29
24
|
|
|
@@ -10,11 +10,13 @@ def extract_build_info_from_streamdata(testDetails):
|
|
|
10
10
|
arch = "amd64"
|
|
11
11
|
use_git_timestamp = False
|
|
12
12
|
git_timestamp_ms = None
|
|
13
|
-
metadata =
|
|
13
|
+
metadata = {}
|
|
14
14
|
build_variant_name = None
|
|
15
15
|
fields = [fieldname.decode() for fieldname in testDetails.keys()]
|
|
16
|
-
logging.info("Fields on stream {}".format(
|
|
17
|
-
git_hash =
|
|
16
|
+
logging.info("Fields on stream {}".format(testDetails))
|
|
17
|
+
git_hash = None
|
|
18
|
+
if b"git_hash" in testDetails:
|
|
19
|
+
git_hash = testDetails[b"git_hash"].decode()
|
|
18
20
|
if b"use_git_timestamp" in testDetails:
|
|
19
21
|
use_git_timestamp = bool(testDetails[b"use_git_timestamp"].decode())
|
|
20
22
|
if b"git_timestamp_ms" in testDetails:
|
|
@@ -18,9 +18,9 @@ def generate_standalone_redis_server_args(
|
|
|
18
18
|
"no",
|
|
19
19
|
"--port",
|
|
20
20
|
"{}".format(port),
|
|
21
|
-
"--dir",
|
|
22
|
-
dbdir,
|
|
23
21
|
]
|
|
22
|
+
if dbdir != "":
|
|
23
|
+
command.extend(["--dbdir", dbdir])
|
|
24
24
|
if configuration_parameters is not None:
|
|
25
25
|
for parameter, parameter_value in configuration_parameters.items():
|
|
26
26
|
if parameter not in added_params:
|
|
@@ -43,7 +43,10 @@ def data_prepopulation_step(
|
|
|
43
43
|
full_benchmark_path = "/usr/local/bin/{}".format(preload_tool)
|
|
44
44
|
client_mnt_point = "/mnt/client/"
|
|
45
45
|
if "memtier_benchmark" in preload_tool:
|
|
46
|
-
(
|
|
46
|
+
(
|
|
47
|
+
_,
|
|
48
|
+
preload_command_str,
|
|
49
|
+
) = prepare_memtier_benchmark_parameters(
|
|
47
50
|
benchmark_config["dbconfig"]["preload_tool"],
|
|
48
51
|
full_benchmark_path,
|
|
49
52
|
port,
|
|
@@ -120,6 +120,7 @@ def process_self_contained_coordinator_stream(
|
|
|
120
120
|
stream_id = "n/a"
|
|
121
121
|
overall_result = False
|
|
122
122
|
total_test_suite_runs = 0
|
|
123
|
+
full_result_path = None
|
|
123
124
|
try:
|
|
124
125
|
stream_id, testDetails = newTestInfo[0][1][0]
|
|
125
126
|
stream_id = stream_id.decode()
|
|
@@ -163,7 +164,7 @@ def process_self_contained_coordinator_stream(
|
|
|
163
164
|
|
|
164
165
|
with open(test_file, "r") as stream:
|
|
165
166
|
result, benchmark_config, test_name = get_final_benchmark_config(
|
|
166
|
-
None, stream, ""
|
|
167
|
+
None, None, stream, ""
|
|
167
168
|
)
|
|
168
169
|
if result is False:
|
|
169
170
|
logging.error(
|
|
@@ -456,7 +457,10 @@ def process_self_contained_coordinator_stream(
|
|
|
456
457
|
)
|
|
457
458
|
r.shutdown(save=False)
|
|
458
459
|
|
|
459
|
-
(
|
|
460
|
+
(
|
|
461
|
+
_,
|
|
462
|
+
overall_tabular_data_map,
|
|
463
|
+
) = profilers_stop_if_required(
|
|
460
464
|
datasink_push_results_redistimeseries,
|
|
461
465
|
benchmark_duration_seconds,
|
|
462
466
|
collection_summary_str,
|