redis-benchmarks-specification 0.1.101__py3-none-any.whl → 0.1.150__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of redis-benchmarks-specification might be problematic. Click here for more details.
- redis_benchmarks_specification/__builder__/builder.py +186 -76
- redis_benchmarks_specification/__cli__/args.py +38 -5
- redis_benchmarks_specification/__cli__/cli.py +142 -8
- redis_benchmarks_specification/__common__/builder_schema.py +6 -1
- redis_benchmarks_specification/__common__/env.py +1 -1
- redis_benchmarks_specification/__common__/github.py +44 -39
- redis_benchmarks_specification/__common__/runner.py +15 -3
- redis_benchmarks_specification/__common__/spec.py +52 -0
- redis_benchmarks_specification/__common__/timeseries.py +1551 -0
- redis_benchmarks_specification/__compare__/args.py +28 -0
- redis_benchmarks_specification/__compare__/compare.py +479 -84
- redis_benchmarks_specification/__runner__/runner.py +21 -6
- redis_benchmarks_specification/__self_contained_coordinator__/args.py +0 -5
- redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py +18 -15
- redis_benchmarks_specification/__self_contained_coordinator__/build_info.py +5 -3
- redis_benchmarks_specification/__self_contained_coordinator__/docker.py +7 -3
- redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py +4 -1
- redis_benchmarks_specification/__self_contained_coordinator__/runners.py +7 -3
- redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py +318 -126
- redis_benchmarks_specification/__spec__/cli.py +7 -7
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-100Kkeys-hash-hgetall-50-fields-100B-values.yml +51 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-100Kkeys-load-hash-50-fields-with-1000B-values.yml +46 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-100Kkeys-load-hash-50-fields-with-100B-values.yml +46 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values.yml +46 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-100B-expire-use-case.yml +45 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-10B-expire-use-case.yml +45 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-1KiB-expire-use-case.yml +45 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-4KiB-expire-use-case.yml +45 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10.yml +41 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-generic-exists-pipeline-10.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-generic-expire-pipeline-10.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-generic-expireat-pipeline-10.yml +39 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-generic-scan-pipeline-10.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-generic-touch-pipeline-10.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-generic-ttl-pipeline-10.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-hash-hexists.yml +41 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values.yml +46 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-hash-hgetall-50-fields-10B-values.yml +51 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-hash-hincrby.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10.yml +42 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20.yml +45 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values.yml +41 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values.yml +41 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values.yml +41 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-list-with-100B-values.yml +34 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-list-with-10B-values.yml +34 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-list-with-1KiB-values.yml +34 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-pipeline-10.yml +42 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-set-intset-with-100-elements.yml +42 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10.yml +34 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values.yml +34 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10.yml +34 -0
- redis_benchmarks_specification/{test-suites/memtier_benchmark-1Mkeys-load-string-with-2MB-values.yml → latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-string-with-100B-values.yml} +10 -9
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10.yml +34 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-string-with-10B-values.yml +34 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-string-with-1KiB-values.yml +34 -0
- redis_benchmarks_specification/{test-suites/memtier_benchmark-1Mkeys-load-string-with-200KiB-values.yml → latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-string-with-20KiB-values.yml} +10 -9
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score.yml +35 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-append-1-100B-pipeline-10.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-append-1-100B.yml +39 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-decr.yml +39 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-get-100B-pipeline-10.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-get-100B.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-get-10B-pipeline-10.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-get-10B.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-get-1KiB.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-get-20KiB.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-incrby-pipeline-10.yml +32 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-incrby.yml +31 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-incrbyfloat-pipeline-10.yml +32 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-incrbyfloat.yml +31 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-mget-1KiB.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10.yml +39 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1Mkeys-string-setrange-100B.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-2-elements-geopos.yml +35 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-2-elements-geosearch-fromlonlat-withcoord.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-60M-elements-geodist-pipeline-10.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-60M-elements-geodist.yml +35 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-60M-elements-geohash-pipeline-10.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-60M-elements-geohash.yml +35 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-60M-elements-geopos-pipeline-10.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-60M-elements-geopos.yml +35 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-bybox.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-pipeline-10.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-hash-hscan-50-fields-10B-values.yml +50 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-list-10-elements-lrange-all-elements-pipeline-10.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-list-10-elements-lrange-all-elements.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-list-100-elements-lrange-all-elements-pipeline-10.yml +52 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-list-100-elements-lrange-all-elements.yml +52 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-list-10K-elements-lindex-integer.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-list-10K-elements-lindex-string.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-list-1K-elements-lrange-all-elements-pipeline-10.yml +202 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-list-1K-elements-lrange-all-elements.yml +202 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-pfadd-4KB-values-pipeline-10.yml +33 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-10-elements-smembers-pipeline-10.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-10-elements-smembers.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-10-elements-smismember.yml +36 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-100-elements-sismember-is-a-member.yml +52 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-100-elements-sismember-not-a-member.yml +52 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-100-elements-smembers.yml +50 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-100-elements-smismember.yml +53 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-100-elements-sscan.yml +50 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-10M-elements-sismember-50pct-chance.yml +39 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-1K-elements-smembers.yml +200 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-1M-elements-sismember-50pct-chance.yml +39 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-200K-elements-sadd-constant.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-set-2M-elements-sadd-increasing.yml +33 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zincrby-1M-elements-pipeline-1.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zrank-1M-elements-pipeline-1.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zrem-5M-elements-pipeline-1.yml +47 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores.yml +39 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zset-10-elements-zrange-all-elements.yml +38 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zset-100-elements-zrange-all-elements.yml +64 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores.yml +64 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements.yml +64 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zset-100-elements-zscan.yml +63 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10.yml +39 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10.yml +39 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-2keys-lua-eval-hset-expire.yml +37 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-2keys-lua-evalsha-hset-expire.yml +42 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-2keys-set-10-100-elements-sdiff.yml +55 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-2keys-set-10-100-elements-sinter.yml +56 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-2keys-set-10-100-elements-sunion.yml +56 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10.yml +45 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-2keys-stream-5-entries-xread-all-entries.yml +45 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-3Mkeys-load-string-with-512B-values.yml +41 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-10000_qps-memtier_benchmark-connection-hello.yml +32 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values.yml +46 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-1Mkeys-load-zset-listpack-with-100-elements-double-score.yml +92 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-1key-100M-bits-bitmap-bitcount.yml +43 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer.yml +43 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-1key-list-10K-elements-linsert-lrem-string.yml +44 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-1key-list-10K-elements-lpos-integer.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-1key-list-10K-elements-lpos-string.yml +40 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-1key-list-2K-elements-quicklist-lrange-all-elements-longs.yml +259 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-1key-zset-1K-elements-zrange-all-elements.yml +321 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunion.yml +433 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-1000_qps-memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore.yml +433 -0
- redis_benchmarks_specification/latency-test-suites/latency-rate-limited-100_qps-memtier_benchmark-1key-1Billion-bits-bitmap-bitcount.yml +44 -0
- redis_benchmarks_specification/setups/topologies/topologies.yml +65 -0
- redis_benchmarks_specification/test-suites/defaults.yml +5 -1
- redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hgetall-50-fields-100B-values.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-20-fields-with-1B-values-pipeline-30.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-1000B-values.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-100B-values.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-list-with-10B-values-pipeline-50.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-100B-expire-use-case.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-expire-use-case.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-1KiB-expire-use-case.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-4KiB-expire-use-case.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-exists-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expire-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expireat-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-touch-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-ttl-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hexists.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hgetall-50-fields-10B-values.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrby.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values-pipeline-10.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-1KiB-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-pipeline-10.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values.yml +2 -5
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-20KiB-values.yml +2 -5
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-listpack-with-100-elements-double-score.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B-pipeline-10.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-decr.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-10.yml +3 -2
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby-pipeline-10.yml +28 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby.yml +28 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat-pipeline-10.yml +28 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat.yml +28 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mget-1KiB.yml +1 -0
- redis_benchmarks_specification/test-suites/{memtier_benchmark-1Mkeys-string-get-20KiB.yml → memtier_benchmark-1Mkeys-string-set-with-ex-100B-pipeline-10.yml} +7 -7
- redis_benchmarks_specification/test-suites/{memtier_benchmark-1Mkeys-string-get-200KiB.yml → memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10.yml} +7 -7
- redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10.yml +34 -0
- redis_benchmarks_specification/test-suites/{memtier_benchmark-1Mkeys-string-get-2MB.yml → memtier_benchmark-1Mkeys-string-setrange-100B.yml} +7 -6
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-100M-bits-bitmap-bitcount.yml +37 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-1Billion-bits-bitmap-bitcount.yml +37 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geopos.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geosearch-fromlonlat-withcoord.yml +33 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-bybox.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall-pipeline-10.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-50-fields-10B-values.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements-pipeline-10.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-int-7bit-uint-lrange-all-elements-pipeline-10.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-int-lrange-all-elements-pipeline-10.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements-pipeline-10.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-integer.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string-pipeline-10.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer.yml +35 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-string.yml +35 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-integer.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-string.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements-pipeline-10.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-2K-elements-quicklist-lrange-all-elements-longs.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-hash-1K-fields-with-5B-values.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-pfadd-4KB-values-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smismember.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-is-a-member.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-not-a-member.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smembers.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smismember.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sscan.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10M-elements-sismember-50pct-chance.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-smembers.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1M-elements-sismember-50pct-chance.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-200K-elements-sadd-constant.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-2M-elements-sadd-increasing.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zincrby-1M-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-1M-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrem-5M-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-10.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zscan.yml +32 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zrange-all-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-withscores-5-elements-pipeline-10.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-eval-hset-expire.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-evalsha-hset-expire.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sdiff.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sinter.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sunion.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries.yml +1 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunion.yml +33 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore.yml +33 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values copy.yml +36 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values.yml +36 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-2000_conns.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-400_conns.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-40_conns.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-2000_conns.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-400_conns.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-5200_conns.yml +34 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello-pipeline-10.yml +30 -0
- redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello.yml +30 -0
- redis_benchmarks_specification/test-suites/template.txt +1 -0
- {redis_benchmarks_specification-0.1.101.dist-info → redis_benchmarks_specification-0.1.150.dist-info}/METADATA +13 -4
- redis_benchmarks_specification-0.1.150.dist-info/RECORD +350 -0
- {redis_benchmarks_specification-0.1.101.dist-info → redis_benchmarks_specification-0.1.150.dist-info}/WHEEL +1 -1
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +0 -29
- redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-1000B-values.yml +0 -29
- redis_benchmarks_specification-0.1.101.dist-info/RECORD +0 -157
- {redis_benchmarks_specification-0.1.101.dist-info → redis_benchmarks_specification-0.1.150.dist-info}/LICENSE +0 -0
- {redis_benchmarks_specification-0.1.101.dist-info → redis_benchmarks_specification-0.1.150.dist-info}/entry_points.txt +0 -0
|
@@ -234,6 +234,7 @@ def builder_process_stream(
|
|
|
234
234
|
if b"git_hash" in testDetails:
|
|
235
235
|
git_hash = testDetails[b"git_hash"]
|
|
236
236
|
logging.info("Received commit hash specifier {}.".format(git_hash))
|
|
237
|
+
logging.info(f"Received the following build stream: {testDetails}.")
|
|
237
238
|
binary_zip_key = testDetails[b"zip_archive_key"]
|
|
238
239
|
logging.info(
|
|
239
240
|
"Retriving zipped source from key {}.".format(
|
|
@@ -245,10 +246,10 @@ def builder_process_stream(
|
|
|
245
246
|
use_git_timestamp = False
|
|
246
247
|
commit_datetime = "n/a"
|
|
247
248
|
if b"commit_datetime" in testDetails:
|
|
248
|
-
commit_datetime =
|
|
249
|
+
commit_datetime = testDetails[b"commit_datetime"].decode()
|
|
249
250
|
commit_summary = "n/a"
|
|
250
251
|
if b"commit_summary" in testDetails:
|
|
251
|
-
commit_summary =
|
|
252
|
+
commit_summary = testDetails[b"commit_summary"].decode()
|
|
252
253
|
git_branch, git_version = get_branch_version_from_test_details(testDetails)
|
|
253
254
|
if b"use_git_timestamp" in testDetails:
|
|
254
255
|
use_git_timestamp = bool(testDetails[b"use_git_timestamp"])
|
|
@@ -271,6 +272,16 @@ def builder_process_stream(
|
|
|
271
272
|
if b"tests_groups_regexp" in testDetails:
|
|
272
273
|
tests_groups_regexp = testDetails[b"tests_groups_regexp"].decode()
|
|
273
274
|
|
|
275
|
+
github_org = "redis"
|
|
276
|
+
if b"github_org" in testDetails:
|
|
277
|
+
github_org = testDetails[b"github_org"].decode()
|
|
278
|
+
logging.info(f"detected github_org info on build stream {github_org}")
|
|
279
|
+
|
|
280
|
+
github_repo = "redis"
|
|
281
|
+
if b"github_repo" in testDetails:
|
|
282
|
+
github_repo = testDetails[b"github_repo"].decode()
|
|
283
|
+
logging.info(f"detected github_repo info on build stream {github_repo}")
|
|
284
|
+
|
|
274
285
|
# github updates
|
|
275
286
|
is_actionable_pr = False
|
|
276
287
|
contains_regression_comment = False
|
|
@@ -312,28 +323,7 @@ def builder_process_stream(
|
|
|
312
323
|
if "run_image" in build_config:
|
|
313
324
|
run_image = build_config["run_image"]
|
|
314
325
|
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
|
-
)
|
|
326
|
+
store_airgap_image_redis(conn, docker_client, run_image)
|
|
337
327
|
|
|
338
328
|
compiler = build_config["compiler"]
|
|
339
329
|
cpp_compiler = build_config["cpp_compiler"]
|
|
@@ -342,6 +332,14 @@ def builder_process_stream(
|
|
|
342
332
|
build_artifacts = ["redis-server"]
|
|
343
333
|
if "build_artifacts" in build_config:
|
|
344
334
|
build_artifacts = build_config["build_artifacts"]
|
|
335
|
+
if b"build_artifacts" in testDetails:
|
|
336
|
+
new_build_artifacts = (
|
|
337
|
+
testDetails[b"build_artifacts"].decode().split(",")
|
|
338
|
+
)
|
|
339
|
+
logging.info(
|
|
340
|
+
f"overriding default build artifacts {build_artifacts} by {new_build_artifacts}"
|
|
341
|
+
)
|
|
342
|
+
build_artifacts = new_build_artifacts
|
|
345
343
|
build_vars_str = ""
|
|
346
344
|
if "env" in build_config:
|
|
347
345
|
if build_config["env"] is not None:
|
|
@@ -364,22 +362,31 @@ def builder_process_stream(
|
|
|
364
362
|
"linenoise",
|
|
365
363
|
"lua",
|
|
366
364
|
]
|
|
365
|
+
if "fast_float" in deps_dir:
|
|
366
|
+
deps_list.append("fast_float")
|
|
367
367
|
if "hdr_histogram" in deps_dir:
|
|
368
368
|
deps_list.append("hdr_histogram")
|
|
369
369
|
if "fpconv" in deps_dir:
|
|
370
370
|
deps_list.append("fpconv")
|
|
371
371
|
redis_temporary_dir = temporary_dir + "/" + redis_dir + "/"
|
|
372
372
|
logging.info("Using redis temporary dir {}".format(redis_temporary_dir))
|
|
373
|
-
build_command = "bash -c 'make Makefile.dep && cd ./deps && CXX={} CC={} make {} {} -j && cd .. && CXX={} CC={} make {} {} -j'".format(
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
)
|
|
373
|
+
# build_command = "bash -c 'make Makefile.dep && cd ./deps && CXX={} CC={} make {} {} -j && cd .. && CXX={} CC={} make {} {} -j'".format(
|
|
374
|
+
# cpp_compiler,
|
|
375
|
+
# compiler,
|
|
376
|
+
# " ".join(deps_list),
|
|
377
|
+
# build_vars_str,
|
|
378
|
+
# cpp_compiler,
|
|
379
|
+
# compiler,
|
|
380
|
+
# "redis-server",
|
|
381
|
+
# build_vars_str,
|
|
382
|
+
# )
|
|
383
|
+
build_command = "sh -c 'make -j'"
|
|
384
|
+
if b"build_command" in testDetails:
|
|
385
|
+
build_command = testDetails[b"build_command"].decode()
|
|
386
|
+
server_name = "redis"
|
|
387
|
+
if b"server_name" in testDetails:
|
|
388
|
+
server_name = testDetails[b"server_name"].decode()
|
|
389
|
+
|
|
383
390
|
build_start_datetime = datetime.datetime.utcnow()
|
|
384
391
|
logging.info(
|
|
385
392
|
"Using the following build command {}.".format(build_command)
|
|
@@ -429,48 +436,35 @@ def builder_process_stream(
|
|
|
429
436
|
build_duration = build_end_datetime - build_start_datetime
|
|
430
437
|
build_duration_secs = build_duration.total_seconds()
|
|
431
438
|
|
|
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
|
-
|
|
459
|
-
|
|
460
|
-
|
|
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"]
|
|
439
|
+
build_stream_fields, result = generate_benchmark_stream_request(
|
|
440
|
+
id,
|
|
441
|
+
conn,
|
|
442
|
+
run_image,
|
|
443
|
+
build_arch,
|
|
444
|
+
testDetails,
|
|
445
|
+
build_os,
|
|
446
|
+
build_artifacts,
|
|
447
|
+
build_command,
|
|
448
|
+
build_config_metadata,
|
|
449
|
+
build_image,
|
|
450
|
+
build_vars_str,
|
|
451
|
+
compiler,
|
|
452
|
+
cpp_compiler,
|
|
453
|
+
git_branch,
|
|
454
|
+
git_hash,
|
|
455
|
+
git_timestamp_ms,
|
|
456
|
+
git_version,
|
|
457
|
+
pull_request,
|
|
458
|
+
redis_temporary_dir,
|
|
459
|
+
tests_groups_regexp,
|
|
460
|
+
tests_priority_lower_limit,
|
|
461
|
+
tests_priority_upper_limit,
|
|
462
|
+
tests_regexp,
|
|
463
|
+
use_git_timestamp,
|
|
464
|
+
server_name,
|
|
465
|
+
github_org,
|
|
466
|
+
github_repo,
|
|
467
|
+
)
|
|
474
468
|
if result is True:
|
|
475
469
|
benchmark_stream_id = conn.xadd(
|
|
476
470
|
STREAM_KEYNAME_NEW_BUILD_EVENTS, build_stream_fields
|
|
@@ -551,6 +545,122 @@ def builder_process_stream(
|
|
|
551
545
|
return previous_id, new_builds_count, build_stream_fields_arr
|
|
552
546
|
|
|
553
547
|
|
|
548
|
+
def store_airgap_image_redis(conn, docker_client, run_image):
|
|
549
|
+
airgap_key = "docker:air-gap:{}".format(run_image)
|
|
550
|
+
logging.info(
|
|
551
|
+
"DOCKER AIR GAP: storing run image named: {} in redis key {}".format(
|
|
552
|
+
run_image, airgap_key
|
|
553
|
+
)
|
|
554
|
+
)
|
|
555
|
+
# 7 days expire
|
|
556
|
+
binary_exp_secs = 24 * 60 * 60 * 7
|
|
557
|
+
if conn.exists(airgap_key):
|
|
558
|
+
logging.info(
|
|
559
|
+
f"DOCKER AIRGAP KEY ALREADY EXISTS: {airgap_key}. Updating only the expire time"
|
|
560
|
+
)
|
|
561
|
+
conn.expire(airgap_key, binary_exp_secs)
|
|
562
|
+
else:
|
|
563
|
+
run_image_binary_stream = io.BytesIO()
|
|
564
|
+
run_image_docker = docker_client.images.get(run_image)
|
|
565
|
+
for chunk in run_image_docker.save():
|
|
566
|
+
run_image_binary_stream.write(chunk)
|
|
567
|
+
res_airgap = conn.set(
|
|
568
|
+
airgap_key,
|
|
569
|
+
run_image_binary_stream.getbuffer(),
|
|
570
|
+
ex=binary_exp_secs,
|
|
571
|
+
)
|
|
572
|
+
logging.info(
|
|
573
|
+
"DOCKER AIR GAP: result of set bin data to {}: {}".format(
|
|
574
|
+
airgap_key, res_airgap
|
|
575
|
+
)
|
|
576
|
+
)
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
def generate_benchmark_stream_request(
|
|
580
|
+
id,
|
|
581
|
+
conn,
|
|
582
|
+
run_image,
|
|
583
|
+
build_arch,
|
|
584
|
+
testDetails,
|
|
585
|
+
build_os,
|
|
586
|
+
build_artifacts=[],
|
|
587
|
+
build_command=None,
|
|
588
|
+
build_config_metadata=None,
|
|
589
|
+
build_image=None,
|
|
590
|
+
build_vars_str=None,
|
|
591
|
+
compiler=None,
|
|
592
|
+
cpp_compiler=None,
|
|
593
|
+
git_branch=None,
|
|
594
|
+
git_hash=None,
|
|
595
|
+
git_timestamp_ms=None,
|
|
596
|
+
git_version=None,
|
|
597
|
+
pull_request=None,
|
|
598
|
+
redis_temporary_dir=None,
|
|
599
|
+
tests_groups_regexp=".*",
|
|
600
|
+
tests_priority_lower_limit=0,
|
|
601
|
+
tests_priority_upper_limit=10000,
|
|
602
|
+
tests_regexp=".*",
|
|
603
|
+
use_git_timestamp=False,
|
|
604
|
+
server_name="redis",
|
|
605
|
+
github_org="redis",
|
|
606
|
+
github_repo="redis",
|
|
607
|
+
):
|
|
608
|
+
build_stream_fields = {
|
|
609
|
+
"id": id,
|
|
610
|
+
"use_git_timestamp": str(use_git_timestamp),
|
|
611
|
+
"run_image": run_image,
|
|
612
|
+
"os": build_os,
|
|
613
|
+
"arch": build_arch,
|
|
614
|
+
"build_artifacts": ",".join(build_artifacts),
|
|
615
|
+
"tests_regexp": tests_regexp,
|
|
616
|
+
"tests_priority_upper_limit": tests_priority_upper_limit,
|
|
617
|
+
"tests_priority_lower_limit": tests_priority_lower_limit,
|
|
618
|
+
"tests_groups_regexp": tests_groups_regexp,
|
|
619
|
+
"server_name": server_name,
|
|
620
|
+
"github_org": github_org,
|
|
621
|
+
"github_repo": github_repo,
|
|
622
|
+
}
|
|
623
|
+
if build_config_metadata is not None:
|
|
624
|
+
build_stream_fields["metadata"] = json.dumps(build_config_metadata)
|
|
625
|
+
if compiler is not None:
|
|
626
|
+
build_stream_fields["compiler"] = compiler
|
|
627
|
+
if cpp_compiler is not None:
|
|
628
|
+
build_stream_fields["cpp_compiler"] = cpp_compiler
|
|
629
|
+
if build_vars_str is not None:
|
|
630
|
+
build_stream_fields["build_vars"] = build_vars_str
|
|
631
|
+
if build_command is not None:
|
|
632
|
+
logging.info(f"adding build_command: {build_command}")
|
|
633
|
+
build_stream_fields["build_command"] = build_command
|
|
634
|
+
if build_image is not None:
|
|
635
|
+
build_stream_fields["build_image"] = build_image
|
|
636
|
+
else:
|
|
637
|
+
build_stream_fields["build_image"] = run_image
|
|
638
|
+
if git_hash is not None:
|
|
639
|
+
build_stream_fields["git_hash"] = git_hash
|
|
640
|
+
if pull_request is not None:
|
|
641
|
+
build_stream_fields["pull_request"] = pull_request
|
|
642
|
+
if git_branch is not None:
|
|
643
|
+
build_stream_fields["git_branch"] = git_branch
|
|
644
|
+
if git_version is not None:
|
|
645
|
+
build_stream_fields["git_version"] = git_version
|
|
646
|
+
if git_timestamp_ms is not None:
|
|
647
|
+
build_stream_fields["git_timestamp_ms"] = git_timestamp_ms
|
|
648
|
+
|
|
649
|
+
prefix = f"github_org={github_org}/github_repo={github_repo}/git_branch={str(git_branch)}/git_version={str(git_version)}/git_hash={str(git_hash)}"
|
|
650
|
+
for artifact in build_artifacts:
|
|
651
|
+
bin_key = f"zipped:artifacts:{prefix}:{id}:{artifact}.zip"
|
|
652
|
+
bin_artifact = open(f"{redis_temporary_dir}src/{artifact}", "rb").read()
|
|
653
|
+
bin_artifact_len = len(bytes(bin_artifact))
|
|
654
|
+
assert bin_artifact_len > 0
|
|
655
|
+
conn.set(bin_key, bytes(bin_artifact), ex=REDIS_BINS_EXPIRE_SECS)
|
|
656
|
+
build_stream_fields[artifact] = bin_key
|
|
657
|
+
build_stream_fields["{}_len_bytes".format(artifact)] = bin_artifact_len
|
|
658
|
+
result = True
|
|
659
|
+
if b"platform" in testDetails:
|
|
660
|
+
build_stream_fields["platform"] = testDetails[b"platform"]
|
|
661
|
+
return build_stream_fields, result
|
|
662
|
+
|
|
663
|
+
|
|
554
664
|
def build_spec_image_prefetch(builders_folder, different_build_specs):
|
|
555
665
|
logging.info("checking build spec requirements")
|
|
556
666
|
already_checked_images = []
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
#
|
|
6
6
|
import datetime
|
|
7
7
|
import os
|
|
8
|
-
|
|
8
|
+
from distutils.util import strtobool
|
|
9
9
|
from redis_benchmarks_specification.__common__.env import (
|
|
10
10
|
GH_REDIS_SERVER_HOST,
|
|
11
11
|
GH_TOKEN,
|
|
@@ -18,9 +18,10 @@ from redis_benchmarks_specification.__common__.env import (
|
|
|
18
18
|
from redisbench_admin.run.common import get_start_time_vars
|
|
19
19
|
|
|
20
20
|
START_TIME_NOW_UTC, _, _ = get_start_time_vars()
|
|
21
|
-
START_TIME_LAST_YEAR_UTC = START_TIME_NOW_UTC - datetime.timedelta(days=
|
|
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
|
|
|
@@ -70,6 +71,12 @@ def spec_cli_args(parser):
|
|
|
70
71
|
action="store_true",
|
|
71
72
|
help="Include modules statistics on commandstats.",
|
|
72
73
|
)
|
|
74
|
+
parser.add_argument(
|
|
75
|
+
"--use-git-timestamp",
|
|
76
|
+
type=lambda x: bool(strtobool(x)),
|
|
77
|
+
default=True,
|
|
78
|
+
help="Use git timestamp",
|
|
79
|
+
)
|
|
73
80
|
parser.add_argument("--github_token", type=str, default=PERFORMANCE_GH_TOKEN)
|
|
74
81
|
parser.add_argument("--pull-request", type=str, default=None, nargs="?", const="")
|
|
75
82
|
parser.add_argument(
|
|
@@ -109,7 +116,7 @@ def spec_cli_args(parser):
|
|
|
109
116
|
type=str,
|
|
110
117
|
default=CLI_TOOL_TRIGGER,
|
|
111
118
|
help="subtool to use. One of '{}' ".format(
|
|
112
|
-
",".join([CLI_TOOL_STATS, CLI_TOOL_TRIGGER])
|
|
119
|
+
",".join([CLI_TOOL_STATS, CLI_TOOL_TRIGGER, CLI_TOOL_DOCKERHUB])
|
|
113
120
|
),
|
|
114
121
|
)
|
|
115
122
|
parser.add_argument("--gh_token", type=str, default=GH_TOKEN)
|
|
@@ -129,7 +136,18 @@ def spec_cli_args(parser):
|
|
|
129
136
|
parser.add_argument("--redis_repo", type=str, default=None)
|
|
130
137
|
parser.add_argument("--gh_org", type=str, default="redis")
|
|
131
138
|
parser.add_argument("--gh_repo", type=str, default="redis")
|
|
139
|
+
parser.add_argument("--server_name", type=str, default=None)
|
|
140
|
+
parser.add_argument("--run_image", type=str, default="redis")
|
|
141
|
+
parser.add_argument("--build_arch", type=str, default="amd64")
|
|
142
|
+
parser.add_argument("--id", type=str, default="dockerhub")
|
|
143
|
+
parser.add_argument("--mnt_point", type=str, default="")
|
|
132
144
|
parser.add_argument("--trigger-unstable-commits", type=bool, default=True)
|
|
145
|
+
parser.add_argument(
|
|
146
|
+
"--docker-dont-air-gap",
|
|
147
|
+
default=False,
|
|
148
|
+
action="store_true",
|
|
149
|
+
help="Dont store the docker images in redis keys.",
|
|
150
|
+
)
|
|
133
151
|
parser.add_argument(
|
|
134
152
|
"--use-tags",
|
|
135
153
|
default=False,
|
|
@@ -154,6 +172,21 @@ def spec_cli_args(parser):
|
|
|
154
172
|
action="store_true",
|
|
155
173
|
help="Iterate over the git commits.",
|
|
156
174
|
)
|
|
175
|
+
parser.add_argument(
|
|
176
|
+
"--build_artifacts",
|
|
177
|
+
type=str,
|
|
178
|
+
default="",
|
|
179
|
+
)
|
|
180
|
+
parser.add_argument(
|
|
181
|
+
"--build_command",
|
|
182
|
+
type=str,
|
|
183
|
+
default="",
|
|
184
|
+
)
|
|
185
|
+
parser.add_argument(
|
|
186
|
+
"--git_hash",
|
|
187
|
+
type=str,
|
|
188
|
+
default="",
|
|
189
|
+
)
|
|
157
190
|
parser.add_argument(
|
|
158
191
|
"--dry-run",
|
|
159
192
|
default=False,
|
|
@@ -163,8 +196,8 @@ def spec_cli_args(parser):
|
|
|
163
196
|
parser.add_argument(
|
|
164
197
|
"--last_n",
|
|
165
198
|
type=int,
|
|
166
|
-
default
|
|
167
|
-
help="Use the last N samples. by default will use
|
|
199
|
+
default=1,
|
|
200
|
+
help="Use the last N samples. by default will use last commit",
|
|
168
201
|
)
|
|
169
202
|
parser.add_argument(
|
|
170
203
|
"--platform",
|
|
@@ -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,76 @@ 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
|
+
None,
|
|
92
|
+
None,
|
|
93
|
+
None,
|
|
94
|
+
None,
|
|
95
|
+
None,
|
|
96
|
+
None,
|
|
97
|
+
None,
|
|
98
|
+
None,
|
|
99
|
+
None,
|
|
100
|
+
None,
|
|
101
|
+
None,
|
|
102
|
+
None,
|
|
103
|
+
".*",
|
|
104
|
+
0,
|
|
105
|
+
10000,
|
|
106
|
+
args.tests_regexp,
|
|
107
|
+
)
|
|
108
|
+
build_stream_fields["github_repo"] = args.gh_repo
|
|
109
|
+
build_stream_fields["github_org"] = args.gh_org
|
|
110
|
+
build_stream_fields["restore_build_artifacts"] = "False"
|
|
111
|
+
server_name = args.gh_repo
|
|
112
|
+
if args.server_name is not None:
|
|
113
|
+
server_name = args.server_name
|
|
114
|
+
build_stream_fields["server_name"] = server_name
|
|
115
|
+
build_stream_fields["mnt_point"] = args.mnt_point
|
|
116
|
+
if args.docker_dont_air_gap is False:
|
|
117
|
+
docker_client = docker.from_env()
|
|
118
|
+
store_airgap_image_redis(conn, docker_client, args.run_image)
|
|
119
|
+
|
|
120
|
+
if result is True:
|
|
121
|
+
benchmark_stream_id = conn.xadd(
|
|
122
|
+
STREAM_KEYNAME_NEW_BUILD_EVENTS, build_stream_fields
|
|
123
|
+
)
|
|
124
|
+
logging.info(
|
|
125
|
+
"sucessfully requested a new run {}. Stream id: {}".format(
|
|
126
|
+
build_stream_fields, benchmark_stream_id
|
|
127
|
+
)
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
|
|
56
131
|
def main():
|
|
57
132
|
_, _, project_version = populate_with_poetry_data()
|
|
58
133
|
project_name = "redis-benchmarks-spec-cli"
|
|
@@ -66,6 +141,8 @@ def main():
|
|
|
66
141
|
trigger_tests_cli_command_logic(args, project_name, project_version)
|
|
67
142
|
if args.tool == "stats":
|
|
68
143
|
generate_stats_cli_command_logic(args, project_name, project_version)
|
|
144
|
+
if args.tool == "dockerhub":
|
|
145
|
+
trigger_tests_dockerhub_cli_command_logic(args, project_name, project_version)
|
|
69
146
|
|
|
70
147
|
|
|
71
148
|
def get_commits_by_branch(args, repo):
|
|
@@ -73,6 +150,10 @@ def get_commits_by_branch(args, repo):
|
|
|
73
150
|
commits = []
|
|
74
151
|
for commit in repo.iter_commits():
|
|
75
152
|
commit_datetime = commit.committed_datetime
|
|
153
|
+
git_timestamp_ms = int(
|
|
154
|
+
datetime.datetime.utcfromtimestamp(commit_datetime.timestamp()).timestamp()
|
|
155
|
+
* 1000
|
|
156
|
+
)
|
|
76
157
|
if (
|
|
77
158
|
args.from_date
|
|
78
159
|
<= datetime.datetime.utcfromtimestamp(commit_datetime.timestamp())
|
|
@@ -87,6 +168,7 @@ def get_commits_by_branch(args, repo):
|
|
|
87
168
|
"git_branch": repo.active_branch.name,
|
|
88
169
|
"commit_summary": commit.summary,
|
|
89
170
|
"commit_datetime": str(commit_datetime),
|
|
171
|
+
"git_timestamp_ms": git_timestamp_ms,
|
|
90
172
|
}
|
|
91
173
|
)
|
|
92
174
|
return commits, total_commits
|
|
@@ -107,6 +189,14 @@ def get_commits_by_tags(args, repo):
|
|
|
107
189
|
|
|
108
190
|
tags = sorted(repo.tags, key=lambda t: t.commit.committed_datetime)
|
|
109
191
|
for tag in tags:
|
|
192
|
+
|
|
193
|
+
git_timestamp_ms = int(
|
|
194
|
+
datetime.datetime.utcfromtimestamp(
|
|
195
|
+
tag.commit.committed_datetime.timestamp()
|
|
196
|
+
).timestamp()
|
|
197
|
+
* 1000
|
|
198
|
+
)
|
|
199
|
+
|
|
110
200
|
if (
|
|
111
201
|
args.from_date
|
|
112
202
|
<= datetime.datetime.utcfromtimestamp(
|
|
@@ -137,6 +227,7 @@ def get_commits_by_tags(args, repo):
|
|
|
137
227
|
"git_version": git_version,
|
|
138
228
|
"commit_summary": tag.commit.summary,
|
|
139
229
|
"commit_datetime": commit_datetime,
|
|
230
|
+
"git_timestamp_ms": git_timestamp_ms,
|
|
140
231
|
}
|
|
141
232
|
)
|
|
142
233
|
except packaging.version.InvalidVersion:
|
|
@@ -152,6 +243,7 @@ def get_commits_by_tags(args, repo):
|
|
|
152
243
|
def get_repo(args):
|
|
153
244
|
redisDirPath = args.redis_repo
|
|
154
245
|
cleanUp = False
|
|
246
|
+
last_n = args.last_n
|
|
155
247
|
if redisDirPath is None:
|
|
156
248
|
cleanUp = True
|
|
157
249
|
redisDirPath = tempfile.mkdtemp()
|
|
@@ -159,7 +251,10 @@ def get_repo(args):
|
|
|
159
251
|
logging.info(
|
|
160
252
|
f"Retrieving redis repo from remote {remote_url} into {redisDirPath}. Using branch {args.branch}."
|
|
161
253
|
)
|
|
162
|
-
|
|
254
|
+
depth_str = ""
|
|
255
|
+
if last_n > 0:
|
|
256
|
+
depth_str = f" --depth {last_n}"
|
|
257
|
+
cmd = f"git clone {remote_url} {redisDirPath} --branch {args.branch} {depth_str}\n"
|
|
163
258
|
process = subprocess.Popen(
|
|
164
259
|
"/bin/bash", stdin=subprocess.PIPE, stdout=subprocess.PIPE
|
|
165
260
|
)
|
|
@@ -260,11 +355,26 @@ def trigger_tests_cli_command_logic(args, project_name, project_version):
|
|
|
260
355
|
hash_regexp
|
|
261
356
|
)
|
|
262
357
|
)
|
|
358
|
+
enable_hash_filtering = False
|
|
359
|
+
hash_filters = []
|
|
360
|
+
if args.git_hash != "":
|
|
361
|
+
enable_hash_filtering = True
|
|
362
|
+
hash_filters = args.git_hash.split(",")
|
|
363
|
+
logging.info(
|
|
364
|
+
f"There is a total of {len(hash_filters)} commit hash fitlers: {hash_filters}"
|
|
365
|
+
)
|
|
263
366
|
hash_regexp_string = re.compile(hash_regexp)
|
|
264
367
|
filtered_hash_commits = []
|
|
265
368
|
for cdict in commits:
|
|
266
369
|
commit_hash = cdict["git_hash"]
|
|
370
|
+
if enable_hash_filtering:
|
|
371
|
+
if commit_hash not in hash_filters:
|
|
372
|
+
logging.info(
|
|
373
|
+
f"Skipping {commit_hash} given it does not match any commit hash in {hash_filters}"
|
|
374
|
+
)
|
|
375
|
+
continue
|
|
267
376
|
commit_summary = cdict["commit_summary"]
|
|
377
|
+
commit_datetime = cdict["commit_datetime"]
|
|
268
378
|
match_obj = re.search(hash_regexp_string, commit_hash)
|
|
269
379
|
if match_obj is None:
|
|
270
380
|
logging.info(
|
|
@@ -274,9 +384,7 @@ def trigger_tests_cli_command_logic(args, project_name, project_version):
|
|
|
274
384
|
)
|
|
275
385
|
else:
|
|
276
386
|
print(
|
|
277
|
-
"Commit with hash: {} added. summary: {}"
|
|
278
|
-
commit_hash, commit_summary
|
|
279
|
-
)
|
|
387
|
+
f"Commit with hash: {commit_hash} from {commit_datetime} added. summary: {commit_summary}"
|
|
280
388
|
)
|
|
281
389
|
filtered_hash_commits.append(cdict)
|
|
282
390
|
|
|
@@ -322,19 +430,45 @@ def trigger_tests_cli_command_logic(args, project_name, project_version):
|
|
|
322
430
|
commit_dict["tests_priority_lower_limit"] = tests_priority_lower_limit
|
|
323
431
|
commit_dict["tests_regexp"] = tests_regexp
|
|
324
432
|
commit_dict["tests_groups_regexp"] = tests_groups_regexp
|
|
433
|
+
commit_dict["github_org"] = args.gh_org
|
|
434
|
+
commit_dict["github_repo"] = args.gh_repo
|
|
435
|
+
if args.server_name is not None and args.server_name != "":
|
|
436
|
+
commit_dict["server_name"] = args.server_name
|
|
437
|
+
if args.build_artifacts != "":
|
|
438
|
+
commit_dict["build_artifacts"] = args.build_artifacts
|
|
439
|
+
if args.build_command != "":
|
|
440
|
+
commit_dict["build_command"] = args.build_command
|
|
441
|
+
if pull_request is not None:
|
|
442
|
+
logging.info(
|
|
443
|
+
f"Have a pull request info to include in build request {pull_request}"
|
|
444
|
+
)
|
|
445
|
+
commit_dict["pull_request"] = pull_request
|
|
325
446
|
git_hash = cdict["git_hash"]
|
|
326
447
|
git_branch = "n/a"
|
|
327
448
|
if "git_branch" in cdict:
|
|
328
449
|
git_branch = cdict["git_branch"]
|
|
329
450
|
commit_datetime = cdict["commit_datetime"]
|
|
330
451
|
commit_summary = cdict["commit_summary"]
|
|
452
|
+
reply_fields = {}
|
|
453
|
+
use_git_timestamp = args.use_git_timestamp
|
|
454
|
+
if use_git_timestamp is False:
|
|
455
|
+
reply_fields["use_git_timestamp"] = str(use_git_timestamp)
|
|
456
|
+
|
|
457
|
+
logging.info(
|
|
458
|
+
f"Setting use use_git_timestamp={use_git_timestamp}. ({args.use_git_timestamp})"
|
|
459
|
+
)
|
|
460
|
+
|
|
331
461
|
if result is True:
|
|
332
462
|
stream_id = "n/a"
|
|
333
463
|
if args.dry_run is False:
|
|
334
|
-
(
|
|
464
|
+
(
|
|
465
|
+
result,
|
|
466
|
+
reply_fields,
|
|
467
|
+
error_msg,
|
|
468
|
+
) = request_build_from_commit_info(
|
|
335
469
|
conn,
|
|
336
470
|
commit_dict,
|
|
337
|
-
|
|
471
|
+
reply_fields,
|
|
338
472
|
binary_key,
|
|
339
473
|
binary_value,
|
|
340
474
|
REDIS_BINS_EXPIRE_SECS,
|