redis-benchmarks-specification 0.1.208__tar.gz → 0.1.210__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.208 → redis_benchmarks_specification-0.1.210}/PKG-INFO +12 -4
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/Readme.md +6 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/pyproject.toml +28 -8
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__builder__/builder.py +130 -64
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__cli__/args.py +13 -1
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__cli__/cli.py +66 -3
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__common__/env.py +1 -1
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__common__/github.py +7 -11
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__common__/runner.py +15 -3
- redis_benchmarks_specification-0.1.210/redis_benchmarks_specification/__common__/timeseries.py +1551 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__compare__/compare.py +123 -36
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__runner__/runner.py +20 -6
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/args.py +0 -5
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/build_info.py +5 -3
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/docker.py +2 -2
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py +4 -1
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/runners.py +6 -2
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py +153 -52
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-1000B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-100B-expire-use-case.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-expire-use-case.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-1KiB-expire-use-case.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-4KiB-expire-use-case.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-exists-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expire-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expireat-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-touch-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-ttl-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hexists.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrby.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-100B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-1KiB-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values.yml +2 -5
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-200KiB-values.yml +2 -5
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-20KiB-values.yml +2 -5
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-2MB-values.yml +2 -5
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-decr.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-200KiB.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-20KiB.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-2MB.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mget-1KiB.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-bybox.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-pfadd-4KB-values-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smismember.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smembers.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smismember.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-smembers.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-200K-elements-sadd-constant.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-2M-elements-sadd-increasing.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zincrby-1M-elements-pipeline-1.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-1M-elements-pipeline-1.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrem-5M-elements-pipeline-1.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrange-all-elements.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zrange-all-elements.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-eval-hset-expire.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-evalsha-hset-expire.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sdiff.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sinter.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sunion.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries.yml +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/template.txt +1 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/LICENSE +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__api__/Readme.md +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__api__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__api__/api.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__api__/app.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__builder__/Readme.md +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__builder__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__builder__/schema.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__cli__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__cli__/stats.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__common__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__common__/builder_schema.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__common__/package.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__common__/spec.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__compare__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__compare__/args.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__runner__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__runner__/args.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/clients.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__self_contained_coordinator__/cpuset.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__setups__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__setups__/topologies.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__spec__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__spec__/args.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__spec__/cli.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__watchdog__/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__watchdog__/args.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/__watchdog__/watchdog.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/commands/__init__.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/commands/commands.py +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/setups/builders/gcc:8.5.0-amd64-debian-buster-default.yml +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/setups/builders/gcc:8.5.0-arm64-debian-buster-default.yml +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/setups/platforms/aws-ec2-1node-c5.4xlarge.yml +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/setups/topologies/topologies.yml +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/defaults.yml +0 -0
- {redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/redis_benchmarks_specification/test-suites/generate.py +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: redis-benchmarks-specification
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.210
|
|
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
|
|
7
|
-
Requires-Python: >=3.
|
|
7
|
+
Requires-Python: >=3.10.0,<4.0.0
|
|
8
8
|
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.10
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -18,12 +17,15 @@ Requires-Dist: PyYAML (>=6.0,<7.0)
|
|
|
18
17
|
Requires-Dist: argparse (>=1.4.0,<2.0.0)
|
|
19
18
|
Requires-Dist: docker (>=7.1.0,<8.0.0)
|
|
20
19
|
Requires-Dist: flask-restx (>=0.5.0,<0.6.0)
|
|
20
|
+
Requires-Dist: jsonpath-ng (>=1.6.1,<2.0.0)
|
|
21
21
|
Requires-Dist: marshmallow (>=3.12.2,<4.0.0)
|
|
22
22
|
Requires-Dist: node-semver (>=0.8.1,<0.9.0)
|
|
23
|
+
Requires-Dist: numpy (>=2.0.0,<3.0.0)
|
|
23
24
|
Requires-Dist: oyaml (>=1.0,<2.0)
|
|
25
|
+
Requires-Dist: pandas (>=2.1.2,<3.0.0)
|
|
24
26
|
Requires-Dist: psutil (>=5.9.4,<6.0.0)
|
|
25
27
|
Requires-Dist: redis (>=4.2.0,<5.0.0)
|
|
26
|
-
Requires-Dist: redisbench-admin (>=0.
|
|
28
|
+
Requires-Dist: redisbench-admin (>=0.11.1,<0.12.0)
|
|
27
29
|
Requires-Dist: semver (>=2.13.0,<3.0.0)
|
|
28
30
|
Requires-Dist: typed-ast (>=1.5.0,<2.0.0)
|
|
29
31
|
Description-Content-Type: text/markdown
|
|
@@ -419,6 +421,12 @@ To run a specific test:
|
|
|
419
421
|
$ tox -- utils/tests/test_runner.py
|
|
420
422
|
```
|
|
421
423
|
|
|
424
|
+
To run a specific test with verbose logging:
|
|
425
|
+
|
|
426
|
+
```sh
|
|
427
|
+
$ tox -- -vv --log-cli-level=INFO utils/tests/test_runner.py
|
|
428
|
+
```
|
|
429
|
+
|
|
422
430
|
## License
|
|
423
431
|
|
|
424
432
|
redis-benchmarks-specification is distributed under the BSD3 license - see [LICENSE](LICENSE)
|
|
@@ -389,6 +389,12 @@ To run a specific test:
|
|
|
389
389
|
$ tox -- utils/tests/test_runner.py
|
|
390
390
|
```
|
|
391
391
|
|
|
392
|
+
To run a specific test with verbose logging:
|
|
393
|
+
|
|
394
|
+
```sh
|
|
395
|
+
$ tox -- -vv --log-cli-level=INFO utils/tests/test_runner.py
|
|
396
|
+
```
|
|
397
|
+
|
|
392
398
|
## License
|
|
393
399
|
|
|
394
400
|
redis-benchmarks-specification is distributed under the BSD3 license - see [LICENSE](LICENSE)
|
{redis_benchmarks_specification-0.1.208 → redis_benchmarks_specification-0.1.210}/pyproject.toml
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "redis-benchmarks-specification"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.210"
|
|
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"
|
|
7
7
|
|
|
8
8
|
[tool.poetry.dependencies]
|
|
9
|
-
python = "
|
|
9
|
+
python = "^3.10.0"
|
|
10
10
|
Flask = "^2.0.3"
|
|
11
11
|
flask-restx = "^0.5.0"
|
|
12
12
|
redis = "^4.2.0"
|
|
@@ -15,7 +15,7 @@ argparse = "^1.4.0"
|
|
|
15
15
|
Flask-HTTPAuth = "^4.4.0"
|
|
16
16
|
PyYAML = "^6.0"
|
|
17
17
|
docker = "^7.1.0"
|
|
18
|
-
redisbench-admin = "^0.
|
|
18
|
+
redisbench-admin = "^0.11.1"
|
|
19
19
|
psutil = "^5.9.4"
|
|
20
20
|
PyGithub = "^1.55"
|
|
21
21
|
GitPython = "^3.1.20"
|
|
@@ -23,13 +23,33 @@ semver = "^2.13.0"
|
|
|
23
23
|
node-semver = "^0.8.1"
|
|
24
24
|
typed-ast = "^1.5.0"
|
|
25
25
|
oyaml = "^1.0"
|
|
26
|
+
pandas = "^2.1.2"
|
|
27
|
+
numpy = "^2.0.0"
|
|
28
|
+
jsonpath-ng = "^1.6.1"
|
|
26
29
|
|
|
27
30
|
[tool.poetry.dev-dependencies]
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
click = "8.1.7"
|
|
32
|
+
black = "24.4.2"
|
|
33
|
+
flake8 = "7.1.0"
|
|
34
|
+
flynt = "~0.69.0"
|
|
35
|
+
isort = "5.10.1"
|
|
36
|
+
mock = "4.0.3"
|
|
37
|
+
packaging = ">=20.4"
|
|
38
|
+
pytest = "8.2.2"
|
|
39
|
+
pytest-timeout = "2.3.1"
|
|
40
|
+
pytest-asyncio = ">=0.23.7"
|
|
41
|
+
tox = ">=4.16.0"
|
|
42
|
+
tox-docker = ">=5.0.0"
|
|
43
|
+
invoke = "2.2.0"
|
|
44
|
+
pytest-cov = ">=5.0.0"
|
|
45
|
+
vulture = ">=2.3.0"
|
|
46
|
+
ujson = ">=4.2.0"
|
|
47
|
+
wheel = ">=0.43.0"
|
|
48
|
+
docker = ">=7.1.0"
|
|
49
|
+
|
|
50
|
+
[tool.poetry.group.dev.dependencies]
|
|
51
|
+
#tox-poetry-installer = {extras = ["poetry"], version = "^0.10.3"}
|
|
52
|
+
docker = "^7.1.0"
|
|
33
53
|
|
|
34
54
|
[build-system]
|
|
35
55
|
requires = ["poetry_core>=1.0.0"]
|
|
@@ -312,28 +312,7 @@ def builder_process_stream(
|
|
|
312
312
|
if "run_image" in build_config:
|
|
313
313
|
run_image = build_config["run_image"]
|
|
314
314
|
if docker_air_gap:
|
|
315
|
-
|
|
316
|
-
logging.info(
|
|
317
|
-
"DOCKER AIR GAP: storing run image named: {} in redis key {}".format(
|
|
318
|
-
run_image, airgap_key
|
|
319
|
-
)
|
|
320
|
-
)
|
|
321
|
-
run_image_binary_stream = io.BytesIO()
|
|
322
|
-
run_image_docker = docker_client.images.get(run_image)
|
|
323
|
-
for chunk in run_image_docker.save():
|
|
324
|
-
run_image_binary_stream.write(chunk)
|
|
325
|
-
# 7 days expire
|
|
326
|
-
binary_exp_secs = 24 * 60 * 60 * 7
|
|
327
|
-
res_airgap = conn.set(
|
|
328
|
-
airgap_key,
|
|
329
|
-
run_image_binary_stream.getbuffer(),
|
|
330
|
-
ex=binary_exp_secs,
|
|
331
|
-
)
|
|
332
|
-
logging.info(
|
|
333
|
-
"DOCKER AIR GAP: result of set bin data to {}: {}".format(
|
|
334
|
-
airgap_key, res_airgap
|
|
335
|
-
)
|
|
336
|
-
)
|
|
315
|
+
store_airgap_image_redis(conn, docker_client, run_image)
|
|
337
316
|
|
|
338
317
|
compiler = build_config["compiler"]
|
|
339
318
|
cpp_compiler = build_config["cpp_compiler"]
|
|
@@ -429,48 +408,32 @@ def builder_process_stream(
|
|
|
429
408
|
build_duration = build_end_datetime - build_start_datetime
|
|
430
409
|
build_duration_secs = build_duration.total_seconds()
|
|
431
410
|
|
|
432
|
-
build_stream_fields =
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
build_stream_fields["git_timestamp_ms"] = git_timestamp_ms
|
|
459
|
-
for artifact in build_artifacts:
|
|
460
|
-
bin_key = "zipped:artifacts:{}:{}.zip".format(id, artifact)
|
|
461
|
-
bin_artifact = open(
|
|
462
|
-
"{}src/{}".format(redis_temporary_dir, artifact), "rb"
|
|
463
|
-
).read()
|
|
464
|
-
bin_artifact_len = len(bytes(bin_artifact))
|
|
465
|
-
assert bin_artifact_len > 0
|
|
466
|
-
conn.set(bin_key, bytes(bin_artifact), ex=REDIS_BINS_EXPIRE_SECS)
|
|
467
|
-
build_stream_fields[artifact] = bin_key
|
|
468
|
-
build_stream_fields[
|
|
469
|
-
"{}_len_bytes".format(artifact)
|
|
470
|
-
] = bin_artifact_len
|
|
471
|
-
result = True
|
|
472
|
-
if b"platform" in testDetails:
|
|
473
|
-
build_stream_fields["platform"] = testDetails[b"platform"]
|
|
411
|
+
build_stream_fields, result = generate_benchmark_stream_request(
|
|
412
|
+
id,
|
|
413
|
+
conn,
|
|
414
|
+
run_image,
|
|
415
|
+
build_arch,
|
|
416
|
+
testDetails,
|
|
417
|
+
build_os,
|
|
418
|
+
build_artifacts,
|
|
419
|
+
build_command,
|
|
420
|
+
build_config_metadata,
|
|
421
|
+
build_image,
|
|
422
|
+
build_vars_str,
|
|
423
|
+
compiler,
|
|
424
|
+
cpp_compiler,
|
|
425
|
+
git_branch,
|
|
426
|
+
git_hash,
|
|
427
|
+
git_timestamp_ms,
|
|
428
|
+
git_version,
|
|
429
|
+
pull_request,
|
|
430
|
+
redis_temporary_dir,
|
|
431
|
+
tests_groups_regexp,
|
|
432
|
+
tests_priority_lower_limit,
|
|
433
|
+
tests_priority_upper_limit,
|
|
434
|
+
tests_regexp,
|
|
435
|
+
use_git_timestamp,
|
|
436
|
+
)
|
|
474
437
|
if result is True:
|
|
475
438
|
benchmark_stream_id = conn.xadd(
|
|
476
439
|
STREAM_KEYNAME_NEW_BUILD_EVENTS, build_stream_fields
|
|
@@ -551,6 +514,109 @@ def builder_process_stream(
|
|
|
551
514
|
return previous_id, new_builds_count, build_stream_fields_arr
|
|
552
515
|
|
|
553
516
|
|
|
517
|
+
def store_airgap_image_redis(conn, docker_client, run_image):
|
|
518
|
+
airgap_key = "docker:air-gap:{}".format(run_image)
|
|
519
|
+
logging.info(
|
|
520
|
+
"DOCKER AIR GAP: storing run image named: {} in redis key {}".format(
|
|
521
|
+
run_image, airgap_key
|
|
522
|
+
)
|
|
523
|
+
)
|
|
524
|
+
run_image_binary_stream = io.BytesIO()
|
|
525
|
+
run_image_docker = docker_client.images.get(run_image)
|
|
526
|
+
for chunk in run_image_docker.save():
|
|
527
|
+
run_image_binary_stream.write(chunk)
|
|
528
|
+
# 7 days expire
|
|
529
|
+
binary_exp_secs = 24 * 60 * 60 * 7
|
|
530
|
+
res_airgap = conn.set(
|
|
531
|
+
airgap_key,
|
|
532
|
+
run_image_binary_stream.getbuffer(),
|
|
533
|
+
ex=binary_exp_secs,
|
|
534
|
+
)
|
|
535
|
+
logging.info(
|
|
536
|
+
"DOCKER AIR GAP: result of set bin data to {}: {}".format(
|
|
537
|
+
airgap_key, res_airgap
|
|
538
|
+
)
|
|
539
|
+
)
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
def generate_benchmark_stream_request(
|
|
543
|
+
id,
|
|
544
|
+
conn,
|
|
545
|
+
run_image,
|
|
546
|
+
build_arch,
|
|
547
|
+
testDetails,
|
|
548
|
+
build_os,
|
|
549
|
+
build_artifacts=[],
|
|
550
|
+
build_command=None,
|
|
551
|
+
build_config_metadata=None,
|
|
552
|
+
build_image=None,
|
|
553
|
+
build_vars_str=None,
|
|
554
|
+
compiler=None,
|
|
555
|
+
cpp_compiler=None,
|
|
556
|
+
git_branch=None,
|
|
557
|
+
git_hash=None,
|
|
558
|
+
git_timestamp_ms=None,
|
|
559
|
+
git_version=None,
|
|
560
|
+
pull_request=None,
|
|
561
|
+
redis_temporary_dir=None,
|
|
562
|
+
tests_groups_regexp=".*",
|
|
563
|
+
tests_priority_lower_limit=0,
|
|
564
|
+
tests_priority_upper_limit=10000,
|
|
565
|
+
tests_regexp=".*",
|
|
566
|
+
use_git_timestamp=False,
|
|
567
|
+
):
|
|
568
|
+
build_stream_fields = {
|
|
569
|
+
"id": id,
|
|
570
|
+
"use_git_timestamp": str(use_git_timestamp),
|
|
571
|
+
"run_image": run_image,
|
|
572
|
+
"os": build_os,
|
|
573
|
+
"arch": build_arch,
|
|
574
|
+
"build_artifacts": ",".join(build_artifacts),
|
|
575
|
+
"tests_regexp": tests_regexp,
|
|
576
|
+
"tests_priority_upper_limit": tests_priority_upper_limit,
|
|
577
|
+
"tests_priority_lower_limit": tests_priority_lower_limit,
|
|
578
|
+
"tests_groups_regexp": tests_groups_regexp,
|
|
579
|
+
}
|
|
580
|
+
if build_config_metadata is not None:
|
|
581
|
+
build_stream_fields["metadata"] = json.dumps(build_config_metadata)
|
|
582
|
+
if compiler is not None:
|
|
583
|
+
build_stream_fields["compiler"] = compiler
|
|
584
|
+
if cpp_compiler is not None:
|
|
585
|
+
build_stream_fields["cpp_compiler"] = cpp_compiler
|
|
586
|
+
if build_vars_str is not None:
|
|
587
|
+
build_stream_fields["build_vars"] = build_vars_str
|
|
588
|
+
if build_command is not None:
|
|
589
|
+
build_stream_fields["build_command"] = build_command
|
|
590
|
+
if build_image is not None:
|
|
591
|
+
build_stream_fields["build_image"] = build_image
|
|
592
|
+
else:
|
|
593
|
+
build_stream_fields["build_image"] = run_image
|
|
594
|
+
if git_hash is not None:
|
|
595
|
+
build_stream_fields["git_hash"] = git_hash
|
|
596
|
+
if pull_request is not None:
|
|
597
|
+
build_stream_fields["pull_request"] = pull_request
|
|
598
|
+
if git_branch is not None:
|
|
599
|
+
build_stream_fields["git_branch"] = git_branch
|
|
600
|
+
if git_version is not None:
|
|
601
|
+
build_stream_fields["git_version"] = git_version
|
|
602
|
+
if git_timestamp_ms is not None:
|
|
603
|
+
build_stream_fields["git_timestamp_ms"] = git_timestamp_ms
|
|
604
|
+
for artifact in build_artifacts:
|
|
605
|
+
bin_key = "zipped:artifacts:{}:{}.zip".format(id, artifact)
|
|
606
|
+
bin_artifact = open(
|
|
607
|
+
"{}src/{}".format(redis_temporary_dir, artifact), "rb"
|
|
608
|
+
).read()
|
|
609
|
+
bin_artifact_len = len(bytes(bin_artifact))
|
|
610
|
+
assert bin_artifact_len > 0
|
|
611
|
+
conn.set(bin_key, bytes(bin_artifact), ex=REDIS_BINS_EXPIRE_SECS)
|
|
612
|
+
build_stream_fields[artifact] = bin_key
|
|
613
|
+
build_stream_fields["{}_len_bytes".format(artifact)] = bin_artifact_len
|
|
614
|
+
result = True
|
|
615
|
+
if b"platform" in testDetails:
|
|
616
|
+
build_stream_fields["platform"] = testDetails[b"platform"]
|
|
617
|
+
return build_stream_fields, result
|
|
618
|
+
|
|
619
|
+
|
|
554
620
|
def build_spec_image_prefetch(builders_folder, different_build_specs):
|
|
555
621
|
logging.info("checking build spec requirements")
|
|
556
622
|
already_checked_images = []
|
|
@@ -21,6 +21,7 @@ START_TIME_NOW_UTC, _, _ = get_start_time_vars()
|
|
|
21
21
|
START_TIME_LAST_YEAR_UTC = START_TIME_NOW_UTC - datetime.timedelta(days=90)
|
|
22
22
|
CLI_TOOL_STATS = "stats"
|
|
23
23
|
CLI_TOOL_TRIGGER = "trigger"
|
|
24
|
+
CLI_TOOL_DOCKERHUB = "dockerhub"
|
|
24
25
|
PERFORMANCE_GH_TOKEN = os.getenv("PERFORMANCE_GH_TOKEN", None)
|
|
25
26
|
|
|
26
27
|
|
|
@@ -109,7 +110,7 @@ def spec_cli_args(parser):
|
|
|
109
110
|
type=str,
|
|
110
111
|
default=CLI_TOOL_TRIGGER,
|
|
111
112
|
help="subtool to use. One of '{}' ".format(
|
|
112
|
-
",".join([CLI_TOOL_STATS, CLI_TOOL_TRIGGER])
|
|
113
|
+
",".join([CLI_TOOL_STATS, CLI_TOOL_TRIGGER, CLI_TOOL_DOCKERHUB])
|
|
113
114
|
),
|
|
114
115
|
)
|
|
115
116
|
parser.add_argument("--gh_token", type=str, default=GH_TOKEN)
|
|
@@ -129,7 +130,18 @@ def spec_cli_args(parser):
|
|
|
129
130
|
parser.add_argument("--redis_repo", type=str, default=None)
|
|
130
131
|
parser.add_argument("--gh_org", type=str, default="redis")
|
|
131
132
|
parser.add_argument("--gh_repo", type=str, default="redis")
|
|
133
|
+
parser.add_argument("--server_name", type=str, default=None)
|
|
134
|
+
parser.add_argument("--run_image", type=str, default="redis")
|
|
135
|
+
parser.add_argument("--build_arch", type=str, default="amd64")
|
|
136
|
+
parser.add_argument("--id", type=str, default="dockerhub")
|
|
137
|
+
parser.add_argument("--mnt_point", type=str, default="")
|
|
132
138
|
parser.add_argument("--trigger-unstable-commits", type=bool, default=True)
|
|
139
|
+
parser.add_argument(
|
|
140
|
+
"--docker-dont-air-gap",
|
|
141
|
+
default=False,
|
|
142
|
+
action="store_true",
|
|
143
|
+
help="Dont store the docker images in redis keys.",
|
|
144
|
+
)
|
|
133
145
|
parser.add_argument(
|
|
134
146
|
"--use-tags",
|
|
135
147
|
default=False,
|
|
@@ -12,14 +12,18 @@ import shutil
|
|
|
12
12
|
import subprocess
|
|
13
13
|
import sys
|
|
14
14
|
import tempfile
|
|
15
|
+
|
|
16
|
+
import docker
|
|
15
17
|
import git
|
|
16
18
|
import packaging
|
|
17
19
|
import redis
|
|
18
20
|
from packaging import version
|
|
19
21
|
import time
|
|
20
|
-
from github import Github
|
|
21
|
-
|
|
22
22
|
|
|
23
|
+
from redis_benchmarks_specification.__builder__.builder import (
|
|
24
|
+
generate_benchmark_stream_request,
|
|
25
|
+
store_airgap_image_redis,
|
|
26
|
+
)
|
|
23
27
|
from redis_benchmarks_specification.__common__.github import (
|
|
24
28
|
update_comment_if_needed,
|
|
25
29
|
create_new_pr_comment,
|
|
@@ -39,6 +43,7 @@ from redis_benchmarks_specification.__common__.env import (
|
|
|
39
43
|
REDIS_BINS_EXPIRE_SECS,
|
|
40
44
|
STREAM_KEYNAME_GH_EVENTS_COMMIT,
|
|
41
45
|
STREAM_GH_EVENTS_COMMIT_BUILDERS_CG,
|
|
46
|
+
STREAM_KEYNAME_NEW_BUILD_EVENTS,
|
|
42
47
|
)
|
|
43
48
|
from redis_benchmarks_specification.__common__.package import (
|
|
44
49
|
get_version_string,
|
|
@@ -53,6 +58,58 @@ logging.basicConfig(
|
|
|
53
58
|
)
|
|
54
59
|
|
|
55
60
|
|
|
61
|
+
def trigger_tests_dockerhub_cli_command_logic(args, project_name, project_version):
|
|
62
|
+
logging.info(
|
|
63
|
+
"Using: {project_name} {project_version}".format(
|
|
64
|
+
project_name=project_name, project_version=project_version
|
|
65
|
+
)
|
|
66
|
+
)
|
|
67
|
+
logging.info(
|
|
68
|
+
"Checking connection to redis with user: {}, host: {}, port: {}".format(
|
|
69
|
+
args.redis_user,
|
|
70
|
+
args.redis_host,
|
|
71
|
+
args.redis_port,
|
|
72
|
+
)
|
|
73
|
+
)
|
|
74
|
+
conn = redis.StrictRedis(
|
|
75
|
+
host=args.redis_host,
|
|
76
|
+
port=args.redis_port,
|
|
77
|
+
password=args.redis_pass,
|
|
78
|
+
username=args.redis_user,
|
|
79
|
+
decode_responses=False,
|
|
80
|
+
)
|
|
81
|
+
conn.ping()
|
|
82
|
+
testDetails = {}
|
|
83
|
+
build_stream_fields, result = generate_benchmark_stream_request(
|
|
84
|
+
args.id,
|
|
85
|
+
conn,
|
|
86
|
+
args.run_image,
|
|
87
|
+
args.build_arch,
|
|
88
|
+
testDetails,
|
|
89
|
+
"n/a",
|
|
90
|
+
)
|
|
91
|
+
build_stream_fields["github_repo"] = args.gh_repo
|
|
92
|
+
build_stream_fields["github_org"] = args.gh_org
|
|
93
|
+
server_name = args.gh_repo
|
|
94
|
+
if args.server_name is not None:
|
|
95
|
+
server_name = args.server_name
|
|
96
|
+
build_stream_fields["server_name"] = server_name
|
|
97
|
+
build_stream_fields["mnt_point"] = args.mnt_point
|
|
98
|
+
if args.docker_dont_air_gap is False:
|
|
99
|
+
docker_client = docker.from_env()
|
|
100
|
+
store_airgap_image_redis(conn, docker_client, args.run_image)
|
|
101
|
+
|
|
102
|
+
if result is True:
|
|
103
|
+
benchmark_stream_id = conn.xadd(
|
|
104
|
+
STREAM_KEYNAME_NEW_BUILD_EVENTS, build_stream_fields
|
|
105
|
+
)
|
|
106
|
+
logging.info(
|
|
107
|
+
"sucessfully requested a new run {}. Stream id: {}".format(
|
|
108
|
+
build_stream_fields, benchmark_stream_id
|
|
109
|
+
)
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
56
113
|
def main():
|
|
57
114
|
_, _, project_version = populate_with_poetry_data()
|
|
58
115
|
project_name = "redis-benchmarks-spec-cli"
|
|
@@ -66,6 +123,8 @@ def main():
|
|
|
66
123
|
trigger_tests_cli_command_logic(args, project_name, project_version)
|
|
67
124
|
if args.tool == "stats":
|
|
68
125
|
generate_stats_cli_command_logic(args, project_name, project_version)
|
|
126
|
+
if args.tool == "dockerhub":
|
|
127
|
+
trigger_tests_dockerhub_cli_command_logic(args, project_name, project_version)
|
|
69
128
|
|
|
70
129
|
|
|
71
130
|
def get_commits_by_branch(args, repo):
|
|
@@ -349,7 +408,11 @@ def trigger_tests_cli_command_logic(args, project_name, project_version):
|
|
|
349
408
|
if result is True:
|
|
350
409
|
stream_id = "n/a"
|
|
351
410
|
if args.dry_run is False:
|
|
352
|
-
(
|
|
411
|
+
(
|
|
412
|
+
result,
|
|
413
|
+
reply_fields,
|
|
414
|
+
error_msg,
|
|
415
|
+
) = request_build_from_commit_info(
|
|
353
416
|
conn,
|
|
354
417
|
commit_dict,
|
|
355
418
|
{},
|
|
@@ -45,7 +45,7 @@ GH_REDIS_SERVER_USER = os.getenv("GH_REDIS_SERVER_USER", None)
|
|
|
45
45
|
|
|
46
46
|
# DB used to authenticate ( read-only/non-dangerous access only )
|
|
47
47
|
REDIS_AUTH_SERVER_HOST = os.getenv("REDIS_AUTH_SERVER_HOST", "localhost")
|
|
48
|
-
REDIS_AUTH_SERVER_PORT = int(os.getenv("REDIS_AUTH_SERVER_PORT", "
|
|
48
|
+
REDIS_AUTH_SERVER_PORT = int(os.getenv("REDIS_AUTH_SERVER_PORT", "6379"))
|
|
49
49
|
REDIS_HEALTH_CHECK_INTERVAL = int(os.getenv("REDIS_HEALTH_CHECK_INTERVAL", "15"))
|
|
50
50
|
REDIS_SOCKET_TIMEOUT = int(os.getenv("REDIS_SOCKET_TIMEOUT", "300"))
|
|
51
51
|
REDIS_BINS_EXPIRE_SECS = int(
|
|
@@ -24,9 +24,7 @@ def generate_build_started_pr_comment(
|
|
|
24
24
|
tests_priority_upper_limit,
|
|
25
25
|
tests_regexp,
|
|
26
26
|
):
|
|
27
|
-
comment_body = (
|
|
28
|
-
f"### CE Performance Automation : step 1 of 2 (build) STARTING...\n\n"
|
|
29
|
-
)
|
|
27
|
+
comment_body = "### CE Performance Automation : step 1 of 2 (build) STARTING...\n\n"
|
|
30
28
|
comment_body += (
|
|
31
29
|
"This comment was automatically generated given a benchmark was triggered.\n"
|
|
32
30
|
)
|
|
@@ -38,7 +36,7 @@ def generate_build_started_pr_comment(
|
|
|
38
36
|
comment_body += f" - git branch: {git_branch}\n"
|
|
39
37
|
comment_body += f" - commit date and time: {commit_datetime}\n"
|
|
40
38
|
comment_body += f" - commit summary: {commit_summary}\n"
|
|
41
|
-
comment_body +=
|
|
39
|
+
comment_body += " - test filters:\n"
|
|
42
40
|
comment_body += (
|
|
43
41
|
f" - command priority lower limit: {tests_priority_lower_limit}\n"
|
|
44
42
|
)
|
|
@@ -64,7 +62,7 @@ def generate_build_finished_pr_comment(
|
|
|
64
62
|
build_duration_seconds,
|
|
65
63
|
):
|
|
66
64
|
build_duration_seconds = int(build_duration_seconds)
|
|
67
|
-
comment_body =
|
|
65
|
+
comment_body = "### CE Performance Automation : step 1 of 2 (build) DONE.\n\n"
|
|
68
66
|
comment_body += (
|
|
69
67
|
"This comment was automatically generated given a benchmark was triggered.\n"
|
|
70
68
|
)
|
|
@@ -76,7 +74,7 @@ def generate_build_finished_pr_comment(
|
|
|
76
74
|
comment_body += f" - git branch: {git_branch}\n"
|
|
77
75
|
comment_body += f" - commit date and time: {commit_datetime}\n"
|
|
78
76
|
comment_body += f" - commit summary: {commit_summary}\n"
|
|
79
|
-
comment_body +=
|
|
77
|
+
comment_body += " - test filters:\n"
|
|
80
78
|
comment_body += (
|
|
81
79
|
f" - command priority lower limit: {tests_priority_lower_limit}\n"
|
|
82
80
|
)
|
|
@@ -197,12 +195,10 @@ def update_comment_if_needed(
|
|
|
197
195
|
)
|
|
198
196
|
)
|
|
199
197
|
if user_input.lower() == "y" or auto_approve:
|
|
200
|
-
print("Updating comment {}".format(regression_comment.html_url))
|
|
201
|
-
regression_comment.edit(comment_body)
|
|
202
198
|
html_url = regression_comment.html_url
|
|
203
|
-
print(
|
|
204
|
-
|
|
205
|
-
)
|
|
199
|
+
print("Updating comment {}".format(html_url))
|
|
200
|
+
regression_comment.edit(comment_body)
|
|
201
|
+
print("Updated comment. Access it via {}".format(html_url))
|
|
206
202
|
|
|
207
203
|
|
|
208
204
|
def check_benchmark_build_comment(comments):
|
|
@@ -6,9 +6,12 @@ import re
|
|
|
6
6
|
|
|
7
7
|
import redis
|
|
8
8
|
from redisbench_admin.run.metrics import collect_redis_metrics
|
|
9
|
-
from redisbench_admin.run.redistimeseries import timeseries_test_sucess_flow
|
|
10
9
|
from redisbench_admin.run_remote.run_remote import export_redis_metrics
|
|
11
10
|
|
|
11
|
+
from redis_benchmarks_specification.__common__.timeseries import (
|
|
12
|
+
timeseries_test_sucess_flow,
|
|
13
|
+
)
|
|
14
|
+
|
|
12
15
|
|
|
13
16
|
def execute_init_commands(benchmark_config, r, dbconfig_keyname="dbconfig"):
|
|
14
17
|
cmds = None
|
|
@@ -144,8 +147,11 @@ def exporter_datasink_common(
|
|
|
144
147
|
tf_triggering_env,
|
|
145
148
|
topology_spec_name,
|
|
146
149
|
default_metrics=None,
|
|
150
|
+
git_hash=None,
|
|
147
151
|
):
|
|
148
|
-
logging.info(
|
|
152
|
+
logging.info(
|
|
153
|
+
f"Using datapoint_time_ms: {datapoint_time_ms}. git_has={git_hash}, git_branch={git_branch}, git_version={git_version}"
|
|
154
|
+
)
|
|
149
155
|
timeseries_test_sucess_flow(
|
|
150
156
|
datasink_push_results_redistimeseries,
|
|
151
157
|
git_version,
|
|
@@ -167,9 +173,15 @@ def exporter_datasink_common(
|
|
|
167
173
|
metadata,
|
|
168
174
|
build_variant_name,
|
|
169
175
|
running_platform,
|
|
176
|
+
None,
|
|
177
|
+
git_hash,
|
|
170
178
|
)
|
|
171
179
|
logging.info("Collecting memory metrics")
|
|
172
|
-
(
|
|
180
|
+
(
|
|
181
|
+
_,
|
|
182
|
+
_,
|
|
183
|
+
overall_end_time_metrics,
|
|
184
|
+
) = collect_redis_metrics(
|
|
173
185
|
redis_conns,
|
|
174
186
|
["memory"],
|
|
175
187
|
{
|