redisbench-admin 0.11.0__py3-none-any.whl → 0.11.1__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.
Files changed (144) hide show
  1. redisbench_admin/deploy/deploy.py +9 -1
  2. redisbench_admin/export/export.py +7 -1
  3. redisbench_admin/profilers/perf.py +24 -24
  4. redisbench_admin/run/common.py +57 -7
  5. redisbench_admin/run/run.py +33 -8
  6. redisbench_admin/run_async/async_terraform.py +10 -2
  7. redisbench_admin/run_async/render_files.py +3 -3
  8. redisbench_admin/run_local/run_local.py +12 -12
  9. redisbench_admin/run_remote/run_remote.py +12 -12
  10. redisbench_admin/run_remote/terraform.py +5 -1
  11. redisbench_admin/utils/benchmark_config.py +6 -4
  12. redisbench_admin/utils/remote.py +7 -4
  13. {redisbench_admin-0.11.0.dist-info → redisbench_admin-0.11.1.dist-info}/METADATA +10 -3
  14. redisbench_admin-0.11.1.dist-info/RECORD +116 -0
  15. {redisbench_admin-0.11.0.dist-info → redisbench_admin-0.11.1.dist-info}/WHEEL +1 -1
  16. redisbench_admin/run/ann/pkg/.dockerignore +0 -2
  17. redisbench_admin/run/ann/pkg/.git +0 -1
  18. redisbench_admin/run/ann/pkg/.github/workflows/benchmarks.yml +0 -100
  19. redisbench_admin/run/ann/pkg/.gitignore +0 -21
  20. redisbench_admin/run/ann/pkg/LICENSE +0 -21
  21. redisbench_admin/run/ann/pkg/README.md +0 -157
  22. redisbench_admin/run/ann/pkg/algos.yaml +0 -1294
  23. redisbench_admin/run/ann/pkg/algosP.yaml +0 -67
  24. redisbench_admin/run/ann/pkg/ann_benchmarks/__init__.py +0 -2
  25. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/__init__.py +0 -0
  26. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/annoy.py +0 -26
  27. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/balltree.py +0 -22
  28. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/base.py +0 -36
  29. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/bruteforce.py +0 -110
  30. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/ckdtree.py +0 -17
  31. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/datasketch.py +0 -29
  32. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/definitions.py +0 -187
  33. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/diskann.py +0 -190
  34. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/dolphinnpy.py +0 -31
  35. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/dummy_algo.py +0 -25
  36. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/elasticsearch.py +0 -107
  37. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/elastiknn.py +0 -124
  38. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss.py +0 -124
  39. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss_gpu.py +0 -61
  40. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/faiss_hnsw.py +0 -39
  41. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/flann.py +0 -27
  42. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/hnswlib.py +0 -36
  43. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/kdtree.py +0 -22
  44. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/kgraph.py +0 -39
  45. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/lshf.py +0 -25
  46. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/milvus.py +0 -99
  47. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/mrpt.py +0 -41
  48. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/n2.py +0 -28
  49. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/nearpy.py +0 -48
  50. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/nmslib.py +0 -74
  51. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/onng_ngt.py +0 -100
  52. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/opensearchknn.py +0 -107
  53. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/panng_ngt.py +0 -79
  54. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/pinecone.py +0 -39
  55. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/puffinn.py +0 -45
  56. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/pynndescent.py +0 -115
  57. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/qg_ngt.py +0 -102
  58. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/redisearch.py +0 -90
  59. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/rpforest.py +0 -20
  60. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/scann.py +0 -34
  61. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/sptag.py +0 -28
  62. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/subprocess.py +0 -246
  63. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vald.py +0 -149
  64. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vecsim-hnsw.py +0 -43
  65. redisbench_admin/run/ann/pkg/ann_benchmarks/algorithms/vespa.py +0 -47
  66. redisbench_admin/run/ann/pkg/ann_benchmarks/constants.py +0 -1
  67. redisbench_admin/run/ann/pkg/ann_benchmarks/data.py +0 -48
  68. redisbench_admin/run/ann/pkg/ann_benchmarks/datasets.py +0 -620
  69. redisbench_admin/run/ann/pkg/ann_benchmarks/distance.py +0 -53
  70. redisbench_admin/run/ann/pkg/ann_benchmarks/main.py +0 -325
  71. redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/__init__.py +0 -2
  72. redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/metrics.py +0 -183
  73. redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/plot_variants.py +0 -17
  74. redisbench_admin/run/ann/pkg/ann_benchmarks/plotting/utils.py +0 -165
  75. redisbench_admin/run/ann/pkg/ann_benchmarks/results.py +0 -71
  76. redisbench_admin/run/ann/pkg/ann_benchmarks/runner.py +0 -333
  77. redisbench_admin/run/ann/pkg/create_dataset.py +0 -12
  78. redisbench_admin/run/ann/pkg/create_hybrid_dataset.py +0 -147
  79. redisbench_admin/run/ann/pkg/create_text_to_image_ds.py +0 -117
  80. redisbench_admin/run/ann/pkg/create_website.py +0 -272
  81. redisbench_admin/run/ann/pkg/install/Dockerfile +0 -11
  82. redisbench_admin/run/ann/pkg/install/Dockerfile.annoy +0 -5
  83. redisbench_admin/run/ann/pkg/install/Dockerfile.datasketch +0 -4
  84. redisbench_admin/run/ann/pkg/install/Dockerfile.diskann +0 -29
  85. redisbench_admin/run/ann/pkg/install/Dockerfile.diskann_pq +0 -31
  86. redisbench_admin/run/ann/pkg/install/Dockerfile.dolphinn +0 -5
  87. redisbench_admin/run/ann/pkg/install/Dockerfile.elasticsearch +0 -45
  88. redisbench_admin/run/ann/pkg/install/Dockerfile.elastiknn +0 -61
  89. redisbench_admin/run/ann/pkg/install/Dockerfile.faiss +0 -18
  90. redisbench_admin/run/ann/pkg/install/Dockerfile.flann +0 -10
  91. redisbench_admin/run/ann/pkg/install/Dockerfile.hnswlib +0 -10
  92. redisbench_admin/run/ann/pkg/install/Dockerfile.kgraph +0 -6
  93. redisbench_admin/run/ann/pkg/install/Dockerfile.mih +0 -4
  94. redisbench_admin/run/ann/pkg/install/Dockerfile.milvus +0 -27
  95. redisbench_admin/run/ann/pkg/install/Dockerfile.mrpt +0 -4
  96. redisbench_admin/run/ann/pkg/install/Dockerfile.n2 +0 -5
  97. redisbench_admin/run/ann/pkg/install/Dockerfile.nearpy +0 -5
  98. redisbench_admin/run/ann/pkg/install/Dockerfile.ngt +0 -13
  99. redisbench_admin/run/ann/pkg/install/Dockerfile.nmslib +0 -10
  100. redisbench_admin/run/ann/pkg/install/Dockerfile.opensearchknn +0 -43
  101. redisbench_admin/run/ann/pkg/install/Dockerfile.puffinn +0 -6
  102. redisbench_admin/run/ann/pkg/install/Dockerfile.pynndescent +0 -4
  103. redisbench_admin/run/ann/pkg/install/Dockerfile.redisearch +0 -18
  104. redisbench_admin/run/ann/pkg/install/Dockerfile.rpforest +0 -5
  105. redisbench_admin/run/ann/pkg/install/Dockerfile.scann +0 -5
  106. redisbench_admin/run/ann/pkg/install/Dockerfile.scipy +0 -4
  107. redisbench_admin/run/ann/pkg/install/Dockerfile.sklearn +0 -4
  108. redisbench_admin/run/ann/pkg/install/Dockerfile.sptag +0 -30
  109. redisbench_admin/run/ann/pkg/install/Dockerfile.vald +0 -8
  110. redisbench_admin/run/ann/pkg/install/Dockerfile.vespa +0 -17
  111. redisbench_admin/run/ann/pkg/install.py +0 -70
  112. redisbench_admin/run/ann/pkg/logging.conf +0 -34
  113. redisbench_admin/run/ann/pkg/multirun.py +0 -298
  114. redisbench_admin/run/ann/pkg/plot.py +0 -159
  115. redisbench_admin/run/ann/pkg/protocol/bf-runner +0 -10
  116. redisbench_admin/run/ann/pkg/protocol/bf-runner.py +0 -204
  117. redisbench_admin/run/ann/pkg/protocol/ext-add-query-metric.md +0 -51
  118. redisbench_admin/run/ann/pkg/protocol/ext-batch-queries.md +0 -77
  119. redisbench_admin/run/ann/pkg/protocol/ext-prepared-queries.md +0 -77
  120. redisbench_admin/run/ann/pkg/protocol/ext-query-parameters.md +0 -47
  121. redisbench_admin/run/ann/pkg/protocol/specification.md +0 -194
  122. redisbench_admin/run/ann/pkg/requirements.txt +0 -14
  123. redisbench_admin/run/ann/pkg/requirements_py38.txt +0 -11
  124. redisbench_admin/run/ann/pkg/results/fashion-mnist-784-euclidean.png +0 -0
  125. redisbench_admin/run/ann/pkg/results/gist-960-euclidean.png +0 -0
  126. redisbench_admin/run/ann/pkg/results/glove-100-angular.png +0 -0
  127. redisbench_admin/run/ann/pkg/results/glove-25-angular.png +0 -0
  128. redisbench_admin/run/ann/pkg/results/lastfm-64-dot.png +0 -0
  129. redisbench_admin/run/ann/pkg/results/mnist-784-euclidean.png +0 -0
  130. redisbench_admin/run/ann/pkg/results/nytimes-256-angular.png +0 -0
  131. redisbench_admin/run/ann/pkg/results/sift-128-euclidean.png +0 -0
  132. redisbench_admin/run/ann/pkg/run.py +0 -12
  133. redisbench_admin/run/ann/pkg/run_algorithm.py +0 -3
  134. redisbench_admin/run/ann/pkg/templates/chartjs.template +0 -102
  135. redisbench_admin/run/ann/pkg/templates/detail_page.html +0 -23
  136. redisbench_admin/run/ann/pkg/templates/general.html +0 -58
  137. redisbench_admin/run/ann/pkg/templates/latex.template +0 -30
  138. redisbench_admin/run/ann/pkg/templates/summary.html +0 -60
  139. redisbench_admin/run/ann/pkg/test/__init__.py +0 -0
  140. redisbench_admin/run/ann/pkg/test/test-jaccard.py +0 -19
  141. redisbench_admin/run/ann/pkg/test/test-metrics.py +0 -99
  142. redisbench_admin-0.11.0.dist-info/RECORD +0 -242
  143. {redisbench_admin-0.11.0.dist-info → redisbench_admin-0.11.1.dist-info}/LICENSE +0 -0
  144. {redisbench_admin-0.11.0.dist-info → redisbench_admin-0.11.1.dist-info}/entry_points.txt +0 -0
