redis-benchmarks-specification 0.1.75__py3-none-any.whl → 0.1.77__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.

Files changed (36) hide show
  1. redis_benchmarks_specification/__builder__/builder.py +35 -4
  2. redis_benchmarks_specification/__cli__/args.py +36 -0
  3. redis_benchmarks_specification/__cli__/cli.py +127 -49
  4. redis_benchmarks_specification/__compare__/compare.py +0 -6
  5. redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py +65 -3
  6. {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.77.dist-info}/METADATA +2 -2
  7. {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.77.dist-info}/RECORD +10 -36
  8. redis_benchmarks_specification/test-suites/create-re-string.py +0 -286
  9. redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string200c-with-20KiB-values-pipeline-10.yml +0 -20
  10. redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string200c-with-20KiB-values.yml +0 -20
  11. redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string50c-with-20KiB-values-pipeline-10.yml +0 -20
  12. redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string50c-with-20KiB-values.yml +0 -20
  13. redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget200c-20KiB-pipeline-10.yml +0 -26
  14. redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget200c-20KiB.yml +0 -26
  15. redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget50c-20KiB-pipeline-10.yml +0 -26
  16. redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget50c-20KiB.yml +0 -26
  17. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-100B-values-pipeline-10.yml +0 -20
  18. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-100B-values.yml +0 -20
  19. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-1KiB-values-pipeline-10.yml +0 -20
  20. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-1KiB-values.yml +0 -20
  21. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-100B-values-pipeline-10.yml +0 -20
  22. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-100B-values.yml +0 -20
  23. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-1KiB-values-pipeline-10.yml +0 -20
  24. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-1KiB-values.yml +0 -20
  25. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-mget-1KiB.yml +0 -27
  26. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-100B-pipeline-10.yml +0 -26
  27. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-100B.yml +0 -26
  28. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml +0 -26
  29. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-1KiB.yml +0 -26
  30. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-100B-pipeline-10.yml +0 -26
  31. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-100B.yml +0 -26
  32. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-1KiB-pipeline-10.yml +0 -26
  33. redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-1KiB.yml +0 -26
  34. {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.77.dist-info}/LICENSE +0 -0
  35. {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.77.dist-info}/WHEEL +0 -0
  36. {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.77.dist-info}/entry_points.txt +0 -0
@@ -141,7 +141,7 @@ def main():
141
141
 
142
142
  previous_id = args.consumer_start_id
143
143
  while True:
