redis-benchmarks-specification 0.1.75__py3-none-any.whl → 0.1.76__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 +36 -4
- redis_benchmarks_specification/__cli__/args.py +36 -0
- redis_benchmarks_specification/__cli__/cli.py +127 -49
- redis_benchmarks_specification/__compare__/compare.py +0 -6
- redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py +65 -3
- {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.76.dist-info}/METADATA +2 -2
- {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.76.dist-info}/RECORD +10 -36
- redis_benchmarks_specification/test-suites/create-re-string.py +0 -286
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string200c-with-20KiB-values-pipeline-10.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string200c-with-20KiB-values.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string50c-with-20KiB-values-pipeline-10.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-load-string50c-with-20KiB-values.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget200c-20KiB-pipeline-10.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget200c-20KiB.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget50c-20KiB-pipeline-10.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-100Kkeys-string-setget50c-20KiB.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-100B-values-pipeline-10.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-100B-values.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-1KiB-values-pipeline-10.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string200c-with-1KiB-values.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-100B-values-pipeline-10.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-100B-values.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-1KiB-values-pipeline-10.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-load-string50c-with-1KiB-values.yml +0 -20
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-mget-1KiB.yml +0 -27
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-100B-pipeline-10.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-100B.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget200c-1KiB.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-100B-pipeline-10.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-100B.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-1KiB-pipeline-10.yml +0 -26
- redis_benchmarks_specification/test-suites/string/memtier_benchmark-1Mkeys-string-setget50c-1KiB.yml +0 -26
- {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.76.dist-info}/LICENSE +0 -0
- {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.76.dist-info}/WHEEL +0 -0
- {redis_benchmarks_specification-0.1.75.dist-info → redis_benchmarks_specification-0.1.76.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(
|
|
@@ -196,6 +197,7 @@ def builder_process_stream(
|
|
|
196
197
|
else:
|
|
197
198
|
streamId, testDetails = newTestInfo[0][1][0]
|
|
198
199
|
logging.info("Received work . Stream id {}.".format(streamId))
|
|
200
|
+
conn.lpush("benchmarks:{streamId}")
|
|
199
201
|
# commit = None
|
|
200
202
|
# commited_date = ""
|
|
201
203
|
# tag = ""
|
|
@@ -220,6 +222,22 @@ def builder_process_stream(
|
|
|
220
222
|
use_git_timestamp = bool(testDetails[b"use_git_timestamp"])
|
|
221
223
|
if b"git_timestamp_ms" in testDetails:
|
|
222
224
|
git_timestamp_ms = int(testDetails[b"git_timestamp_ms"].decode())
|
|
225
|
+
tests_regexp = ".*"
|
|
226
|
+
if b"tests_regexp" in testDetails:
|
|
227
|
+
tests_regexp = testDetails[b"tests_regexp"].decode()
|
|
228
|
+
tests_priority_upper_limit = 10000
|
|
229
|
+
if b"tests_priority_upper_limit" in testDetails:
|
|
230
|
+
tests_priority_upper_limit = int(
|
|
231
|
+
testDetails[b"tests_priority_upper_limit"].decode()
|
|
232
|
+
)
|
|
233
|
+
tests_priority_lower_limit = 0
|
|
234
|
+
if b"tests_priority_lower_limit" in testDetails:
|
|
235
|
+
tests_priority_lower_limit = int(
|
|
236
|
+
testDetails[b"tests_priority_lower_limit"].decode()
|
|
237
|
+
)
|
|
238
|
+
tests_groups_regexp = ".*"
|
|
239
|
+
if b"tests_groups_regexp" in testDetails:
|
|
240
|
+
tests_groups_regexp = testDetails[b"tests_groups_regexp"].decode()
|
|
223
241
|
|
|
224
242
|
for build_spec in different_build_specs:
|
|
225
243
|
build_config, id = get_build_config(builders_folder + "/" + build_spec)
|
|
@@ -333,11 +351,18 @@ def builder_process_stream(
|
|
|
333
351
|
"build_command": build_command,
|
|
334
352
|
"metadata": json.dumps(build_config_metadata),
|
|
335
353
|
"build_artifacts": ",".join(build_artifacts),
|
|
354
|
+
"tests_regexp": tests_regexp,
|
|
355
|
+
"tests_priority_upper_limit": tests_priority_upper_limit,
|
|
356
|
+
"tests_priority_lower_limit": tests_priority_lower_limit,
|
|
357
|
+
"tests_groups_regexp": tests_groups_regexp,
|
|
336
358
|
}
|
|
337
359
|
if git_branch is not None:
|
|
338
360
|
build_stream_fields["git_branch"] = git_branch
|
|
339
361
|
if git_version is not None:
|
|
340
362
|
build_stream_fields["git_version"] = git_version
|
|
363
|
+
if git_timestamp_ms is not None:
|
|
364
|
+
build_stream_fields["git_timestamp_ms"] = git_timestamp_ms
|
|
365
|
+
|
|
341
366
|
if git_timestamp_ms is not None:
|
|
342
367
|
build_stream_fields["git_timestamp_ms"] = git_timestamp_ms
|
|
343
368
|
for artifact in build_artifacts:
|
|
@@ -356,16 +381,23 @@ def builder_process_stream(
|
|
|
356
381
|
if b"platform" in testDetails:
|
|
357
382
|
build_stream_fields["platform"] = testDetails[b"platform"]
|
|
358
383
|
if result is True:
|
|
359
|
-
|
|
384
|
+
benchmark_stream_id = conn.xadd(
|
|
360
385
|
STREAM_KEYNAME_NEW_BUILD_EVENTS, build_stream_fields
|
|
361
386
|
)
|
|
362
387
|
logging.info(
|
|
363
388
|
"sucessfully built build variant {} for redis git_sha {}. Stream id: {}".format(
|
|
364
|
-
id, git_hash,
|
|
389
|
+
id, git_hash, benchmark_stream_id
|
|
365
390
|
)
|
|
366
391
|
)
|
|
392
|
+
builder_list_completed = f"builder:{streamId}:builds_completed"
|
|
393
|
+
conn.lpush(builder_list_completed, benchmark_stream_id)
|
|
394
|
+
conn.expire(builder_list_completed, REDIS_BINS_EXPIRE_SECS)
|
|
395
|
+
logging.info(
|
|
396
|
+
f"Adding information of build->benchmark stream info in list {builder_list_completed}. Adding benchmark stream id: {benchmark_stream_id}"
|
|
397
|
+
)
|
|
367
398
|
shutil.rmtree(temporary_dir, ignore_errors=True)
|
|
368
399
|
new_builds_count = new_builds_count + 1
|
|
400
|
+
build_stream_fields_arr.append(build_stream_fields)
|
|
369
401
|
ack_reply = conn.xack(
|
|
370
402
|
STREAM_KEYNAME_GH_EVENTS_COMMIT,
|
|
371
403
|
STREAM_GH_EVENTS_COMMIT_BUILDERS_CG,
|
|
@@ -387,7 +419,7 @@ def builder_process_stream(
|
|
|
387
419
|
)
|
|
388
420
|
else:
|
|
389
421
|
logging.error("Missing commit information within received message.")
|
|
390
|
-
return previous_id, new_builds_count
|
|
422
|
+
return previous_id, new_builds_count, build_stream_fields_arr
|
|
391
423
|
|
|
392
424
|
|
|
393
425
|
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
|
|
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
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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
|
-
|
|
283
|
-
|
|
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
|
-
|
|
286
|
-
|
|
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
|
-
|
|
473
|
-
|
|
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.
|
|
3
|
+
Version: 0.1.76
|
|
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 (>=
|
|
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=
|
|
7
|
+
redis_benchmarks_specification/__builder__/builder.py,sha256=1Gf9uWh6unfn-68zsbz1XEtqsp675puJ-opzSxGJ3gM,18889
|
|
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=
|
|
11
|
-
redis_benchmarks_specification/__cli__/cli.py,sha256=
|
|
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=
|
|
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=
|
|
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.
|
|
179
|
-
redis_benchmarks_specification-0.1.
|
|
180
|
-
redis_benchmarks_specification-0.1.
|
|
181
|
-
redis_benchmarks_specification-0.1.
|
|
182
|
-
redis_benchmarks_specification-0.1.
|
|
152
|
+
redis_benchmarks_specification-0.1.76.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
153
|
+
redis_benchmarks_specification-0.1.76.dist-info/METADATA,sha256=yZcN20i_hcUkprmJ--Ql9EvRDeZfTOmY1pi3IKl4Zro,22533
|
|
154
|
+
redis_benchmarks_specification-0.1.76.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
155
|
+
redis_benchmarks_specification-0.1.76.dist-info/entry_points.txt,sha256=x5WBXCZsnDRTZxV7SBGmC65L2k-ygdDOxV8vuKN00Nk,715
|
|
156
|
+
redis_benchmarks_specification-0.1.76.dist-info/RECORD,,
|