@@ -73,7 +73,15 @@ def deploy_command_logic(args, project_name, project_version):
73
73
  tf_triggering_env = "redisbench-admin-deploy"
74
74
  logging.info("Setting an infra timeout of {} secs".format(infra_timeout_secs))
75
75
  if args.destroy is False:
76
- (tf_return_code, _, _, _, _, _, _,) = setup_remote_environment(
76
+ (
77
+ tf_return_code,
78
+ _,
79
+ _,
80
+ _,
81
+ _,
82
+ _,
83
+ _,
84
+ ) = setup_remote_environment(
77
85
  tf,
78
86
  tf_github_sha,
79
87
  tf_github_actor,
@@ -42,7 +42,13 @@ def export_command_logic(args, project_name, project_version):
42
42
  deployment_name = args.deployment_name
43
43
  deployment_type = args.deployment_type
44
44
  results_format = args.results_format
45
- (_, github_branch, github_org, github_repo, _,) = git_vars_crosscheck(
45
+ (
46
+ _,
47
+ github_branch,
48
+ github_org,
49
+ github_repo,
50
+ _,
51
+ ) = git_vars_crosscheck(
46
52
  None, args.github_branch, args.github_org, args.github_repo, None
47
53
  )
48
54
  exporter_timemetric_path = None
@@ -400,9 +400,9 @@ class Perf:
400
400
  "Main THREAD Flame Graph: " + use_case, details
401
401
  )
402
402
  if artifact_result is True:
403
- outputs[
404
- "Main THREAD Flame Graph {}".format(identifier)
405
- ] = flame_graph_output
403
+ outputs["Main THREAD Flame Graph {}".format(identifier)] = (
404
+ flame_graph_output
405
+ )
406
406
  result &= artifact_result
407
407
 
408
408
  tid = self.pid
@@ -440,9 +440,9 @@ class Perf:
440
440
  )
441
441
 
442
442
  if artifact_result is True:
443
- outputs[
444
- "perf report per dso,sym {}".format(identifier)
445
- ] = perf_report_artifact
443
+ outputs["perf report per dso,sym {}".format(identifier)] = (
444
+ perf_report_artifact
445
+ )
446
446
  result &= artifact_result
447
447
 
448
448
  # generate perf report per dso,sym
@@ -460,9 +460,9 @@ class Perf:
460
460
  )