144
- previous_id, new_builds_count = builder_process_stream(
144
+ previous_id, new_builds_count, _ = builder_process_stream(
145
145
  builders_folder,
146
146
  conn,
147
147
  different_build_specs,
@@ -181,6 +181,7 @@ def builder_process_stream(
181
181
  arch="amd64",
182
182
  ):
183
183
  new_builds_count = 0
184
+ build_stream_fields_arr = []
184
185
  logging.info("Entering blocking read waiting for work.")
185
186
  consumer_name = "{}-proc#{}".format(STREAM_GH_EVENTS_COMMIT_BUILDERS_CG, "1")
186
187
  newTestInfo = conn.xreadgroup(
@@ -220,6 +221,22 @@ def builder_process_stream(
220
221
  use_git_timestamp = bool(testDetails[b"use_git_timestamp"])
221
222
  if b"git_timestamp_ms" in testDetails:
222
223
  git_timestamp_ms = int(testDetails[b"git_timestamp_ms"].decode())
224
+ tests_regexp = ".*"
225
+ if b"tests_regexp" in testDetails:
226
+ tests_regexp = testDetails[b"tests_regexp"].decode()
227
+ tests_priority_upper_limit = 10000
228
+ if b"tests_priority_upper_limit" in testDetails:
229
+ tests_priority_upper_limit = int(
230
+ testDetails[b"tests_priority_upper_limit"].decode()
231
+ )
232
+ tests_priority_lower_limit = 0
233
+ if b"tests_priority_lower_limit" in testDetails:
234
+ tests_priority_lower_limit = int(
235
+ testDetails[b"tests_priority_lower_limit"].decode()
236
+ )
237
+ tests_groups_regexp = ".*"
238
+ if b"tests_groups_regexp" in testDetails:
239
+ tests_groups_regexp = testDetails[b"tests_groups_regexp"].decode()
223
240
 
224
241
  for build_spec in different_build_specs:
225
242
  build_config, id = get_build_config(builders_folder + "/" + build_spec)
@@ -333,11 +350,18 @@ def builder_process_stream(
333
350
  "build_command": build_command,
334
351
  "metadata": json.dumps(build_config_metadata),
335
352
  "build_artifacts": ",".join(build_artifacts),
353
+ "tests_regexp": tests_regexp,
354
+ "tests_priority_upper_limit": tests_priority_upper_limit,
355
+ "tests_priority_lower_limit": tests_priority_lower_limit,
356
+ "tests_groups_regexp": tests_groups_regexp,
336
357
  }
337
358
  if git_branch is not None:
338
359
  build_stream_fields["git_branch"] = git_branch
339
360
  if git_version is not None:
340
361
  build_stream_fields["git_version"] = git_version
362
+ if git_timestamp_ms is not None:
363
+ build_stream_fields["git_timestamp_ms"] = git_timestamp_ms
364
+
341
365
  if git_timestamp_ms is not None:
342
366
  build_stream_fields["git_timestamp_ms"] = git_timestamp_ms
343
367
  for artifact in build_artifacts:
@@ -356,16 +380,23 @@ def builder_process_stream(
356
380
  if b"platform" in testDetails:
357
381
  build_stream_fields["platform"] = testDetails[b"platform"]
358
382
  if result is True:
359
- stream_id = conn.xadd(
383
+ benchmark_stream_id = conn.xadd(
360
384
  STREAM_KEYNAME_NEW_BUILD_EVENTS, build_stream_fields
361
385
  )
362
386
  logging.info(
363
387
  "sucessfully built build variant {} for redis git_sha {}. Stream id: {}".format(
364
- id, git_hash, stream_id
388
+ id, git_hash, benchmark_stream_id
365
389
  )
366
390
  )
391
+ builder_list_completed = f"builder:{streamId}:builds_completed"
392
+ conn.lpush(builder_list_completed, benchmark_stream_id)
393
+ conn.expire(builder_list_completed, REDIS_BINS_EXPIRE_SECS)
394
+ logging.info(
395
+ f"Adding information of build->benchmark stream info in list {builder_list_completed}. Adding benchmark stream id: {benchmark_stream_id}"
396
+ )
367
397
  shutil.rmtree(temporary_dir, ignore_errors=True)
368
398
  new_builds_count = new_builds_count + 1
399
+ build_stream_fields_arr.append(build_stream_fields)
369
400
  ack_reply = conn.xack(
370
401
  STREAM_KEYNAME_GH_EVENTS_COMMIT,
371
402
  STREAM_GH_EVENTS_COMMIT_BUILDERS_CG,
@@ -387,7 +418,7 @@ def builder_process_stream(
387
418
  )
388
419
  else:
389
420
  logging.error("Missing commit information within received message.")
390
- return previous_id, new_builds_count
421
+ return previous_id, new_builds_count, build_stream_fields_arr
391
422
 
392
423
 
393
424
  def build_spec_image_prefetch(builders_folder, different_build_specs):
@@ -30,6 +30,30 @@ def spec_cli_args(parser):
30
30
  default=SPECS_PATH_TEST_SUITES,
31
31
  help="Test suites folder, containing the different test variations",
32
32
  )
33
+ parser.add_argument(
34
+ "--tests-regexp",
35
+ type=str,
36
+ default=".*",
37
+ help="Interpret PATTERN as a regular expression to filter test names",
38
+ )
39
+ parser.add_argument(
40
+ "--tests-groups-regexp",
41
+ type=str,
42
+ default=".*",
43
+ help="Interpret PATTERN as a regular expression to filter test group names",
44
+ )
45
+ parser.add_argument(
46
+ "--tests-priority-lower-limit",
47
+ type=int,
48
+ default=0,
49
+ help="Run a subset of the tests based uppon a preset priority. By default runs all tests.",
50
+ )
51
+ parser.add_argument(
52
+ "--tests-priority-upper-limit",
53
+ type=int,
54
+ default=100000,
55
+ help="Run a subset of the tests based uppon a preset priority. By default runs all tests.",
56
+ )
33
57
  parser.add_argument(
34
58
  "--defaults_filename",
35
59
  type=str,
@@ -138,4 +162,16 @@ def spec_cli_args(parser):
138
162
  default="",
139
163
  help="Only trigger tests on the specified platform.",
140
164
  )
165
+ parser.add_argument(
166
+ "--wait-build",
167
+ default=False,
168
+ action="store_true",
169
+ help="Wait for build to be finished.",
170
+ )
171
+ parser.add_argument(
172
+ "--wait-build-timeout",
173
+ type=int,
174
+ default=-1,
175
+ help="Wait x sections for build. If -1, waits forever.",
176
+ )
141
177
  return parser
@@ -16,6 +16,7 @@ import git
16
16
  import packaging
17
17
  import redis
18
18
  from packaging import version
19
+ import time
19
20
 
20
21
 
21
22
  from redis_benchmarks_specification.__cli__.args import spec_cli_args
@@ -26,7 +27,11 @@ from redis_benchmarks_specification.__common__.builder_schema import (
26
27
  get_commit_dict_from_sha,
27
28
  request_build_from_commit_info,
28
29
  )
29
- from redis_benchmarks_specification.__common__.env import REDIS_BINS_EXPIRE_SECS
30
+ from redis_benchmarks_specification.__common__.env import (
31
+ REDIS_BINS_EXPIRE_SECS,
32
+ STREAM_KEYNAME_GH_EVENTS_COMMIT,
33
+ STREAM_GH_EVENTS_COMMIT_BUILDERS_CG,
34
+ )
30
35
  from redis_benchmarks_specification.__common__.package import (
31
36
  get_version_string,
32
37
  populate_with_poetry_data,
@@ -228,62 +233,135 @@ def trigger_tests_cli_command_logic(args, project_name, project_version):
228
233
  )
229
234
  filtered_hash_commits.append(cdict)
230
235
 
231
- if args.dry_run is False:
232
- conn = redis.StrictRedis(
233
- host=args.redis_host,
234
- port=args.redis_port,
235
- password=args.redis_pass,
236
- username=args.redis_user,
237
- decode_responses=False,
236
+ logging.info(
237
+ "Checking connection to redis with user: {}, host: {}, port: {}".format(
238
+ args.redis_user,
239
+ args.redis_host,
240
+ args.redis_port,
238
241
  )
239
-
240
- for rep in range(0, 1):
241
- for cdict in filtered_hash_commits:
242
- (
243
- result,
244
- error_msg,
245
- commit_dict,
246
- _,
247
- binary_key,
248
- binary_value,
249
- ) = get_commit_dict_from_sha(
250
- cdict["git_hash"],
251
- args.gh_org,
252
- args.gh_repo,
253
- cdict,
254
- True,
255
- args.gh_token,
256
- )
257
- if args.platform:
258
- commit_dict["platform"] = args.platform
259
- if result is True:
260
- stream_id = "n/a"
261
- if args.dry_run is False:
262
- (
263
- result,
264
- reply_fields,
265
- error_msg,
266
- ) = request_build_from_commit_info(
267
- conn,
268
- commit_dict,
269
- {},
270
- binary_key,
271
- binary_value,
272
- REDIS_BINS_EXPIRE_SECS,
273
- )
274
- stream_id = reply_fields["id"]
242
+ )
243
+ conn = redis.StrictRedis(
244
+ host=args.redis_host,
245
+ port=args.redis_port,
246
+ password=args.redis_pass,
247
+ username=args.redis_user,
248
+ decode_responses=False,
249
+ )
250
+ conn.ping()
251
+ for rep in range(0, 1):
252
+ for cdict in filtered_hash_commits:
253
+ (
254
+ result,
255
+ error_msg,
256
+ commit_dict,
257
+ _,
258
+ binary_key,
259
+ binary_value,
260
+ ) = get_commit_dict_from_sha(
261
+ cdict["git_hash"],
262
+ args.gh_org,
263
+ args.gh_repo,
264
+ cdict,
265
+ True,
266
+ args.gh_token,
267
+ )
268
+ if args.platform:
269
+ commit_dict["platform"] = args.platform
270
+ commit_dict["tests_priority_upper_limit"] = args.tests_priority_upper_limit
271
+ commit_dict["tests_priority_lower_limit"] = args.tests_priority_lower_limit
272
+ commit_dict["tests_regexp"] = args.tests_regexp
273
+ commit_dict["tests_groups_regexp"] = args.tests_groups_regexp
274
+ if result is True:
275
+ stream_id = "n/a"
276
+ if args.dry_run is False:
277
+ (result, reply_fields, error_msg,) = request_build_from_commit_info(
278
+ conn,
279
+ commit_dict,
280
+ {},
281
+ binary_key,
282
+ binary_value,
283
+ REDIS_BINS_EXPIRE_SECS,
284
+ )
285
+ stream_id = reply_fields["id"]
275
286
  logging.info(
276
- "Successfully requested a build for commit: {}. Date: {} Request stream id: {}.".format(
287
+ "Successfully requested a build for commit: {}. Date: {} Request stream id: {}. full commited info: {}. Reply fields: {}".format(
277
288
  cdict["git_hash"],
278
289
  cdict["commit_datetime"],
279
290
  stream_id,
291
+ commit_dict,
292
+ reply_fields,
280
293
  )
281
294
  )
282
- else:
283
- logging.error(error_msg)
295
+ if args.wait_build is True:
296
+ decoded_stream_id = stream_id.decode()
297
+ builder_list_streams = (
298
+ f"builder:{decoded_stream_id}:builds_completed"
299
+ )
300
+ len_list = 0
301
+ stream_ack = False
302
+ sleep_secs = 10
303
+ benchmark_stream_ids = []
304
+ while len_list == 0 or stream_ack is False:
284
305
 
285
- else:
286
- logging.info("Skipping actual work trigger ( dry-run )")
306
+ logging.info(
307
+ f"checking benchmark streams info in key: {builder_list_streams}"
308
+ )
309
+ benchmark_stream_ids = conn.lrange(
310
+ builder_list_streams, 0, -1
311
+ )
312
+ len_list = len(benchmark_stream_ids)
313
+ logging.info(
314
+ f"There is a total of {len_list} already build benchmark stream ids for this build: {benchmark_stream_ids}"
315
+ )
316
+
317
+ if len_list > 0:
318
+ pending_build_streams = conn.xpending_range(
319
+ STREAM_KEYNAME_GH_EVENTS_COMMIT,
320
+ STREAM_GH_EVENTS_COMMIT_BUILDERS_CG,
321
+ "-",
322
+ "+",
323
+ 1000,
324
+ )
325
+ len_pending = len(pending_build_streams)
326
+ logging.info(
327
+ f"There is a total of {len_pending} pending builds for stream {STREAM_KEYNAME_GH_EVENTS_COMMIT} and cg {STREAM_GH_EVENTS_COMMIT_BUILDERS_CG}. Checking for stream id: {stream_id}"
328
+ )
329
+ found_id = False
330
+ for pending_try in pending_build_streams:
331
+ logging.info(f"pending entry: {pending_try}")
332
+ pending_id = pending_try["message_id"]
333
+ if stream_id == pending_id:
334
+ found_id = True
335
+ logging.info(
336
+ f"Found the stream id {stream_id} as part of pending entry list. Waiting for it to be ack."
337
+ )
338
+
339
+ if found_id is True:
340
+ logging.info(
341
+ f"Sleeping for {sleep_secs} before checking pending list again."
342
+ )
343
+ time.sleep(sleep_secs)
344
+ else:
345
+ stream_ack = True
346
+ else:
347
+ logging.info(
348
+ f"Sleeping for {sleep_secs} before checking builds again."
349
+ )
350
+ time.sleep(sleep_secs)
351
+ logging.info(
352
+ f"FINAL total of {len_list} already build benchmark stream ids for this build: {benchmark_stream_ids}"
353
+ )
354
+
355
+ else:
356
+ logging.info(
357
+ "DRY-RUN: build for commit: {}. Date: {} Full commited info: {}".format(
358
+ cdict["git_hash"],
359
+ cdict["commit_datetime"],
360
+ commit_dict,
361
+ )
362
+ )
363
+ else:
364
+ logging.error(error_msg)
287
365
  if cleanUp is True:
288
366
  logging.info("Removing temporary redis dir {}.".format(redisDirPath))
289
367
  shutil.rmtree(redisDirPath)
@@ -15,7 +15,6 @@ import datetime as dt
15
15
  import os
16
16
  from tqdm import tqdm
17
17
  from github import Github
18
- from slack_sdk.webhook import WebhookClient
19
18
  import argparse
20
19
  from redis_benchmarks_specification.__compare__.args import create_compare_arguments
21
20
 
@@ -282,9 +281,6 @@ def compare_command_logic(args, project_name, project_version):
282
281
  contains_regression_comment = False
283
282
  regression_comment = None
284
283
  github_pr = None
285
- # slack related
286
- webhook_notifications_active = False
287
- webhook_client_slack = None
288
284
  if running_platform is not None:
289
285
  logging.info(
290
286
  "Using platform named: {} to do the comparison.\n\n".format(
@@ -455,7 +451,6 @@ def compare_command_logic(args, project_name, project_version):
455
451
  )
456
452
  user_input = "n"
457
453
  html_url = "n/a"
458
- regression_count = len(detected_regressions)
459
454
  (
460
455
  baseline_str,
461
456
  by_str_baseline,
@@ -801,7 +796,6 @@ def from_rts_to_regression_table(
801
796
  total_comparison_points = 0
802
797
  noise_waterline = 3
803
798
  progress = tqdm(unit="benchmark time-series", total=len(test_names))
804
- at_comparison = 0
805
799
  for test_name in test_names:
806
800
  multi_value_baseline = check_multi_value_filter(baseline_str)
807
801
  multi_value_comparison = check_multi_value_filter(comparison_str)
@@ -5,7 +5,7 @@ import pathlib
5
5
  import shutil
6
6
  import tempfile
7
7
  import traceback
8
-
8
+ import re
9
9
  import docker
10
10
  import redis
11
11
  import os
@@ -23,6 +23,7 @@ from redis_benchmarks_specification.__common__.env import (
23
23
  LOG_LEVEL,
24
24
  REDIS_HEALTH_CHECK_INTERVAL,
25
25
  REDIS_SOCKET_TIMEOUT,
26
+ REDIS_BINS_EXPIRE_SECS,
26
27
  )
27
28
  from redis_benchmarks_specification.__common__.package import (
28
29
  get_version_string,
@@ -433,6 +434,13 @@ def process_self_contained_coordinator_stream(
433
434
  run_arch,
434
435
  ) = extract_build_info_from_streamdata(testDetails)
435
436
 
437
+ test_regexp = ".*"
438
+ if b"test_regexp" in testDetails:
439
+ test_regexp = testDetails[b"test_regexp"]
440
+ logging.info(
441
+ f"detected a regexp definition on the streamdata {test_regexp}"
442
+ )
443
+
436
444
  skip_test = False
437
445
  if b"platform" in testDetails:
438
446
  platform = testDetails[b"platform"]
@@ -466,11 +474,37 @@ def process_self_contained_coordinator_stream(
466
474
  images_loaded = docker_client.images.load(airgap_docker_image_bin)
467
475
  logging.info("Successfully loaded images {}".format(images_loaded))
468
476
 
477
+ filtered_test_files = []
478
+
479
+ stream_test_list_pending = (
480
+ f"{stream_id}:{running_platform}:tests_pending"
481
+ )
482
+ stream_test_list_running = (
483
+ f"{stream_id}:{running_platform}:tests_running"
484
+ )
485
+ stream_test_list_completed = (
486
+ f"{stream_id}:{running_platform}:tests_completed"
487
+ )
469
488
  for test_file in testsuite_spec_files:
470
489
  if defaults_filename in test_file:
471
490
  continue
472
- redis_containers = []
473
- client_containers = []
491
+
492
+ if test_regexp != ".*":
493
+ logging.info(
494
+ "Filtering all tests via a regular expression: {}".format(
495
+ test_regexp
496
+ )
497
+ )
498
+ tags_regex_string = re.compile(test_regexp)
499
+
500
+ match_obj = re.search(tags_regex_string, test_file)
501
+ if match_obj is None:
502
+ logging.info(
503
+ "Skipping {} given it does not match regex {}".format(
504
+ test_file, test_regexp
505
+ )
506
+ )
507
+ continue
474
508
 
475
509
  with open(test_file, "r") as stream:
476
510
  (
@@ -485,6 +519,28 @@ def process_self_contained_coordinator_stream(
485
519
  )
486
520
  )
487
521
  continue
522
+ conn.lpush(stream_test_list_pending, test_name)
523
+ conn.expire(stream_test_list_pending, REDIS_BINS_EXPIRE_SECS)
524
+ logging.info(
525
+ f"Added test named {test_name} to the pending test list in key {stream_test_list_pending}"
526
+ )
527
+ filtered_test_files.append(test_file)
528
+
529
+ for test_file in filtered_test_files:
530
+ redis_containers = []
531
+ client_containers = []
532
+ with open(test_file, "r") as stream:
533
+ (
534
+ _,
535
+ benchmark_config,
536
+ test_name,
537
+ ) = get_final_benchmark_config(None, stream, "")
538
+ conn.lrem(stream_test_list_pending, 1, test_name)
539
+ conn.lpush(stream_test_list_running, test_name)
540
+ conn.expire(stream_test_list_running, REDIS_BINS_EXPIRE_SECS)
541
+ logging.info(
542
+ f"Added test named {test_name} to the pending test list in key {stream_test_list_running}"
543
+ )
488
544
  (
489
545
  _,
490
546
  _,
@@ -970,6 +1026,12 @@ def process_self_contained_coordinator_stream(
970
1026
 
971
1027
  overall_result &= test_result
972
1028
 
1029
+ conn.lrem(stream_test_list_running, 1, test_name)
1030
+ conn.lpush(stream_test_list_completed, test_name)
1031
+ conn.expire(stream_test_list_completed, REDIS_BINS_EXPIRE_SECS)
1032
+ logging.info(
1033
+ f"Added test named {test_name} to the completed test list in key {stream_test_list_completed}"
1034
+ )
973
1035
  else:
974
1036
  logging.error("Missing commit information within received message.")
975
1037
  except:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redis-benchmarks-specification
3
- Version: 0.1.75
3
+ Version: 0.1.77
4
4
  Summary: The Redis benchmarks specification describes the cross-language/tools requirements and expectations to foster performance and observability standards around redis related technologies. Members from both industry and academia, including organizations and individuals are encouraged to contribute.
5
5
  Author: filipecosta90
6
6
  Author-email: filipecosta.90@gmail.com
@@ -16,7 +16,7 @@ Requires-Dist: GitPython (>=3.1.20,<4.0.0)
16
16
  Requires-Dist: PyGithub (>=1.55,<2.0)
17
17
  Requires-Dist: PyYAML (>=6.0,<7.0)
18
18
  Requires-Dist: argparse (>=1.4.0,<2.0.0)
19
- Requires-Dist: docker (>=5.0.0,<6.0.0)
19
+ Requires-Dist: docker (>=7.1.0,<8.0.0)
20
20
  Requires-Dist: flask-restx (>=0.5.0,<0.6.0)
21
21
  Requires-Dist: marshmallow (>=3.12.2,<4.0.0)
22
22
  Requires-Dist: node-semver (>=0.8.1,<0.9.0)
@@ -4,11 +4,11 @@ redis_benchmarks_specification/__api__/api.py,sha256=k_CMICtMm1z8jY3hByaL0hIr_5v
4
4
  redis_benchmarks_specification/__api__/app.py,sha256=5LEdVBkYW_Twejmy1--u_eGVGIkJxzW5kXSE9l1he3c,6875
5
5
  redis_benchmarks_specification/__builder__/Readme.md,sha256=O6MV_J3OSgzW-ir2TbukP8Vhkm_LOzQJJndG1Cykqic,111
6
6
  redis_benchmarks_specification/__builder__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
7
- redis_benchmarks_specification/__builder__/builder.py,sha256=2hPQ6Gd2fWZemT_OmgkcHysb4wB6KwrSjExVMOAFL8o,17023
7
+ redis_benchmarks_specification/__builder__/builder.py,sha256=Yl2lGIjppg9dD8B6OKyflAeGHwHdiNRwLvX7JCYR0Es,18845
8
8
  redis_benchmarks_specification/__builder__/schema.py,sha256=1wcmyVJBcWrBvK58pghN9NCoWLCO3BzPsmdKWYfkVog,584
9
9
  redis_benchmarks_specification/__cli__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
10
- redis_benchmarks_specification/__cli__/args.py,sha256=Y4qcEzfetS-F7H7XexGOQ1ZcKFY6FcNIw7_a8pvB80U,4626
11
- redis_benchmarks_specification/__cli__/cli.py,sha256=yY3IcLovEKXPBUaZdgcTYFW2y4S1URp4LpN4RgbqVy0,9818
10
+ redis_benchmarks_specification/__cli__/args.py,sha256=8n0K2JDpTBqw_XKSdh2JPgBoq5ZJh1n3dHNXXx9vZH4,5732
11
+ redis_benchmarks_specification/__cli__/cli.py,sha256=nydYR0Y0Nbh8mjtlQ4ZI9ro0c3eo-GcpBJBMkHy1cFw,13918
12
12
  redis_benchmarks_specification/__cli__/stats.py,sha256=wahzZRbpfokv8dQU8O4BH5JFrOZk-l6k8LWdKfue9_0,20204
13
13
  redis_benchmarks_specification/__common__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  redis_benchmarks_specification/__common__/builder_schema.py,sha256=LW00BSz_LXa83wbgRFylOCyRMMH4-3YpWgYh2hevOFM,5693
@@ -18,7 +18,7 @@ redis_benchmarks_specification/__common__/runner.py,sha256=6x1L8UAo-gmxLMcsUU4FG
18
18
  redis_benchmarks_specification/__common__/spec.py,sha256=3hvfAb7RuAsqB_PNEo_-iuOtgz1ZCWe3ouMwS5Mw54A,1002
19
19
  redis_benchmarks_specification/__compare__/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
20
20
  redis_benchmarks_specification/__compare__/args.py,sha256=71-pYjlbTQNAXQMbAiet898yhWRIplBBNU5USQqFar4,5341
21
- redis_benchmarks_specification/__compare__/compare.py,sha256=TUgeeopSUUHtmfCo9vKgsafyNKbIUkimjThhORWOqHI,40142
21
+ redis_benchmarks_specification/__compare__/compare.py,sha256=ySW_JfIbozSldabJSGbN6gTvb69Kc05X1vVsWxaFi1w,39926
22
22
  redis_benchmarks_specification/__init__.py,sha256=YQIEx2sLPPA0JR9OuCuMNMNtm-f_gqDKgzvNJnkGNKY,491
23
23
  redis_benchmarks_specification/__runner__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
24
24
  redis_benchmarks_specification/__runner__/args.py,sha256=lYvbPd_3ppHZv4f2sRwXcF-fcBrwRSn3H2RMmNVkojY,7221
@@ -32,7 +32,7 @@ redis_benchmarks_specification/__self_contained_coordinator__/cpuset.py,sha256=s
32
32
  redis_benchmarks_specification/__self_contained_coordinator__/docker.py,sha256=iivxZ55vL2kVHHkqVbXY2ftvxvceqH_Zw079KLCv9N8,2507
33
33
  redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py,sha256=ajhpzxsBy6tiHrO79gEIKQYxZR-Us6B4rC6NYg1EZjM,2875
34
34
  redis_benchmarks_specification/__self_contained_coordinator__/runners.py,sha256=Ul8UoxvWRxCVWmyaCBadpLMDOVEoNSp-A9KMPtPmUwM,28483
35
- redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py,sha256=TzzB7MHdGKIbvqYNffID0MBNPMnJC21dTzGz64SO3M0,46481
35
+ redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py,sha256=AnURQ_rneF8pL-SVlBLPdAp_s1PlmlcrRZEgVIeV684,49515
36
36
  redis_benchmarks_specification/__setups__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  redis_benchmarks_specification/__setups__/topologies.py,sha256=xQ1IJkcTji_ZjLiJd3vOxZpvbNtBLZw9cPkw5hGJKHU,481
38
38
  redis_benchmarks_specification/__spec__/__init__.py,sha256=l-G1z-t6twUgi8QLueqoTQLvJmv3hJoEYskGm6H7L6M,83
@@ -47,7 +47,6 @@ redis_benchmarks_specification/setups/builders/gcc:8.5.0-amd64-debian-buster-def
47
47
  redis_benchmarks_specification/setups/builders/gcc:8.5.0-arm64-debian-buster-default.yml,sha256=I6qEO7MZKduVx6xbBrRniE1i6NK9R8-uQXdQJT9o5G4,511
48
48
  redis_benchmarks_specification/setups/platforms/aws-ec2-1node-c5.4xlarge.yml,sha256=l7HsjccpebwZXeutnt3SHSETw4iiRwQ9dCDXLOySSRQ,622
49
49
  redis_benchmarks_specification/setups/topologies/topologies.yml,sha256=8s5E3xMAgawHcEh6HvIRpuyyJPsmeXmMXZYsozX8RjQ,1472
50
- redis_benchmarks_specification/test-suites/create-re-string.py,sha256=x3Z-lC0Io2alIVJx26fGYbT3fc8LnkZ5kAjBi2OnG_M,13278
51
50
  redis_benchmarks_specification/test-suites/defaults.yml,sha256=Ckte0Bv8b5L7vxWYqochiVGZnlqqw49-vGjFRsppXdg,991
52
51
  redis_benchmarks_specification/test-suites/generate.py,sha256=FApiWulMw-_2jhl1zqrLUnTnOk3Vm7YxC3oGdauhv3A,3835
53
52
  redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml,sha256=DmLQCJnDEvxD9ZhngIk-bV8C8DN8juG2iaKE19x8zU0,938
@@ -149,34 +148,9 @@ redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-el
149
148
  redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sunion.yml,sha256=szWvlcOHgWeLUH_fRvUbmAVx9GwNygQTtEDalISANh4,2359
150
149
  redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10.yml,sha256=RSkNgV5SsjdkXhM0mifi2GlwIxtiHR8N3u-ieI23BoQ,1126
151
150
  redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries.yml,sha256=w7-dOIU-eATHXCvJbSeih6Vt54oygtkXKskQdzCll3o,1100
152
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string200c-with-20KiB-values-pipeline-10.yml,sha256=Rcv7Z3HOgbMG_V5p-FCDLlaOME6XSJO_kiNeIHwZ8lo,548
153
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string200c-with-20KiB-values.yml,sha256=bgW7wz1s8a3Qw_XS9gQDarY4lyNXncHBP4IsAV-crw4,522
154
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string50c-with-20KiB-values-pipeline-10.yml,sha256=hf1zgvfOXIgxOzwmNtJcPIR-qPO4hYl4G7OCL6UrHJQ,547
155
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string50c-with-20KiB-values.yml,sha256=23nS-VnGOLCxwroidBhYcGsWo89xOz_ARHr03CUXBo8,521
156
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget200c-20KiB-pipeline-10.yml,sha256=LXTn_Q7AXm7cMh1Ir196bt-xcp843ppbr4AfIBmxdBI,786
157
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget200c-20KiB.yml,sha256=hF-zYOF7vK6QG4smmhF_bdetU_fXNqctxAlsAHHMntE,761
158
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget50c-20KiB-pipeline-10.yml,sha256=sx7HsoC_QEme38XGuawmTS4tYIdNru-5AtvqDbu7Vrw,786
159
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget50c-20KiB.yml,sha256=nr2WGd7cU8T8soxziBEr7MJWj0E6cz-9FSfO8RVsKew,761
160
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-100B-values-pipeline-10.yml,sha256=DavIVBJPd2nBlfIaovR24r8RN1mPOs8fZNarjUTtG78,544
161
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-100B-values.yml,sha256=dnoqH1AAKgYEZ8IhYfeYzKhVAY5rhELQmkqjhwbqAbU,518
162
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-1KiB-values-pipeline-10.yml,sha256=Fe-0f6YDUE3gt2hIHgmgZvYal1fIlBXGueFwSKjqIG8,545
163
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-1KiB-values.yml,sha256=nkt6g2vl4Qk-fPiCFXpuHyYknXL8yiCFh9aQVDJB7Xc,519
164
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-100B-values-pipeline-10.yml,sha256=bW_Mr-EiPw1c4OrYOn5cnuqYFv1n9vgEpDgPq_7DJMU,543
165
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-100B-values.yml,sha256=tGNlS8w9PVd1tWHI9Oq_03RMJgGKBuHzdf3YlPkgwC4,517
166
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-1KiB-values-pipeline-10.yml,sha256=biqbjwDLjiLNewp3QeEoGF2qHtHH8CpXCE4U4PNn73M,544
167
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-1KiB-values.yml,sha256=kUJdtwb7tgseO5YysUqyIMFeJrjl80VAfNGa5iSuvZ4,518
168
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-mget-1KiB.yml,sha256=saVOoaYDZTE_NlfpslU8jH_9G7wEP7ZI3pdpME6buJQ,813
169
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-100B-pipeline-10.yml,sha256=zr4gmrTFRm2xhbtLi8msq69Ws_wV4JJ5wCaxPOtvqLQ,743
170
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-100B.yml,sha256=ZmSz3tL-SOmrfc5XPHm1v8KGQ85GGUiKQANKxnY4RL0,717
171
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml,sha256=XhWXt7iT7h8nMc2G8FwDuLgaezkMdOuXsSpzejmINE0,745
172
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-1KiB.yml,sha256=dk0myDc6TD2c9ze12fUyPfEC6uI8TDAwacXqoIrdVkE,720
173
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-100B-pipeline-10.yml,sha256=vuRzOvcqJc4njXKqbC1gYrX-WxA0voNPrYe3vvPZWXQ,742
174
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-100B.yml,sha256=0NHxfi9qaEdjz3uIyC45cjtoNV7z6LynhqnFaUKKvJg,716
175
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-1KiB-pipeline-10.yml,sha256=Fy0-wIpVOPHJAHYmrdz_iWDBJ-e9jg_zSB8qrmjHb5U,744
176
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-1KiB.yml,sha256=aBVBEQ7yE1ZuC4-0PJOzlvnKVvt9fowXI0U1iaT0Dxo,719
177
151
  redis_benchmarks_specification/test-suites/template.txt,sha256=qrci_94QV9bPUJe0cL8lsUaQmX5Woz-jT-pDF0629AE,423
178
- redis_benchmarks_specification-0.1.75.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
179
- redis_benchmarks_specification-0.1.75.dist-info/METADATA,sha256=bkwujnJ3YWGfD4Mv_b_FJacuhJY78BebwJhMc0NZY4U,22533
180
- redis_benchmarks_specification-0.1.75.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
181
- redis_benchmarks_specification-0.1.75.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
182
- redis_benchmarks_specification-0.1.75.dist-info/RECORD,,
152
+ redis_benchmarks_specification-0.1.77.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
153
+ redis_benchmarks_specification-0.1.77.dist-info/METADATA,sha256=lJOxwHBhU1xrOcz_PVpe0pV7OpPYk8KCD5oMnnZ-kf0,22533
154
+ redis_benchmarks_specification-0.1.77.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
155
+ redis_benchmarks_specification-0.1.77.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
156
+ redis_benchmarks_specification-0.1.77.dist-info/RECORD,,