redis-benchmarks-specification 0.1.329__tar.gz → 0.1.331__tar.gz
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-0.1.329 → redis_benchmarks_specification-0.1.331}/PKG-INFO +1 -1
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/pyproject.toml +1 -1
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__common__/runner.py +1 -0
- redis_benchmarks_specification-0.1.331/redis_benchmarks_specification/__common__/suppress_warnings.py +20 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__common__/timeseries.py +12 -2
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__runner__/runner.py +114 -4
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/args.py +30 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/runners.py +3 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py +273 -4
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/LICENSE +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/Readme.md +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__api__/Readme.md +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__api__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__api__/api.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__api__/app.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__builder__/Readme.md +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__builder__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__builder__/builder.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__builder__/schema.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__cli__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__cli__/args.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__cli__/cli.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__cli__/stats.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__common__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__common__/builder_schema.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__common__/env.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__common__/github.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__common__/package.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__common__/spec.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__compare__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__compare__/args.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__compare__/compare.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__runner__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__runner__/args.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__runner__/remote_profiling.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/build_info.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/clients.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/cpuset.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/docker.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/post_processing.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__setups__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__setups__/topologies.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__spec__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__spec__/args.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__spec__/cli.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__watchdog__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__watchdog__/args.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/__watchdog__/watchdog.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/commands/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/commands/commands.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/setups/builders/gcc:15.2.0-amd64-debian-bookworm-default.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/setups/builders/gcc:15.2.0-arm64-debian-bookworm-default.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/setups/platforms/aws-ec2-1node-c5.4xlarge.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/setups/topologies/topologies.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/defaults.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/generate.py +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hgetall-50-fields-100B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-20-fields-with-1B-values-pipeline-30.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-1000B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-100B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-list-rpush-bulkload-pipeline-50.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-list-with-10B-values-pipeline-50.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-string-get-10B-pipeline-100-nokeyprefix.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Kkeys-hash-listpack-500-fields-update-20-fields-with-1B-to-64B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-100B-expire-use-case.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-expire-use-case.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-psetex-expire-use-case.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-setex-expire-use-case.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-1KiB-expire-use-case.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-4KiB-expire-use-case.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-exists-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expire-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expireat-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-count-500-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-count-5000-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-type-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-touch-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-ttl-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hexists.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hgetall-50-fields-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrby.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrbyfloat.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-rpoplpush-with-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-rpush-with-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-100B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-1KiB-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100-nokeyprefix.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-50.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-500.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-20KiB-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-listpack-with-100-elements-double-score.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-decr.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-100-nokeyprefix.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-100.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-50.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-500.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-32B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-32B.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incr-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-int-encoding-strlen-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mget-1KiB.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-with-expiration-240B-400_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-set-with-ex-100B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-100M-bits-bitmap-bitcount.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-1Billion-bits-bitmap-bitcount.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geopos.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geosearch-fromlonlat-withcoord.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-bybox.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-100B-values-cursor-count-1000.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-10B-values-cursor-count-100.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-50-fields-10B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-int-7bit-uint-lrange-all-elements-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-int-lrange-all-elements-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-llen-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-integer.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-string.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-integer.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-string.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-2K-elements-quicklist-lrange-all-elements-longs.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-hash-1K-fields-with-5B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-zset-with-5-elements-parsing-float-score.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-zset-with-5-elements-parsing-hexa-score.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-pfadd-4KB-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smismember.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-is-a-member.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-not-a-member.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smembers.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smismember.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sscan.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10M-elements-sismember-50pct-chance.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10M-elements-srem-50pct-chance.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-smembers.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-sscan-cursor-count-100.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-sscan.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1M-elements-sismember-50pct-chance.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-200K-elements-sadd-constant.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-2M-elements-sadd-increasing.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zincrby-1M-elements-pipeline-1.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-100K-elements-pipeline-1.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-10M-elements-pipeline-1.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-1M-elements-pipeline-1.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrem-5M-elements-pipeline-1.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrange-all-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zscan.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zrange-all-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zscan.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-withscores-5-elements-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-600K-elements-zrangestore-1K-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-600K-elements-zrangestore-300K-elements.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-listpack-zrank-100-elements-pipeline-1.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-eval-hset-expire.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-evalsha-hset-expire.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sdiff.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sinter.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sunion.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunion.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-400_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-40_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-2000_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-400_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-40_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-400_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-2000_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-400_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-5200_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-50-50-with-512B-values-with-expiration-pipeline-10-400_conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-connection-ping-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-100-subscribers.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-1000-subscribers.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-5000-subscribers.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-50K-subscribers-5k-conns.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-server-time-pipeline-10.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-hash-100k-sessions.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-string-100k-sessions.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-100k-sessions.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-1k-sessions.yml +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/test-suites/template.txt +0 -0
- {redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/redis_benchmarks_specification/vector-search-test-suites/vector_db_benchmark_test.yml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: redis-benchmarks-specification
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.331
|
|
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
|
{redis_benchmarks_specification-0.1.329 → redis_benchmarks_specification-0.1.331}/pyproject.toml
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "redis-benchmarks-specification"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.331"
|
|
4
4
|
description = "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
|
authors = ["filipecosta90 <filipecosta.90@gmail.com>","Redis Performance Group <performance@redis.com>"]
|
|
6
6
|
readme = "Readme.md"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Warning suppression module that should be imported first to suppress known warnings.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import warnings
|
|
6
|
+
|
|
7
|
+
# Suppress cryptography deprecation warnings from paramiko
|
|
8
|
+
warnings.filterwarnings("ignore", category=DeprecationWarning, module="paramiko")
|
|
9
|
+
warnings.filterwarnings("ignore", message=".*TripleDES.*", category=DeprecationWarning)
|
|
10
|
+
warnings.filterwarnings(
|
|
11
|
+
"ignore", message=".*cryptography.*", category=DeprecationWarning
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
# Also suppress the specific CryptographyDeprecationWarning if it exists
|
|
15
|
+
try:
|
|
16
|
+
from cryptography.utils import CryptographyDeprecationWarning
|
|
17
|
+
|
|
18
|
+
warnings.filterwarnings("ignore", category=CryptographyDeprecationWarning)
|
|
19
|
+
except ImportError:
|
|
20
|
+
pass
|
|
@@ -1183,6 +1183,7 @@ def timeseries_test_sucess_flow(
|
|
|
1183
1183
|
running_platform=None,
|
|
1184
1184
|
timeseries_dict=None,
|
|
1185
1185
|
git_hash=None,
|
|
1186
|
+
disable_target_tables=False,
|
|
1186
1187
|
):
|
|
1187
1188
|
testcase_metric_context_paths = []
|
|
1188
1189
|
version_target_tables = None
|
|
@@ -1219,7 +1220,7 @@ def timeseries_test_sucess_flow(
|
|
|
1219
1220
|
)
|
|
1220
1221
|
)
|
|
1221
1222
|
push_data_to_redistimeseries(rts, timeseries_dict)
|
|
1222
|
-
if version_target_tables is not None:
|
|
1223
|
+
if not disable_target_tables and version_target_tables is not None:
|
|
1223
1224
|
logging.info(
|
|
1224
1225
|
"There are a total of {} distinct target tables by version".format(
|
|
1225
1226
|
len(version_target_tables.keys())
|
|
@@ -1239,7 +1240,12 @@ def timeseries_test_sucess_flow(
|
|
|
1239
1240
|
rts.hset(
|
|
1240
1241
|
version_target_table_keyname, None, None, version_target_table_dict
|
|
1241
1242
|
)
|
|
1242
|
-
|
|
1243
|
+
elif disable_target_tables:
|
|
1244
|
+
logging.info(
|
|
1245
|
+
"Target tables disabled - skipping version target table creation"
|
|
1246
|
+
)
|
|
1247
|
+
|
|
1248
|
+
if not disable_target_tables and branch_target_tables is not None:
|
|
1243
1249
|
logging.info(
|
|
1244
1250
|
"There are a total of {} distinct target tables by branch".format(
|
|
1245
1251
|
len(branch_target_tables.keys())
|
|
@@ -1260,6 +1266,10 @@ def timeseries_test_sucess_flow(
|
|
|
1260
1266
|
rts.hset(
|
|
1261
1267
|
branch_target_table_keyname, None, None, branch_target_table_dict
|
|
1262
1268
|
)
|
|
1269
|
+
elif disable_target_tables:
|
|
1270
|
+
logging.info(
|
|
1271
|
+
"Target tables disabled - skipping branch target table creation"
|
|
1272
|
+
)
|
|
1263
1273
|
if test_name is not None:
|
|
1264
1274
|
if type(test_name) is str:
|
|
1265
1275
|
update_secondary_result_keys(
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
# Import warning suppression first
|
|
2
|
+
from redis_benchmarks_specification.__common__.suppress_warnings import *
|
|
3
|
+
|
|
1
4
|
import datetime
|
|
2
5
|
import json
|
|
3
6
|
import logging
|
|
@@ -19,15 +22,11 @@ from docker.models.containers import Container
|
|
|
19
22
|
from pytablewriter import CsvTableWriter, MarkdownTableWriter
|
|
20
23
|
from redisbench_admin.profilers.profilers_local import (
|
|
21
24
|
check_compatible_system_and_kernel_and_prepare_profile,
|
|
22
|
-
local_profilers_platform_checks,
|
|
23
|
-
profilers_start_if_required,
|
|
24
|
-
profilers_stop_if_required,
|
|
25
25
|
)
|
|
26
26
|
from redisbench_admin.run.common import (
|
|
27
27
|
get_start_time_vars,
|
|
28
28
|
merge_default_and_config_metrics,
|
|
29
29
|
prepare_benchmark_parameters,
|
|
30
|
-
dbconfig_keyspacelen_check,
|
|
31
30
|
)
|
|
32
31
|
|
|
33
32
|
from redis_benchmarks_specification.__common__.runner import (
|
|
@@ -158,6 +157,83 @@ def parse_redis_uri(uri):
|
|
|
158
157
|
return {}
|
|
159
158
|
|
|
160
159
|
|
|
160
|
+
def validate_benchmark_metrics(
|
|
161
|
+
results_dict, test_name, benchmark_config=None, default_metrics=None
|
|
162
|
+
):
|
|
163
|
+
"""
|
|
164
|
+
Validate benchmark metrics to ensure they contain reasonable values.
|
|
165
|
+
Fails the test if critical metrics indicate something is wrong.
|
|
166
|
+
|
|
167
|
+
Args:
|
|
168
|
+
results_dict: Dictionary containing benchmark results
|
|
169
|
+
test_name: Name of the test being validated
|
|
170
|
+
benchmark_config: Benchmark configuration (unused, for compatibility)
|
|
171
|
+
default_metrics: Default metrics configuration (unused, for compatibility)
|
|
172
|
+
|
|
173
|
+
Returns:
|
|
174
|
+
tuple: (is_valid, error_message)
|
|
175
|
+
"""
|
|
176
|
+
try:
|
|
177
|
+
# Define validation rules
|
|
178
|
+
throughput_patterns = [
|
|
179
|
+
"ops/sec",
|
|
180
|
+
"qps",
|
|
181
|
+
"totals.ops/sec",
|
|
182
|
+
"all_stats.totals.ops/sec",
|
|
183
|
+
]
|
|
184
|
+
|
|
185
|
+
latency_patterns = ["latency", "p50", "p95", "p99", "p999", "usec", "msec"]
|
|
186
|
+
|
|
187
|
+
validation_errors = []
|
|
188
|
+
|
|
189
|
+
def check_nested_dict(data, path=""):
|
|
190
|
+
"""Recursively check nested dictionary for metrics"""
|
|
191
|
+
if isinstance(data, dict):
|
|
192
|
+
for key, value in data.items():
|
|
193
|
+
current_path = f"{path}.{key}" if path else key
|
|
194
|
+
check_nested_dict(value, current_path)
|
|
195
|
+
elif isinstance(data, (int, float)):
|
|
196
|
+
metric_path_lower = path.lower()
|
|
197
|
+
|
|
198
|
+
# Check throughput metrics
|
|
199
|
+
for pattern in throughput_patterns:
|
|
200
|
+
if pattern in metric_path_lower:
|
|
201
|
+
if data <= 10: # Below 10 QPS threshold
|
|
202
|
+
validation_errors.append(
|
|
203
|
+
f"Throughput metric '{path}' has invalid value: {data} "
|
|
204
|
+
f"(below 10 QPS threshold)"
|
|
205
|
+
)
|
|
206
|
+
break
|
|
207
|
+
|
|
208
|
+
# Check latency metrics
|
|
209
|
+
for pattern in latency_patterns:
|
|
210
|
+
if pattern in metric_path_lower:
|
|
211
|
+
if data <= 0.0: # Invalid latency
|
|
212
|
+
validation_errors.append(
|
|
213
|
+
f"Latency metric '{path}' has invalid value: {data} "
|
|
214
|
+
f"(should be > 0.0)"
|
|
215
|
+
)
|
|
216
|
+
break
|
|
217
|
+
|
|
218
|
+
# Validate the results dictionary
|
|
219
|
+
check_nested_dict(results_dict)
|
|
220
|
+
|
|
221
|
+
if validation_errors:
|
|
222
|
+
error_msg = f"Test {test_name} failed metric validation:\n" + "\n".join(
|
|
223
|
+
validation_errors
|
|
224
|
+
)
|
|
225
|
+
logging.error(error_msg)
|
|
226
|
+
return False, error_msg
|
|
227
|
+
|
|
228
|
+
logging.info(f"Test {test_name} passed metric validation")
|
|
229
|
+
return True, None
|
|
230
|
+
|
|
231
|
+
except Exception as e:
|
|
232
|
+
logging.warning(f"Error during metric validation for test {test_name}: {e}")
|
|
233
|
+
# Don't fail the test if validation itself fails
|
|
234
|
+
return True, None
|
|
235
|
+
|
|
236
|
+
|
|
161
237
|
def run_local_command_with_timeout(command_str, timeout_seconds, description="command"):
|
|
162
238
|
"""
|
|
163
239
|
Run a local command with timeout support.
|
|
@@ -2753,6 +2829,23 @@ def process_self_contained_coordinator_stream(
|
|
|
2753
2829
|
"Using aggregated JSON results from multi-client execution"
|
|
2754
2830
|
)
|
|
2755
2831
|
results_dict = json.loads(client_container_stdout)
|
|
2832
|
+
|
|
2833
|
+
# Validate benchmark metrics
|
|
2834
|
+
is_valid, validation_error = validate_benchmark_metrics(
|
|
2835
|
+
results_dict, test_name, benchmark_config, default_metrics
|
|
2836
|
+
)
|
|
2837
|
+
if not is_valid:
|
|
2838
|
+
logging.error(
|
|
2839
|
+
f"Test {test_name} failed metric validation: {validation_error}"
|
|
2840
|
+
)
|
|
2841
|
+
test_result = False
|
|
2842
|
+
delete_temporary_files(
|
|
2843
|
+
temporary_dir_client=temporary_dir_client,
|
|
2844
|
+
full_result_path=full_result_path,
|
|
2845
|
+
benchmark_tool_global=benchmark_tool_global,
|
|
2846
|
+
)
|
|
2847
|
+
continue
|
|
2848
|
+
|
|
2756
2849
|
# Print results table for multi-client
|
|
2757
2850
|
print_results_table_stdout(
|
|
2758
2851
|
benchmark_config,
|
|
@@ -2815,6 +2908,23 @@ def process_self_contained_coordinator_stream(
|
|
|
2815
2908
|
"r",
|
|
2816
2909
|
) as json_file:
|
|
2817
2910
|
results_dict = json.load(json_file)
|
|
2911
|
+
|
|
2912
|
+
# Validate benchmark metrics
|
|
2913
|
+
is_valid, validation_error = validate_benchmark_metrics(
|
|
2914
|
+
results_dict, test_name, benchmark_config, default_metrics
|
|
2915
|
+
)
|
|
2916
|
+
if not is_valid:
|
|
2917
|
+
logging.error(
|
|
2918
|
+
f"Test {test_name} failed metric validation: {validation_error}"
|
|
2919
|
+
)
|
|
2920
|
+
test_result = False
|
|
2921
|
+
delete_temporary_files(
|
|
2922
|
+
temporary_dir_client=temporary_dir_client,
|
|
2923
|
+
full_result_path=full_result_path,
|
|
2924
|
+
benchmark_tool_global=benchmark_tool_global,
|
|
2925
|
+
)
|
|
2926
|
+
continue
|
|
2927
|
+
|
|
2818
2928
|
print_results_table_stdout(
|
|
2819
2929
|
benchmark_config,
|
|
2820
2930
|
default_metrics,
|
|
@@ -28,6 +28,12 @@ def create_self_contained_coordinator_args(project_name):
|
|
|
28
28
|
description=project_name,
|
|
29
29
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
30
30
|
)
|
|
31
|
+
parser.add_argument(
|
|
32
|
+
"--version",
|
|
33
|
+
action="version",
|
|
34
|
+
version=project_name,
|
|
35
|
+
help="Show version information and exit",
|
|
36
|
+
)
|
|
31
37
|
parser.add_argument("--event_stream_host", type=str, default=GH_REDIS_SERVER_HOST)
|
|
32
38
|
parser.add_argument("--event_stream_port", type=int, default=GH_REDIS_SERVER_PORT)
|
|
33
39
|
parser.add_argument("--event_stream_pass", type=str, default=GH_REDIS_SERVER_AUTH)
|
|
@@ -171,4 +177,28 @@ def create_self_contained_coordinator_args(project_name):
|
|
|
171
177
|
default="",
|
|
172
178
|
help="Filter tests to run only with the specified topology (e.g. oss-standalone)",
|
|
173
179
|
)
|
|
180
|
+
parser.add_argument(
|
|
181
|
+
"--exclusive-hardware",
|
|
182
|
+
default=False,
|
|
183
|
+
action="store_true",
|
|
184
|
+
help="Enable exclusive hardware mode. Kills all memtier processes and stops all docker containers before and after each test.",
|
|
185
|
+
)
|
|
186
|
+
parser.add_argument(
|
|
187
|
+
"--http-port",
|
|
188
|
+
type=int,
|
|
189
|
+
default=8080,
|
|
190
|
+
help="Port for HTTP server endpoints (/ping health check and /reset-queue POST endpoint).",
|
|
191
|
+
)
|
|
192
|
+
parser.add_argument(
|
|
193
|
+
"--http-auth-username",
|
|
194
|
+
type=str,
|
|
195
|
+
default=None,
|
|
196
|
+
help="Username for HTTP endpoint authentication. HTTP server is disabled if not provided.",
|
|
197
|
+
)
|
|
198
|
+
parser.add_argument(
|
|
199
|
+
"--http-auth-password",
|
|
200
|
+
type=str,
|
|
201
|
+
default=None,
|
|
202
|
+
help="Password for HTTP endpoint authentication. HTTP server is disabled if not provided.",
|
|
203
|
+
)
|
|
174
204
|
return parser
|
|
@@ -1,9 +1,14 @@
|
|
|
1
|
+
# Import warning suppression first
|
|
2
|
+
from redis_benchmarks_specification.__common__.suppress_warnings import *
|
|
3
|
+
|
|
1
4
|
import datetime
|
|
2
5
|
import json
|
|
3
6
|
import logging
|
|
4
7
|
import pathlib
|
|
5
8
|
import shutil
|
|
9
|
+
import subprocess
|
|
6
10
|
import tempfile
|
|
11
|
+
import threading
|
|
7
12
|
import traceback
|
|
8
13
|
import re
|
|
9
14
|
import docker
|
|
@@ -13,6 +18,9 @@ import os
|
|
|
13
18
|
from pathlib import Path
|
|
14
19
|
import sys
|
|
15
20
|
import time
|
|
21
|
+
import base64
|
|
22
|
+
from http.server import HTTPServer, BaseHTTPRequestHandler
|
|
23
|
+
from urllib.parse import urlparse, parse_qs
|
|
16
24
|
|
|
17
25
|
from docker.models.containers import Container
|
|
18
26
|
from redis_benchmarks_specification.__self_contained_coordinator__.post_processing import (
|
|
@@ -59,6 +67,7 @@ from redis_benchmarks_specification.__compare__.compare import (
|
|
|
59
67
|
from redis_benchmarks_specification.__runner__.runner import (
|
|
60
68
|
print_results_table_stdout,
|
|
61
69
|
prepare_memtier_benchmark_parameters,
|
|
70
|
+
validate_benchmark_metrics,
|
|
62
71
|
)
|
|
63
72
|
from redis_benchmarks_specification.__self_contained_coordinator__.args import (
|
|
64
73
|
create_self_contained_coordinator_args,
|
|
@@ -108,6 +117,192 @@ from redis_benchmarks_specification.__self_contained_coordinator__.build_info im
|
|
|
108
117
|
extract_build_info_from_streamdata,
|
|
109
118
|
)
|
|
110
119
|
|
|
120
|
+
# Global variables for HTTP server control
|
|
121
|
+
_reset_queue_requested = False
|
|
122
|
+
_exclusive_hardware = False
|
|
123
|
+
_http_auth_username = None
|
|
124
|
+
_http_auth_password = None
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class CoordinatorHTTPHandler(BaseHTTPRequestHandler):
|
|
128
|
+
"""HTTP request handler for coordinator endpoints"""
|
|
129
|
+
|
|
130
|
+
def log_message(self, format, *args):
|
|
131
|
+
"""Override to use our logging system"""
|
|
132
|
+
logging.info(f"HTTP {format % args}")
|
|
133
|
+
|
|
134
|
+
def _authenticate(self):
|
|
135
|
+
"""Check if the request is authenticated"""
|
|
136
|
+
global _http_auth_username, _http_auth_password
|
|
137
|
+
|
|
138
|
+
# Check for Authorization header
|
|
139
|
+
auth_header = self.headers.get("Authorization")
|
|
140
|
+
if not auth_header:
|
|
141
|
+
return False
|
|
142
|
+
|
|
143
|
+
# Parse Basic auth
|
|
144
|
+
try:
|
|
145
|
+
if not auth_header.startswith("Basic "):
|
|
146
|
+
return False
|
|
147
|
+
|
|
148
|
+
# Decode base64 credentials
|
|
149
|
+
encoded_credentials = auth_header[6:] # Remove 'Basic ' prefix
|
|
150
|
+
decoded_credentials = base64.b64decode(encoded_credentials).decode("utf-8")
|
|
151
|
+
username, password = decoded_credentials.split(":", 1)
|
|
152
|
+
|
|
153
|
+
# Verify credentials
|
|
154
|
+
return username == _http_auth_username and password == _http_auth_password
|
|
155
|
+
|
|
156
|
+
except Exception as e:
|
|
157
|
+
logging.warning(f"Authentication error: {e}")
|
|
158
|
+
return False
|
|
159
|
+
|
|
160
|
+
def _send_auth_required(self):
|
|
161
|
+
"""Send 401 Unauthorized response"""
|
|
162
|
+
self.send_response(401)
|
|
163
|
+
self.send_header(
|
|
164
|
+
"WWW-Authenticate", 'Basic realm="Redis Benchmarks Coordinator"'
|
|
165
|
+
)
|
|
166
|
+
self.send_header("Content-type", "application/json")
|
|
167
|
+
self.end_headers()
|
|
168
|
+
response = {
|
|
169
|
+
"error": "Authentication required",
|
|
170
|
+
"message": "Please provide valid credentials using Basic authentication",
|
|
171
|
+
}
|
|
172
|
+
self.wfile.write(json.dumps(response).encode())
|
|
173
|
+
|
|
174
|
+
def do_GET(self):
|
|
175
|
+
"""Handle GET requests"""
|
|
176
|
+
# Check authentication
|
|
177
|
+
if not self._authenticate():
|
|
178
|
+
self._send_auth_required()
|
|
179
|
+
return
|
|
180
|
+
|
|
181
|
+
parsed_path = urlparse(self.path)
|
|
182
|
+
|
|
183
|
+
if parsed_path.path == "/ping":
|
|
184
|
+
self.send_response(200)
|
|
185
|
+
self.send_header("Content-type", "application/json")
|
|
186
|
+
self.end_headers()
|
|
187
|
+
response = {
|
|
188
|
+
"status": "healthy",
|
|
189
|
+
"timestamp": datetime.datetime.utcnow().isoformat(),
|
|
190
|
+
"service": "redis-benchmarks-self-contained-coordinator",
|
|
191
|
+
}
|
|
192
|
+
self.wfile.write(json.dumps(response).encode())
|
|
193
|
+
else:
|
|
194
|
+
self.send_response(404)
|
|
195
|
+
self.send_header("Content-type", "application/json")
|
|
196
|
+
self.end_headers()
|
|
197
|
+
self.wfile.write(json.dumps({"error": "Not found"}).encode())
|
|
198
|
+
|
|
199
|
+
def do_POST(self):
|
|
200
|
+
"""Handle POST requests"""
|
|
201
|
+
# Check authentication
|
|
202
|
+
if not self._authenticate():
|
|
203
|
+
self._send_auth_required()
|
|
204
|
+
return
|
|
205
|
+
|
|
206
|
+
global _reset_queue_requested
|
|
207
|
+
|
|
208
|
+
parsed_path = urlparse(self.path)
|
|
209
|
+
|
|
210
|
+
if parsed_path.path == "/reset-queue":
|
|
211
|
+
try:
|
|
212
|
+
# Read request body
|
|
213
|
+
content_length = int(self.headers.get("Content-Length", 0))
|
|
214
|
+
if content_length > 0:
|
|
215
|
+
post_data = self.rfile.read(content_length)
|
|
216
|
+
try:
|
|
217
|
+
request_data = json.loads(post_data.decode())
|
|
218
|
+
except json.JSONDecodeError:
|
|
219
|
+
request_data = {}
|
|
220
|
+
else:
|
|
221
|
+
request_data = {}
|
|
222
|
+
|
|
223
|
+
# Set the reset flag
|
|
224
|
+
_reset_queue_requested = True
|
|
225
|
+
logging.info("Queue reset requested via HTTP endpoint")
|
|
226
|
+
|
|
227
|
+
self.send_response(200)
|
|
228
|
+
self.send_header("Content-type", "application/json")
|
|
229
|
+
self.end_headers()
|
|
230
|
+
response = {
|
|
231
|
+
"status": "success",
|
|
232
|
+
"message": "Queue reset requested",
|
|
233
|
+
"timestamp": datetime.datetime.utcnow().isoformat(),
|
|
234
|
+
}
|
|
235
|
+
self.wfile.write(json.dumps(response).encode())
|
|
236
|
+
|
|
237
|
+
except Exception as e:
|
|
238
|
+
logging.error(f"Error handling reset-queue request: {e}")
|
|
239
|
+
self.send_response(500)
|
|
240
|
+
self.send_header("Content-type", "application/json")
|
|
241
|
+
self.end_headers()
|
|
242
|
+
self.wfile.write(json.dumps({"error": str(e)}).encode())
|
|
243
|
+
else:
|
|
244
|
+
self.send_response(404)
|
|
245
|
+
self.send_header("Content-type", "application/json")
|
|
246
|
+
self.end_headers()
|
|
247
|
+
self.wfile.write(json.dumps({"error": "Not found"}).encode())
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
def start_http_server(port=8080):
|
|
251
|
+
"""Start the HTTP server in a separate thread"""
|
|
252
|
+
|
|
253
|
+
def run_server():
|
|
254
|
+
try:
|
|
255
|
+
server = HTTPServer(("0.0.0.0", port), CoordinatorHTTPHandler)
|
|
256
|
+
logging.info(f"Starting HTTP server on port {port}")
|
|
257
|
+
logging.info(f"Available endpoints:")
|
|
258
|
+
logging.info(f" GET /ping - Health check")
|
|
259
|
+
logging.info(
|
|
260
|
+
f" POST /reset-queue - Reset pending streams and skip running tests"
|
|
261
|
+
)
|
|
262
|
+
server.serve_forever()
|
|
263
|
+
except Exception as e:
|
|
264
|
+
logging.error(f"HTTP server error: {e}")
|
|
265
|
+
|
|
266
|
+
server_thread = threading.Thread(target=run_server, daemon=True)
|
|
267
|
+
server_thread.start()
|
|
268
|
+
return server_thread
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def cleanup_system_processes():
|
|
272
|
+
"""Clean up memtier processes and docker containers for exclusive hardware mode"""
|
|
273
|
+
global _exclusive_hardware
|
|
274
|
+
|
|
275
|
+
if not _exclusive_hardware:
|
|
276
|
+
return
|
|
277
|
+
|
|
278
|
+
logging.info("Exclusive hardware mode: Cleaning up system processes")
|
|
279
|
+
|
|
280
|
+
try:
|
|
281
|
+
# Kill all memtier_benchmark processes
|
|
282
|
+
logging.info("Killing all memtier_benchmark processes")
|
|
283
|
+
subprocess.run(["pkill", "-f", "memtier_benchmark"], check=False)
|
|
284
|
+
|
|
285
|
+
# Stop all docker containers
|
|
286
|
+
logging.info("Stopping all docker containers")
|
|
287
|
+
docker_client = docker.from_env()
|
|
288
|
+
containers = docker_client.containers.list()
|
|
289
|
+
for container in containers:
|
|
290
|
+
try:
|
|
291
|
+
logging.info(
|
|
292
|
+
f"Stopping container: {container.name} ({container.id[:12]})"
|
|
293
|
+
)
|
|
294
|
+
container.stop(timeout=10)
|
|
295
|
+
container.remove(force=True)
|
|
296
|
+
except Exception as e:
|
|
297
|
+
logging.warning(f"Error stopping container {container.id[:12]}: {e}")
|
|
298
|
+
|
|
299
|
+
# Wait a moment for cleanup to complete
|
|
300
|
+
time.sleep(2)
|
|
301
|
+
logging.info("System cleanup completed")
|
|
302
|
+
|
|
303
|
+
except Exception as e:
|
|
304
|
+
logging.error(f"Error during system cleanup: {e}")
|
|
305
|
+
|
|
111
306
|
|
|
112
307
|
def print_directory_logs(directory_path, description=""):
|
|
113
308
|
"""Print all .log files in a directory for debugging purposes."""
|
|
@@ -157,6 +352,8 @@ from redis_benchmarks_specification.__self_contained_coordinator__.docker import
|
|
|
157
352
|
|
|
158
353
|
|
|
159
354
|
def main():
|
|
355
|
+
global _exclusive_hardware, _http_auth_username, _http_auth_password
|
|
356
|
+
|
|
160
357
|
_, _, project_version = populate_with_poetry_data()
|
|
161
358
|
project_name = "redis-benchmarks-spec runner(self-contained)"
|
|
162
359
|
parser = create_self_contained_coordinator_args(
|
|
@@ -164,6 +361,7 @@ def main():
|
|
|
164
361
|
)
|
|
165
362
|
args = parser.parse_args()
|
|
166
363
|
|
|
364
|
+
# Configure logging first, before any logging calls
|
|
167
365
|
if args.logname is not None:
|
|
168
366
|
print("Writting log to {}".format(args.logname))
|
|
169
367
|
logging.basicConfig(
|
|
@@ -180,6 +378,23 @@ def main():
|
|
|
180
378
|
level=LOG_LEVEL,
|
|
181
379
|
datefmt=LOG_DATEFMT,
|
|
182
380
|
)
|
|
381
|
+
|
|
382
|
+
# Set global exclusive hardware flag
|
|
383
|
+
_exclusive_hardware = args.exclusive_hardware
|
|
384
|
+
if _exclusive_hardware:
|
|
385
|
+
logging.info("Exclusive hardware mode enabled")
|
|
386
|
+
|
|
387
|
+
# Set HTTP authentication credentials and start server only if credentials are provided
|
|
388
|
+
_http_auth_username = args.http_auth_username
|
|
389
|
+
_http_auth_password = args.http_auth_password
|
|
390
|
+
|
|
391
|
+
if _http_auth_username and _http_auth_password:
|
|
392
|
+
logging.info(
|
|
393
|
+
"Starting HTTP server with authentication on port {}".format(args.http_port)
|
|
394
|
+
)
|
|
395
|
+
start_http_server(args.http_port)
|
|
396
|
+
else:
|
|
397
|
+
logging.info("HTTP server disabled - no authentication credentials provided")
|
|
183
398
|
logging.info(get_version_string(project_name, project_version))
|
|
184
399
|
topologies_folder = os.path.abspath(args.setups_folder + "/topologies")
|
|
185
400
|
logging.info("Using topologies folder dir {}".format(topologies_folder))
|
|
@@ -750,7 +965,7 @@ def process_self_contained_coordinator_stream(
|
|
|
750
965
|
github_event_conn.expire(
|
|
751
966
|
stream_test_list_pending, REDIS_BINS_EXPIRE_SECS
|
|
752
967
|
)
|
|
753
|
-
logging.
|
|
968
|
+
logging.debug(
|
|
754
969
|
f"Added test named {test_name} to the pending test list in key {stream_test_list_pending}"
|
|
755
970
|
)
|
|
756
971
|
|
|
@@ -781,6 +996,22 @@ def process_self_contained_coordinator_stream(
|
|
|
781
996
|
)
|
|
782
997
|
|
|
783
998
|
for test_file in filtered_test_files:
|
|
999
|
+
# Check if queue reset was requested
|
|
1000
|
+
global _reset_queue_requested
|
|
1001
|
+
if _reset_queue_requested:
|
|
1002
|
+
logging.info(
|
|
1003
|
+
"Queue reset requested. Skipping remaining tests and clearing queues."
|
|
1004
|
+
)
|
|
1005
|
+
# Clear all pending tests from the queue
|
|
1006
|
+
github_event_conn.delete(stream_test_list_pending)
|
|
1007
|
+
github_event_conn.delete(stream_test_list_running)
|
|
1008
|
+
logging.info("Cleared pending and running test queues")
|
|
1009
|
+
_reset_queue_requested = False
|
|
1010
|
+
break
|
|
1011
|
+
|
|
1012
|
+
# Clean up system processes if in exclusive hardware mode
|
|
1013
|
+
cleanup_system_processes()
|
|
1014
|
+
|
|
784
1015
|
redis_containers = []
|
|
785
1016
|
client_containers = []
|
|
786
1017
|
with open(test_file, "r") as stream:
|
|
@@ -794,8 +1025,8 @@ def process_self_contained_coordinator_stream(
|
|
|
794
1025
|
github_event_conn.expire(
|
|
795
1026
|
stream_test_list_running, REDIS_BINS_EXPIRE_SECS
|
|
796
1027
|
)
|
|
797
|
-
logging.
|
|
798
|
-
f"Added test named {test_name} to the
|
|
1028
|
+
logging.debug(
|
|
1029
|
+
f"Added test named {test_name} to the running test list in key {stream_test_list_running}"
|
|
799
1030
|
)
|
|
800
1031
|
(
|
|
801
1032
|
_,
|
|
@@ -1250,6 +1481,23 @@ def process_self_contained_coordinator_stream(
|
|
|
1250
1481
|
results_dict = post_process_vector_db(
|
|
1251
1482
|
temporary_dir_client
|
|
1252
1483
|
)
|
|
1484
|
+
|
|
1485
|
+
# Validate benchmark metrics for vector-db-benchmark
|
|
1486
|
+
is_valid, validation_error = (
|
|
1487
|
+
validate_benchmark_metrics(
|
|
1488
|
+
results_dict,
|
|
1489
|
+
test_name,
|
|
1490
|
+
benchmark_config,
|
|
1491
|
+
default_metrics,
|
|
1492
|
+
)
|
|
1493
|
+
)
|
|
1494
|
+
if not is_valid:
|
|
1495
|
+
logging.error(
|
|
1496
|
+
f"Test {test_name} failed metric validation: {validation_error}"
|
|
1497
|
+
)
|
|
1498
|
+
test_result = False
|
|
1499
|
+
failed_tests += 1
|
|
1500
|
+
continue
|
|
1253
1501
|
else:
|
|
1254
1502
|
post_process_benchmark_results(
|
|
1255
1503
|
benchmark_tool,
|
|
@@ -1276,6 +1524,24 @@ def process_self_contained_coordinator_stream(
|
|
|
1276
1524
|
"r",
|
|
1277
1525
|
) as json_file:
|
|
1278
1526
|
results_dict = json.load(json_file)
|
|
1527
|
+
|
|
1528
|
+
# Validate benchmark metrics
|
|
1529
|
+
is_valid, validation_error = (
|
|
1530
|
+
validate_benchmark_metrics(
|
|
1531
|
+
results_dict,
|
|
1532
|
+
test_name,
|
|
1533
|
+
benchmark_config,
|
|
1534
|
+
default_metrics,
|
|
1535
|
+
)
|
|
1536
|
+
)
|
|
1537
|
+
if not is_valid:
|
|
1538
|
+
logging.error(
|
|
1539
|
+
f"Test {test_name} failed metric validation: {validation_error}"
|
|
1540
|
+
)
|
|
1541
|
+
test_result = False
|
|
1542
|
+
failed_tests += 1
|
|
1543
|
+
continue
|
|
1544
|
+
|
|
1279
1545
|
print_results_table_stdout(
|
|
1280
1546
|
benchmark_config,
|
|
1281
1547
|
default_metrics,
|
|
@@ -1430,6 +1696,9 @@ def process_self_contained_coordinator_stream(
|
|
|
1430
1696
|
|
|
1431
1697
|
overall_result &= test_result
|
|
1432
1698
|
|
|
1699
|
+
# Clean up system processes after test completion if in exclusive hardware mode
|
|
1700
|
+
cleanup_system_processes()
|
|
1701
|
+
|
|
1433
1702
|
github_event_conn.lrem(stream_test_list_running, 1, test_name)
|
|
1434
1703
|
github_event_conn.lpush(stream_test_list_completed, test_name)
|
|
1435
1704
|
github_event_conn.expire(
|
|
@@ -1592,7 +1861,7 @@ def process_self_contained_coordinator_stream(
|
|
|
1592
1861
|
e.__str__()
|
|
1593
1862
|
)
|
|
1594
1863
|
)
|
|
1595
|
-
logging.
|
|
1864
|
+
logging.debug(
|
|
1596
1865
|
f"Added test named {test_name} to the completed test list in key {stream_test_list_completed}"
|
|
1597
1866
|
)
|
|
1598
1867
|
else:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|