461
461
 
462
462
  if artifact_result is True:
463
- outputs[
464
- "perf report per dso,sym with callgraph {}".format(identifier)
465
- ] = perf_report_artifact
463
+ outputs["perf report per dso,sym with callgraph {}".format(identifier)] = (
464
+ perf_report_artifact
465
+ )
466
466
  result &= artifact_result
467
467
 
468
468
  # generate perf report per dso,sym,srcline
@@ -487,9 +487,9 @@ class Perf:
487
487
  )
488
488
 
489
489
  if artifact_result is True:
490
- outputs[
491
- "perf report per dso,sym,srcline {}".format(identifier)
492
- ] = perf_report_artifact
490
+ outputs["perf report per dso,sym,srcline {}".format(identifier)] = (
491
+ perf_report_artifact
492
+ )
493
493
  result &= artifact_result
494
494
 
495
495
  self.logger.info(
@@ -527,9 +527,9 @@ class Perf:
527
527
  )
528
528
 
529
529
  if artifact_result is True:
530
- outputs[
531
- "perf report top self-cpu {}".format(identifier)
532
- ] = perf_report_artifact
530
+ outputs["perf report top self-cpu {}".format(identifier)] = (
531
+ perf_report_artifact
532
+ )
533
533
  result &= artifact_result
