redisbench-admin 0.10.28__py3-none-any.whl → 0.11.0__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.
@@ -722,7 +722,6 @@ def from_rts_to_regression_table(
722
722
  total_comparison_points = 0
723
723
  noise_waterline = 3
724
724
  progress = tqdm(unit="benchmark time-series", total=len(test_names))
725
- at_comparison = 0
726
725
  for test_name in test_names:
727
726
  multi_value_baseline = check_multi_value_filter(baseline_str)
728
727
  multi_value_comparison = check_multi_value_filter(comparison_str)
@@ -489,15 +489,30 @@ def extract_test_feasible_setups(
489
489
  if setup_name == setup["name"]:
490
490
  feasible_setups_map[setup_name] = setup
491
491
  if len(feasible_setups_map.keys()) == 0 and backwards_compatible:
492
- feasible_setups_map["oss-standalone"] = {
493
- "name": "oss-standalone",
494
- "type": "oss-standalone",
492
+ setup_name = "oss-standalone"
493
+ setup_type = "oss-standalone"
494
+ OVERRIDE_SETUP_TYPE = os.getenv("OVERRIDE_SETUP_TYPE", None)
495
+ if OVERRIDE_SETUP_TYPE is not None:
496
+ logging.info(
497
+ f"Overriding SETUP_TYPE with {OVERRIDE_SETUP_TYPE} (original value was {setup_type})"
498
+ )
499
+ setup_type = OVERRIDE_SETUP_TYPE
500
+ OVERRIDE_SETUP_NAME = os.getenv("OVERRIDE_SETUP_NAME", None)
501
+ if OVERRIDE_SETUP_NAME is not None:
502
+ logging.info(
503
+ f"Overriding SETUP_NAME with {OVERRIDE_SETUP_NAME} (original value was {setup_name})"
504
+ )
505
+ setup_name = OVERRIDE_SETUP_NAME
506
+
507
+ feasible_setups_map[setup_name] = {
508
+ "name": setup_name,
509
+ "type": setup_type,
495
510
  "redis_topology": {"primaries": 1, "replicas": 0},
496
511
  "resources": {"requests": {"cpu": "1000m"}, "limits": {"cpu": "2000m"}},
497
512
  }
498
513
  logging.info(
499
514
  "Using a backwards compatible 'oss-standalone' setup, with settings: {}".format(
500
- feasible_setups_map["oss-standalone"]
515
+ feasible_setups_map[setup_name]
501
516
  )
502
517
  )
503
518
 
@@ -30,6 +30,20 @@ def calculate_client_tool_duration_and_check(
30
30
  return benchmark_duration_seconds
31
31
 
32
32
 
33
+ def merge_dicts(dict1, dict2):
34
+ result = dict1.copy() # Start with dict1's keys and values
35
+ for key, value in dict2.items():
36
+ if key in result:
37
+ if isinstance(result[key], dict) and isinstance(value, dict):
38
+ # Recursively merge nested dictionaries
39
+ result[key] = merge_dicts(result[key], value)
40
+ # If it's not a dict, we keep the value from dict1 (result)
41
+ else:
42
+ result[key] = value
43
+ print(f"merging dict1 {dict1} with with dict2 {dict2}. final {result}")
44
+ return result
45
+
46
+
33
47
  def define_benchmark_plan(benchmark_definitions, default_specs):
34
48
  benchmark_runs_plan = {}
35
49
  for test_name, benchmark_config in benchmark_definitions.items():
@@ -80,6 +94,11 @@ def define_benchmark_plan(benchmark_definitions, default_specs):
80
94
  )
81
95
  )
82
96
  else:
97
+ # add benchmark
98
+ if "dbconfig" in setup_settings:
99
+ benchmark_config["dbconfig"] = merge_dicts(
100
+ benchmark_config["dbconfig"], setup_settings["dbconfig"]
101
+ )
83
102
  benchmark_runs_plan[benchmark_type][dataset_name][setup_name][
84
103
  "benchmarks"
85
104
  ][test_name] = benchmark_config
@@ -65,9 +65,7 @@ from redisbench_admin.utils.benchmark_config import (
65
65
  from redisbench_admin.utils.local import (
66
66
  get_local_run_full_filename,
67
67
  )
68
- from redisbench_admin.utils.remote import (
69
- extract_git_vars,
70
- )
68
+
71
69
  from redisbench_admin.utils.results import post_process_benchmark_results
72
70
 
73
71
  import threading
@@ -17,6 +17,8 @@ from redisbench_admin.utils.remote import (
17
17
  fetch_remote_id_from_config,
18
18
  )
19
19
 
20
+ CONFIG_PARAMS_KEY = "module-configuration-parameters"
21
+
20
22
 
21
23
  def parse_exporter_metrics_definition(
22
24
  benchmark_config: dict, configkey: str = "redistimeseries"
@@ -226,6 +228,7 @@ def merge_default_and_specific_properties_dict_type(
226
228
 
227
229
 
228
230
  def extract_redis_dbconfig_parameters(benchmark_config, dbconfig_keyname):
231
+
229
232
  redis_configuration_parameters = {}
230
233
  modules_configuration_parameters_map = {}
231
234
  dataset_load_timeout_secs = 120
@@ -235,10 +238,8 @@ def extract_redis_dbconfig_parameters(benchmark_config, dbconfig_keyname):
235
238
  dbconfig_present = True
236
239
  if type(benchmark_config[dbconfig_keyname]) == list:
237
240
  for k in benchmark_config[dbconfig_keyname]:
238
- if "module-configuration-parameters" in k:
239
- modules_configuration_parameters_map = k[
240
- "module-configuration-parameters"
241
- ]
241
+ if CONFIG_PARAMS_KEY in k:
242
+ modules_configuration_parameters_map = k[CONFIG_PARAMS_KEY]
242
243
  if "configuration-parameters" in k:
243
244
  cp = k["configuration-parameters"]
244
245
  for item in cp:
@@ -249,10 +250,10 @@ def extract_redis_dbconfig_parameters(benchmark_config, dbconfig_keyname):
249
250
  if "dataset_name" in k:
250
251
  dataset_name = k["dataset_name"]
251
252
  if type(benchmark_config[dbconfig_keyname]) == dict:
252
- if "module-configuration-parameters" in benchmark_config[dbconfig_keyname]:
253
+ if CONFIG_PARAMS_KEY in benchmark_config[dbconfig_keyname]:
253
254
  modules_configuration_parameters_map = benchmark_config[
254
255
  dbconfig_keyname
255
- ]["module-configuration-parameters"]
256
+ ][CONFIG_PARAMS_KEY]
256
257
  if "configuration-parameters" in benchmark_config[dbconfig_keyname]:
257
258
  cp = benchmark_config[dbconfig_keyname]["configuration-parameters"]
258
259
  for k, v in cp.items():
@@ -638,6 +638,14 @@ def push_data_to_redistimeseries(rts, time_series_dict: dict, expire_msecs=0):
638
638
 
639
639
  def exporter_create_ts(rts, time_series, timeseries_name):
640
640
  updated_create = False
641
+ final_labels = {}
642
+ for label_name, value in time_series["labels"].items():
643
+ if value is not None:
644
+ final_labels[label_name] = value
645
+ else:
646
+ logging.warning(f"The label {label_name} value was None. skipping it...")
647
+
648
+ time_series["labels"] = final_labels
641
649
  try:
642
650
  if rts.exists(timeseries_name):
643
651
  updated_create = check_rts_labels(rts, time_series, timeseries_name)
@@ -647,11 +655,22 @@ def exporter_create_ts(rts, time_series, timeseries_name):
647
655
  timeseries_name, time_series["labels"]
648
656
  )
649
657
  )
658
+
650
659
  rts.ts().create(
651
660
  timeseries_name, labels=time_series["labels"], chunk_size=128
652
661
  )
653
662
  updated_create = True
654
-
663
+ except redis.exceptions.DataError as e:
664
+ logging.error(
665
+ "While creating timeseries named {} with the following labels: {} this error ocurred: {}".format(
666
+ timeseries_name, time_series["labels"], e.__str__()
667
+ )
668
+ )
669
+ raise Exception(
670
+ "While creating timeseries named {} with the following labels: {} this error ocurred: {}".format(
671
+ timeseries_name, time_series["labels"], e.__str__()
672
+ )
673
+ )
655
674
  except redis.exceptions.ResponseError as e:
656
675
  if "already exists" in e.__str__():
657
676
  updated_create = check_rts_labels(rts, time_series, timeseries_name)
@@ -1,14 +1,11 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redisbench-admin
3
- Version: 0.10.28
3
+ Version: 0.11.0
4
4
  Summary: Redis benchmark run helper. A wrapper around Redis and Redis Modules benchmark tools ( ftsb_redisearch, memtier_benchmark, redis-benchmark, aibench, etc... ).
5
5
  Author: filipecosta90
6
6
  Author-email: filipecosta.90@gmail.com
7
- Requires-Python: >=3.7.0,<4.0.0
7
+ Requires-Python: >=3.10.0,<4.0.0
8
8
  Classifier: Programming Language :: Python :: 3
9
- Classifier: Programming Language :: Python :: 3.7
10
- Classifier: Programming Language :: Python :: 3.8
11
- Classifier: Programming Language :: Python :: 3.9
12
9
  Classifier: Programming Language :: Python :: 3.10
13
10
  Classifier: Programming Language :: Python :: 3.11
14
11
  Requires-Dist: Flask (>=2.0.1,<3.0.0)
@@ -23,7 +20,8 @@ Requires-Dist: flask-restx (>=0.5.1,<0.6.0)
23
20
  Requires-Dist: humanize (>=2.4.0,<3.0.0)
24
21
  Requires-Dist: jsonpath_ng (>=1.5.2,<2.0.0)
25
22
  Requires-Dist: matplotlib (>=3.1.2,<4.0.0)
26
- Requires-Dist: pandas (>=1.0,<2.0)
23
+ Requires-Dist: numpy (>=2.0.0,<3.0.0)
24
+ Requires-Dist: pandas (>=2.1.2,<3.0.0)
27
25
  Requires-Dist: paramiko (>=2.7.2,<3.0.0)
28
26
  Requires-Dist: psutil (>=5.6.6,<6.0.0)
29
27
  Requires-Dist: pyWorkFlow (>=0.0.2,<0.0.3)
@@ -33,7 +31,7 @@ Requires-Dist: pysftp (>=0.2.9,<0.3.0)
33
31
  Requires-Dist: pytablewriter[html] (>=0.64.1,<0.65.0)
34
32
  Requires-Dist: python_terraform (>=0.10.1,<0.11.0)
35
33
  Requires-Dist: redis (>=4.2.2,<5.0.0)
36
- Requires-Dist: requests (>=2.23.0,<3.0.0)
34
+ Requires-Dist: requests (>=2.32.3,<3.0.0)
37
35
  Requires-Dist: slack-bolt (>=1.13.0,<2.0.0)
38
36
  Requires-Dist: slack-sdk (>=3.15.2,<4.0.0)
39
37
  Requires-Dist: sshtunnel (>=0.4.0,<0.5.0)
@@ -4,7 +4,7 @@ redisbench_admin/commands/__init__.py,sha256=mzVrEtqefFdopyzR-W6xx3How95dyZfToGK
4
4
  redisbench_admin/commands/commands.json.py,sha256=mzVrEtqefFdopyzR-W6xx3How95dyZfToGKm1-_YzeY,95
5
5
  redisbench_admin/compare/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
6
6
  redisbench_admin/compare/args.py,sha256=10zbiT8roeTGnAubvoVFZTbJNbVxuRaRPtCKjxV8iNE,5226
7
- redisbench_admin/compare/compare.py,sha256=-m6yor7d1z3Lv-kOf36G0qt0P9EyoiTqM-ZD0oEhLJ0,37747
7
+ redisbench_admin/compare/compare.py,sha256=ANCm4kKCR8IBBoeBRgsPOOYW2s5qJV1QVIIPcY-WNUk,37725
8
8
  redisbench_admin/deploy/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
9
9
  redisbench_admin/deploy/args.py,sha256=neLUcQqI__HkJItkQg2C293hl5g3yHG40t171r7-E5Y,1732
10
10
  redisbench_admin/deploy/deploy.py,sha256=c1srxDMaUHuyh6wGdgLqzTz3ljZFtGqiumtAmguVyuk,3791
@@ -176,7 +176,7 @@ redisbench_admin/run/ann/pkg/test/test-jaccard.py,sha256=oIhaQCQKrQokwv3fvgLSwPl
176
176
  redisbench_admin/run/ann/pkg/test/test-metrics.py,sha256=vJdS8Kuk8bAnpB65Uqb-9rUUI35XrHwaO3cNwKX5gxc,3057
177
177
  redisbench_admin/run/args.py,sha256=Sspv4eusQs9HMVMIyv_hB9vQ3S_s0lHYGAL1gPb2WGM,7864
178
178
  redisbench_admin/run/cluster.py,sha256=QuptSW-IhdyFIoQ3hzY613jtQWxBrVIlgc8OarcEK20,6072
179
- redisbench_admin/run/common.py,sha256=NbgPqEWDEe4S4LSEbM6tnjGunrTqCLYcwV-2mVJlY7Y,26054
179
+ redisbench_admin/run/common.py,sha256=DnGRG4wC04pU2CK4mIWG8VX7JuYFEwAL3TZvPa-Lu8M,26707
180
180
  redisbench_admin/run/ftsb/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
181
181
  redisbench_admin/run/ftsb/ftsb.py,sha256=plP-yxjMvvy-gITlXpuXJcyrPHfDoYYI8JRwTe5kK4M,2388
182
182
  redisbench_admin/run/git.py,sha256=6UYGcTN0MPzf4QDVoJnFkou0yZasLF6jLG7f0zoySq8,3064
@@ -190,7 +190,7 @@ redisbench_admin/run/redis_benchmark/redis_benchmark.py,sha256=e-Az2uTlt3z2W4uzl
190
190
  redisbench_admin/run/redisgraph_benchmark_go/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
191
191
  redisbench_admin/run/redisgraph_benchmark_go/redisgraph_benchmark_go.py,sha256=DijIoWr73e2t7Zy-UmODzC51IjUh6hH5I0LaPRJW4Vk,2241
192
192
  redisbench_admin/run/redistimeseries.py,sha256=x3PA7QoHXu53zs5v0ekK2sVmUnA9_ZF2JxgCDf1Mui4,21331
193
- redisbench_admin/run/run.py,sha256=Yc8WcRS13EuASVBQAMkj_v8-Uks6HXebMsuPEWT0GVk,3462
193
+ redisbench_admin/run/run.py,sha256=QmsabKX1tgoHvAUlhUWEsvfjHJaZGVU-LVW3SKAtk2M,4274
194
194
  redisbench_admin/run/s3.py,sha256=pXQXZ1rrwDCWeBegGR4aKzbKqWWwMrmqvIjFxEB3bh4,442
195
195
  redisbench_admin/run/ssh.py,sha256=gRW6ROoTKlaxLKhS5tM-Ejjd6zk2iO1KN9dzBzw7GOk,2835
196
196
  redisbench_admin/run/tsbs_run_queries_redistimeseries/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
@@ -209,7 +209,7 @@ redisbench_admin/run_local/args.py,sha256=VkIDvdTW-cRl-ncOkcK8-8MdCbq-qyipGQFugh
209
209
  redisbench_admin/run_local/local_client.py,sha256=gwawMDOBrf7m--uyxu8kMZC5LBiLjbUBSKvzVOdOAas,124
210
210
  redisbench_admin/run_local/local_db.py,sha256=Xh7xyZaSyhmRXKyMsbKqO9aLUikf-EXGha3K1h9yL2M,7396
211
211
  redisbench_admin/run_local/local_helpers.py,sha256=JyqLW2-Sbm35BXjxxfOB1yK7ADdLfcVrq08NLNdIwac,7026
212
- redisbench_admin/run_local/run_local.py,sha256=bbMVm-8d-UFidq1DzQw3I1XOeQItGMIsvvVFm3r-q8c,30937
212
+ redisbench_admin/run_local/run_local.py,sha256=tueVqiqApQx2b0Dq6GJ84jr7WYRVKvJ7r2QCzlfY3aw,30870
213
213
  redisbench_admin/run_remote/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
214
214
  redisbench_admin/run_remote/args.py,sha256=vhV87avBwXL8c2QLqrAkIyWD53MYhN06F-3wRv3l5xE,3829
215
215
  redisbench_admin/run_remote/consts.py,sha256=bCMkwyeBD-EmOpoHKni7LjWy5WuaxGJhGhqpi4AL0RQ,386
@@ -224,19 +224,19 @@ redisbench_admin/run_remote/run_remote.py,sha256=3DD5vHz3CIP7Zk9OFRBlzNFjAo_ua-c
224
224
  redisbench_admin/run_remote/standalone.py,sha256=vWmm0CdFtrasy-_1BDKO7I_gVPBjjiypv94_Fq2Sm7o,6660
225
225
  redisbench_admin/run_remote/terraform.py,sha256=zD2gGuOmnTex6Dt2lhdAtNn21iL6sykPPXI10jJaim4,3945
226
226
  redisbench_admin/utils/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
227
- redisbench_admin/utils/benchmark_config.py,sha256=bvhqKFENdDXpSZvF41EDUwMMhJJ4WQf7DS2BHn8hOz0,21291
227
+ redisbench_admin/utils/benchmark_config.py,sha256=WDSCnfDQt753caZ-3pyXbpIaVcEoOi8NAb0FJ5rHH7k,21237
228
228
  redisbench_admin/utils/local.py,sha256=zUvyVI9LZMT3qyxs1pO3mXL6Bt_1z9EZUGppaRcWNRA,3890
229
229
  redisbench_admin/utils/redisearch.py,sha256=lchUEzpt0zB1rHwlDlw9LLifAnxFWcLP-PePw7TjL-0,1602
230
230
  redisbench_admin/utils/redisgraph_benchmark_go.py,sha256=os7EJt6kBxsFJLKkSoANbjMT7-cEq4-Ns-49alk2Tf8,2048
231
- redisbench_admin/utils/remote.py,sha256=sCGQxRdXsAlCBWDBDOGg0wg3buPfmsBpDVE7dibRxqg,38133
231
+ redisbench_admin/utils/remote.py,sha256=fVcFRmJcqVtado_fae_Idq_QQRTtCixMlT-hdH3zsgE,38928
232
232
  redisbench_admin/utils/results.py,sha256=uKk3uNJ--bSXlUj_HGQ2OaV6MVqmXJVM8xTzFV6EOw4,3267
233
233
  redisbench_admin/utils/ssh.py,sha256=QW4AwlocMHJt05QMdN_4f8WeDmxiEwR80ny8VBThq6k,6533
234
234
  redisbench_admin/utils/utils.py,sha256=FLDjhGkW0PWwcu_nlTnIW6aZtHzJGz4LIwvu1CpCajw,14160
235
235
  redisbench_admin/watchdog/__init__.py,sha256=cD7zfXt0VEmy0b7452HvcAxX_9kVj6Vm213yNdUHP20,95
236
236
  redisbench_admin/watchdog/args.py,sha256=nKsG1G6ATOZlAMHMtT9u3kXxduKCbejSZ5x8oB_ynZ8,1312
237
237
  redisbench_admin/watchdog/watchdog.py,sha256=jFGtm5ktjKuXKWvH7lnmf3pp-ch1WBJUOomXILJMDAg,6158
238
- redisbench_admin-0.10.28.dist-info/LICENSE,sha256=AAMtfs82zOOvmG68vILivm6lxi2rcOlGObmA8jzxQvw,10768
239
- redisbench_admin-0.10.28.dist-info/entry_points.txt,sha256=UUawXk_AS-PlieKJ1QxPQXGsRLb6OW_F0MtmA1W0KE8,113
240
- redisbench_admin-0.10.28.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
241
- redisbench_admin-0.10.28.dist-info/METADATA,sha256=A7x_oHH4TOD4DCFSppQ0Jmy6G03hnaUfoCsMaW6ZmX4,5336
242
- redisbench_admin-0.10.28.dist-info/RECORD,,
238
+ redisbench_admin-0.11.0.dist-info/LICENSE,sha256=AAMtfs82zOOvmG68vILivm6lxi2rcOlGObmA8jzxQvw,10768
239
+ redisbench_admin-0.11.0.dist-info/entry_points.txt,sha256=UUawXk_AS-PlieKJ1QxPQXGsRLb6OW_F0MtmA1W0KE8,113
240
+ redisbench_admin-0.11.0.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
241
+ redisbench_admin-0.11.0.dist-info/METADATA,sha256=0wjKQ0FTYoIMTVzJF2mYxOpiRY3GS144AHcSSYSb6f4,5228
242
+ redisbench_admin-0.11.0.dist-info/RECORD,,