534
534
 
535
535
  # generate perf report --stdio report
@@ -546,9 +546,9 @@ class Perf:
546
546
  )
547
547
 
548
548
  if artifact_result is True:
549
- outputs[
550
- "perf report top self-cpu (dso={})".format(binary)
551
- ] = perf_report_artifact
549
+ outputs["perf report top self-cpu (dso={})".format(binary)] = (
550
+ perf_report_artifact
551
+ )
552
552
  result &= artifact_result
553
553
 
554
554
  if self.callgraph_mode == "dwarf":
@@ -590,9 +590,9 @@ class Perf:
590
590
  )
591
591
  result &= artifact_result
592
592
  if artifact_result is True:
593
- outputs[
594
- "Top entries in text form by LOC"
595
- ] = pprof_artifact_text_output
593
+ outputs["Top entries in text form by LOC"] = (
594
+ pprof_artifact_text_output
595
+ )
596
596
  tabular_data_map["text-lines"] = tabular_data
597
597
  self.logger.info("Generating pprof png output")
598
598
  pprof_png_output = self.output + ".pprof.png"
@@ -604,9 +604,9 @@ class Perf:
604
604
  self.output,
605
605
  )
606
606
  if artifact_result is True:
607
- outputs[
608
- "Output graph image in PNG format"
609
- ] = pprof_artifact_png_output
607
+ outputs["Output graph image in PNG format"] = (
608
+ pprof_artifact_png_output
609
+ )
610
610
  result &= artifact_result
611
611
 
612
612
  # save stack collapsed
@@ -206,7 +206,10 @@ def prepare_benchmark_parameters_specif_tooling(
206
206
  if isremote is True:
207
207
  benchmark_tool = "/tmp/{}".format(benchmark_tool)
208
208
  input_data_file = "/tmp/input.data"
209
- (command_arr, command_str,) = prepare_tsbs_benchmark_command(
209
+ (
210
+ command_arr,
211
+ command_str,
212
+ ) = prepare_tsbs_benchmark_command(
210
213
  benchmark_tool,
211
214
  server_private_ip,
212
215
  server_plaintext_port,
@@ -218,7 +221,10 @@ def prepare_benchmark_parameters_specif_tooling(
218
221
  cluster_api_enabled,
219
222
  )
220
223
  if "memtier_benchmark" in benchmark_tool:
221
- (command_arr, command_str,) = prepare_memtier_benchmark_command(
224
+ (
225
+ command_arr,
226
+ command_str,
227
+ ) = prepare_memtier_benchmark_command(
222
228
  benchmark_tool,
223
229
  server_private_ip,
224
230
  server_plaintext_port,
@@ -236,7 +242,10 @@ def prepare_benchmark_parameters_specif_tooling(
236
242
  ann_path = stdout[0].strip() + "/run/ann/pkg/multirun.py"
237
243
  logging.info("Remote ann-benchmark path: {}".format(ann_path))
238
244
 
239
- (command_arr, command_str,) = prepare_ann_benchmark_command(
245
+ (
246
+ command_arr,
247
+ command_str,
248
+ ) = prepare_ann_benchmark_command(
240
249
  server_private_ip,
241
250
  server_plaintext_port,
242
251
  cluster_api_enabled,
@@ -250,7 +259,10 @@ def prepare_benchmark_parameters_specif_tooling(
250
259
  if isremote is True:
251
260
  benchmark_tool = "/tmp/{}".format(benchmark_tool)
252
261
  input_data_file = "/tmp/input.data"
253
- (command_arr, command_str,) = prepare_ftsb_benchmark_command(
262
+ (
263
+ command_arr,
264
+ command_str,
265
+ ) = prepare_ftsb_benchmark_command(
254
266
  benchmark_tool,
255
267
  server_private_ip,
256
268
  server_plaintext_port,
@@ -267,7 +279,10 @@ def prepare_benchmark_parameters_specif_tooling(
267
279
  if isremote is True:
268
280
  benchmark_tool = "/tmp/{}".format(benchmark_tool)
269
281
  input_data_file = "/tmp/input.data"
270
- (command_arr, command_str,) = prepare_aibench_benchmark_command(
282
+ (
283
+ command_arr,
284
+ command_str,
285
+ ) = prepare_aibench_benchmark_command(
271
286
  benchmark_tool,
272
287
  server_private_ip,
273
288
  server_plaintext_port,
@@ -484,6 +499,36 @@ def extract_test_feasible_setups(
484
499
  for setup_name in feasible_setups_list:
485
500
  if default_specs is not None:
486
501
  feasible_setups_map[setup_name] = {}
502
+ # spec:
503
+ # setups:
504
+ # - name: oss-standalone
505
+ # type: oss-standalone
506
+ # redis_topology:
507
+ # primaries: 1
508
+ # replicas: 1
509
+ # placement: "sparse"
510
+ # resources:
511
+ # requests:
512
+ # cpus: "2"
513
+ # memory: "10g"
514
+ # - name: oss-standalone-threads-6
515
+ # type: oss-standalone
516
+ # redis_topology:
517
+ # primaries: 1
518
+ # replicas: 1
519
+ # placement: "sparse"
520
+ # resources:
521
+ # requests:
522
+ # cpus: "2"
523
+ # memory: "10g"
524
+ # dbconfig:
525
+ # module-configuration-parameters:
526
+ # redisearch:
527
+ # WORKERS: 6
528
+ # MIN_OPERATION_WORKERS: 6
529
+ # module-oss:
530
+ # WORKERS: 6
531
+ # MIN_OPERATION_WORKERS: 6
487
532
  if "setups" in default_specs:
488
533
  for setup in default_specs["setups"]:
489
534
  if setup_name == setup["name"]:
@@ -515,7 +560,9 @@ def extract_test_feasible_setups(
515
560
  feasible_setups_map[setup_name]
516
561
  )
517
562
  )
518
-
563
+ logging.info(
564
+ f"There a total of {len(feasible_setups_map.keys())} setups. Setups: {feasible_setups_map}"
565
+ )
519
566
  return feasible_setups_map
520
567
 
521
568
 
@@ -731,7 +778,10 @@ def print_results_table_stdout(
731
778
  metric_names=[],
732
779
  ):
733
780
  # check which metrics to extract
734
- (_, metrics,) = merge_default_and_config_metrics(
781
+ (
782
+ _,
783
+ metrics,
784
+ ) = merge_default_and_config_metrics(
735
785
  benchmark_config,
736
786
  default_metrics,
737
787
  None,
@@ -4,6 +4,7 @@
4
4
  # All rights reserved.
5
5
  #
6
6
  import logging
7
+ import copy
7
8
 
8
9
  from redisbench_admin.run.common import extract_test_feasible_setups
9
10
  from redisbench_admin.run_remote.consts import min_recommended_benchmark_duration
@@ -31,7 +32,7 @@ def calculate_client_tool_duration_and_check(
31
32
 
32
33
 
33
34
  def merge_dicts(dict1, dict2):
34
- result = dict1.copy() # Start with dict1's keys and values
35
+ result = copy.deepcopy(dict1) # Start with dict1's keys and values
35
36
  for key, value in dict2.items():
36
37
  if key in result:
37
38
  if isinstance(result[key], dict) and isinstance(value, dict):
@@ -56,8 +57,11 @@ def define_benchmark_plan(benchmark_definitions, default_specs):
56
57
  benchmark_runs_plan[benchmark_type] = {}
57
58
 
58
59
  # extract dataset-name
59
- dbconfig_present, dataset_name, _, _, _ = extract_redis_dbconfig_parameters(
60
- benchmark_config, "dbconfig"
60
+ benchmark_contains_dbconfig, dataset_name, _, _, _ = (
61
+ extract_redis_dbconfig_parameters(benchmark_config, "dbconfig")
62
+ )
63
+ logging.info(
64
+ f"Benchmark contains specific dbconfig on test {test_name}: {benchmark_contains_dbconfig}"
61
65
  )
62
66
  if dataset_name is None:
63
67
  dataset_name = test_name
@@ -74,6 +78,14 @@ def define_benchmark_plan(benchmark_definitions, default_specs):
74
78
  )
75
79
 
76
80
  for setup_name, setup_settings in test_setups.items():
81
+ test_benchmark_config = copy.deepcopy(benchmark_config)
82
+ setup_contains_dbconfig = False
83
+ if "dbconfig" in setup_settings:
84
+ setup_contains_dbconfig = True
85
+ logging.info(
86
+ f"setup ({setup_name}): {setup_settings}. contains dbconfig {setup_contains_dbconfig}"
87
+ )
88
+
77
89
  if setup_name not in benchmark_runs_plan[benchmark_type][dataset_name]:
78
90
  benchmark_runs_plan[benchmark_type][dataset_name][setup_name] = {}
79
91
  benchmark_runs_plan[benchmark_type][dataset_name][setup_name][
@@ -82,6 +94,7 @@ def define_benchmark_plan(benchmark_definitions, default_specs):
82
94
  benchmark_runs_plan[benchmark_type][dataset_name][setup_name][
83
95
  "benchmarks"
84
96
  ] = {}
97
+
85
98
  if (
86
99
  test_name
87
100
  in benchmark_runs_plan[benchmark_type][dataset_name][setup_name][
@@ -94,13 +107,25 @@ def define_benchmark_plan(benchmark_definitions, default_specs):
94
107
  )
95
108
  )
96
109
  else:
97
- # add benchmark
98
- if "dbconfig" in setup_settings:
99
- benchmark_config["dbconfig"] = merge_dicts(
100
- benchmark_config["dbconfig"], setup_settings["dbconfig"]
110
+ # check if we need to merge dbconfigs from the setup defaults
111
+ if setup_contains_dbconfig:
112
+ if "dbconfig" not in test_benchmark_config:
113
+ test_benchmark_config["dbconfig"] = {}
114
+ setup_dbconfig = setup_settings["dbconfig"]
115
+ benchmark_dbconfig = test_benchmark_config["dbconfig"]
116
+ logging.info(
117
+ f"Merging setup dbconfig: {setup_dbconfig}, with benchmark dbconfig {test_benchmark_config}"
101
118
  )
119
+ final_db_config = merge_dicts(benchmark_dbconfig, setup_dbconfig)
120
+ logging.info(f"FINAL DB CONFIG: {final_db_config}")
121
+ test_benchmark_config["dbconfig"] = final_db_config
122
+
123
+ logging.info(
124
+ f"final benchmark config for setup: {setup_name} and test: {test_name}. {test_benchmark_config}"
125
+ )
126
+ # add benchmark
102
127
  benchmark_runs_plan[benchmark_type][dataset_name][setup_name][
103
128
  "benchmarks"
104
- ][test_name] = benchmark_config
129
+ ][test_name] = test_benchmark_config
105
130
 
106
131
  return benchmark_runs_plan
@@ -114,7 +114,11 @@ class TerraformClass:
114
114
  def async_runner_setup(
115
115
  self,
116
116
  ):
117
- (remote_setup, deployment_type, remote_id,) = fetch_remote_setup_from_config(
117
+ (
118
+ remote_setup,
119
+ deployment_type,
120
+ remote_id,
121
+ ) = fetch_remote_setup_from_config(
118
122
  [{"type": "async", "setup": "runner"}],
119
123
  "https://github.com/RedisLabsModules/testing-infrastructure.git",
120
124
  "master",
@@ -229,7 +233,11 @@ def terraform_spin_or_reuse_env(
229
233
  tf_override_name=None,
230
234
  tf_folder_path=None,
231
235
  ):
232
- (remote_setup, deployment_type, remote_id,) = fetch_remote_setup_from_config(
236
+ (
237
+ remote_setup,
238
+ deployment_type,
239
+ remote_id,
240
+ ) = fetch_remote_setup_from_config(
233
241
  benchmark_config["remote"],
234
242
  "https://github.com/RedisLabsModules/testing-infrastructure.git",
235
243
  "master",
@@ -28,9 +28,9 @@ WantedBy=multi-user.target
28
28
  argv.append("--private_key")
29
29
  argv.append("/home/ubuntu/work_dir/tests/benchmarks/benchmarks.redislabs.pem")
30
30
  else:
31
- argv[
32
- argv.index(args.private_key)
33
- ] = "/home/ubuntu/work_dir/tests/benchmarks/benchmarks.redislabs.pem"
31
+ argv[argv.index(args.private_key)] = (
32
+ "/home/ubuntu/work_dir/tests/benchmarks/benchmarks.redislabs.pem"
33
+ )
34
34
  if len(args.module_path) != 0:
35
35
  argv[argv.index(args.module_path[0])] = (
36
36
  "/home/ubuntu/work_dir/tests/benchmarks/"
@@ -680,17 +680,17 @@ def commandstats_latencystats_process_name(
680
680
  branch = variant_labels_dict["branch"]
681
681
 
682
682
  if version is not None:
683
- variant_labels_dict[
684
- "command_and_metric_and_version"
685
- ] = "{} - {} - {}".format(command, metric, version)
686
- variant_labels_dict[
687
- "command_and_metric_and_setup_and_version"
688
- ] = "{} - {} - {} - {}".format(command, metric, setup_name, version)
683
+ variant_labels_dict["command_and_metric_and_version"] = (
684
+ "{} - {} - {}".format(command, metric, version)
685
+ )
686
+ variant_labels_dict["command_and_metric_and_setup_and_version"] = (
687
+ "{} - {} - {} - {}".format(command, metric, setup_name, version)
688
+ )
689
689
 
690
690
  if branch is not None:
691
- variant_labels_dict[
692
- "command_and_metric_and_branch"
693
- ] = "{} - {} - {}".format(command, metric, branch)
694
- variant_labels_dict[
695
- "command_and_metric_and_setup_and_branch"
696
- ] = "{} - {} - {} - {}".format(command, metric, setup_name, branch)
691
+ variant_labels_dict["command_and_metric_and_branch"] = (
692
+ "{} - {} - {}".format(command, metric, branch)
693
+ )
694
+ variant_labels_dict["command_and_metric_and_setup_and_branch"] = (
695
+ "{} - {} - {} - {}".format(command, metric, setup_name, branch)
696
+ )
@@ -1374,20 +1374,20 @@ def commandstats_latencystats_process_name(
1374
1374
  branch = variant_labels_dict["branch"]
1375
1375
 
1376
1376
  if version is not None:
1377
- variant_labels_dict[
1378
- "command_and_metric_and_version"
1379
- ] = "{} - {} - {}".format(command, metric, version)
1380
- variant_labels_dict[
1381
- "command_and_metric_and_setup_and_version"
1382
- ] = "{} - {} - {} - {}".format(command, metric, setup_name, version)
1377
+ variant_labels_dict["command_and_metric_and_version"] = (
1378
+ "{} - {} - {}".format(command, metric, version)
1379
+ )
1380
+ variant_labels_dict["command_and_metric_and_setup_and_version"] = (
1381
+ "{} - {} - {} - {}".format(command, metric, setup_name, version)
1382
+ )
1383
1383
 
1384
1384
  if branch is not None:
1385
- variant_labels_dict[
1386
- "command_and_metric_and_branch"
1387
- ] = "{} - {} - {}".format(command, metric, branch)
1388
- variant_labels_dict[
1389
- "command_and_metric_and_setup_and_branch"
1390
- ] = "{} - {} - {} - {}".format(command, metric, setup_name, branch)
1385
+ variant_labels_dict["command_and_metric_and_branch"] = (
1386
+ "{} - {} - {}".format(command, metric, branch)
1387
+ )
1388
+ variant_labels_dict["command_and_metric_and_setup_and_branch"] = (
1389
+ "{} - {} - {} - {}".format(command, metric, setup_name, branch)
1390
+ )
1391
1391
 
1392
1392
 
1393
1393
  def shutdown_remote_redis(redis_conns, ssh_tunnel):
@@ -31,7 +31,11 @@ def terraform_spin_or_reuse_env(
31
31
  tf_override_name=None,
32
32
  tf_folder_path=None,
33
33
  ):
34
- (remote_setup, deployment_type, remote_id,) = fetch_remote_setup_from_config(
34
+ (
35
+ remote_setup,
36
+ deployment_type,
37
+ remote_id,
38
+ ) = fetch_remote_setup_from_config(
35
39
  benchmark_config["remote"],
36
40
  "https://github.com/redis-performance/testing-infrastructure.git",
37
41
  "master",
@@ -258,10 +258,12 @@ def extract_redis_dbconfig_parameters(benchmark_config, dbconfig_keyname):
258
258
  cp = benchmark_config[dbconfig_keyname]["configuration-parameters"]
259
259
  for k, v in cp.items():
260
260
  redis_configuration_parameters[k] = v
261
- if "dataset_load_timeout_secs" in cp:
262
- dataset_load_timeout_secs = cp["dataset_load_timeout_secs"]
263
- if "dataset_name" in cp:
264
- dataset_name = cp["dataset_name"]
261
+ if "dataset_load_timeout_secs" in benchmark_config[dbconfig_keyname]:
262
+ dataset_load_timeout_secs = benchmark_config[dbconfig_keyname][
263
+ "dataset_load_timeout_secs"
264
+ ]
265
+ if "dataset_name" in benchmark_config[dbconfig_keyname]:
266
+ dataset_name = benchmark_config[dbconfig_keyname]["dataset_name"]
265
267
 
266
268
  return (
267
269
  dbconfig_present,
@@ -731,7 +731,10 @@ def extract_perversion_timeseries_from_results(
731
731
  ):
732
732
  break_by_key = "version"
733
733
  break_by_str = "by.{}".format(break_by_key)
734
- (branch_time_series_dict, target_tables,) = common_timeseries_extraction(
734
+ (
735
+ branch_time_series_dict,
736
+ target_tables,
737
+ ) = common_timeseries_extraction(
735
738
  break_by_key,
736
739
  break_by_str,
737
740
  datapoints_timestamp,
@@ -902,9 +905,9 @@ def from_metric_kv_to_timeserie(
902
905
 
903
906
  target_table_dict[target_name] = target_value
904
907
 
905
- target_table_dict[
906
- "{}:percent {}".format(target_name, comparison_type)
907
- ] = target_value_pct_str
908
+ target_table_dict["{}:percent {}".format(target_name, comparison_type)] = (
909
+ target_value_pct_str
910
+ )
908
911
  return target_table_keyname, target_table_dict
909
912
 
910
913
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redisbench-admin
3
- Version: 0.11.0
3
+ Version: 0.11.1
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
@@ -8,13 +8,14 @@ Requires-Python: >=3.10.0,<4.0.0
8
8
  Classifier: Programming Language :: Python :: 3
9
9
  Classifier: Programming Language :: Python :: 3.10
10
10
  Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
11
12
  Requires-Dist: Flask (>=2.0.1,<3.0.0)
12
13
  Requires-Dist: Flask-HTTPAuth (>=4.4.0,<5.0.0)
13
14
  Requires-Dist: GitPython (>=3.1.12,<4.0.0)
14
15
  Requires-Dist: Jinja2 (>=3.0.3,<4.0.0)
15
16
  Requires-Dist: PyYAML (>=6.0,<7.0)
16
17
  Requires-Dist: boto3 (>=1.13.24,<2.0.0)
17
- Requires-Dist: certifi (>=2021.10.8,<2022.0.0)
18
+ Requires-Dist: certifi (>=2021.10.8,<2025.0.0)
18
19
  Requires-Dist: daemonize (>=2.5.0,<3.0.0)
19
20
  Requires-Dist: flask-restx (>=0.5.1,<0.6.0)
20
21
  Requires-Dist: humanize (>=2.4.0,<3.0.0)
@@ -22,7 +23,7 @@ Requires-Dist: jsonpath_ng (>=1.5.2,<2.0.0)
22
23
  Requires-Dist: matplotlib (>=3.1.2,<4.0.0)
23
24
  Requires-Dist: numpy (>=2.0.0,<3.0.0)
24
25
  Requires-Dist: pandas (>=2.1.2,<3.0.0)
25
- Requires-Dist: paramiko (>=2.7.2,<3.0.0)
26
+ Requires-Dist: paramiko (>=2.7.2,<4.0.0)
26
27
  Requires-Dist: psutil (>=5.6.6,<6.0.0)
27
28
  Requires-Dist: pyWorkFlow (>=0.0.2,<0.0.3)
28
29
  Requires-Dist: py_cpuinfo (>=5.0.0,<6.0.0)
@@ -156,6 +157,12 @@ To run a specific test:
156
157
  $ tox -- tests/test_redistimeseries.py
157
158
  ```
158
159
 
160
+ To run a specific test with verbose logging:
161
+
162
+ ```sh
163
+ # tox -- -vv --log-cli-level=INFO tests/test_run.py
164
+ ```
165
+
159
166
  ## License
160
167
 
161
168
  redisbench-admin is distributed under the BSD3 license - see [LICENSE](LICENSE)