redis-benchmarks-specification 0.1.274__tar.gz → 0.1.275__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.

Files changed (287) hide show
  1. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/PKG-INFO +1 -1
  2. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/pyproject.toml +1 -1
  3. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__common__/timeseries.py +28 -6
  4. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__runner__/args.py +36 -0
  5. redis_benchmarks_specification-0.1.275/redis_benchmarks_specification/__runner__/remote_profiling.py +329 -0
  6. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__runner__/runner.py +496 -53
  7. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/defaults.yml +3 -0
  8. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-50-fields-10B-values.yml +1 -1
  9. redis_benchmarks_specification-0.1.274/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-100B-values-cursor-count-1000.yml +0 -34
  10. redis_benchmarks_specification-0.1.274/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-10B-values-cursor-count-100.yml +0 -34
  11. redis_benchmarks_specification-0.1.274/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-10B-values.yml +0 -34
  12. redis_benchmarks_specification-0.1.274/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-sscan-cursor-count-100.yml +0 -32
  13. redis_benchmarks_specification-0.1.274/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-sscan.yml +0 -32
  14. redis_benchmarks_specification-0.1.274/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zscan.yml +0 -32
  15. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/LICENSE +0 -0
  16. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/Readme.md +0 -0
  17. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__api__/Readme.md +0 -0
  18. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__api__/__init__.py +0 -0
  19. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__api__/api.py +0 -0
  20. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__api__/app.py +0 -0
  21. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__builder__/Readme.md +0 -0
  22. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__builder__/__init__.py +0 -0
  23. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__builder__/builder.py +0 -0
  24. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__builder__/schema.py +0 -0
  25. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__cli__/__init__.py +0 -0
  26. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__cli__/args.py +0 -0
  27. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__cli__/cli.py +0 -0
  28. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__cli__/stats.py +0 -0
  29. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__common__/__init__.py +0 -0
  30. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__common__/builder_schema.py +0 -0
  31. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__common__/env.py +0 -0
  32. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__common__/github.py +0 -0
  33. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__common__/package.py +0 -0
  34. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__common__/runner.py +0 -0
  35. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__common__/spec.py +0 -0
  36. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__compare__/__init__.py +0 -0
  37. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__compare__/args.py +0 -0
  38. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__compare__/compare.py +0 -0
  39. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__init__.py +0 -0
  40. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__runner__/__init__.py +0 -0
  41. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/__init__.py +0 -0
  42. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/args.py +0 -0
  43. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py +0 -0
  44. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/build_info.py +0 -0
  45. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/clients.py +0 -0
  46. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/cpuset.py +0 -0
  47. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/docker.py +0 -0
  48. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/post_processing.py +0 -0
  49. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py +0 -0
  50. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/runners.py +0 -0
  51. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py +0 -0
  52. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__setups__/__init__.py +0 -0
  53. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__setups__/topologies.py +0 -0
  54. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__spec__/__init__.py +0 -0
  55. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__spec__/args.py +0 -0
  56. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__spec__/cli.py +0 -0
  57. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__watchdog__/__init__.py +0 -0
  58. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__watchdog__/args.py +0 -0
  59. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/__watchdog__/watchdog.py +0 -0
  60. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/commands/__init__.py +0 -0
  61. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/commands/commands.py +0 -0
  62. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/setups/builders/gcc:8.5.0-amd64-debian-buster-default.yml +0 -0
  63. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/setups/builders/gcc:8.5.0-arm64-debian-buster-default.yml +0 -0
  64. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/setups/platforms/aws-ec2-1node-c5.4xlarge.yml +0 -0
  65. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/setups/topologies/topologies.yml +0 -0
  66. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/generate.py +0 -0
  67. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hgetall-50-fields-100B-values.yml +0 -0
  68. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-20-fields-with-1B-values-pipeline-30.yml +0 -0
  69. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-1000B-values.yml +0 -0
  70. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-100B-values.yml +0 -0
  71. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values.yml +0 -0
  72. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values.yml +0 -0
  73. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-list-with-10B-values-pipeline-50.yml +0 -0
  74. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10.yml +0 -0
  75. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values.yml +0 -0
  76. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10.yml +0 -0
  77. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values.yml +0 -0
  78. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-string-get-10B-pipeline-100-nokeyprefix.yml +0 -0
  79. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-string-set-update-del-ex-36000-pipeline-10.yml +0 -0
  80. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-150Mkeys-string-set-ex-20-pipeline-10.yml +0 -0
  81. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-100B-expire-use-case.yml +0 -0
  82. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-expire-use-case.yml +0 -0
  83. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-psetex-expire-use-case.yml +0 -0
  84. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-setex-expire-use-case.yml +0 -0
  85. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-1KiB-expire-use-case.yml +0 -0
  86. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-4KiB-expire-use-case.yml +0 -0
  87. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10.yml +0 -0
  88. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-exists-pipeline-10.yml +0 -0
  89. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expire-pipeline-10.yml +0 -0
  90. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expireat-pipeline-10.yml +0 -0
  91. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10.yml +0 -0
  92. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10.yml +0 -0
  93. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-count-500-pipeline-10.yml +0 -0
  94. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-count-5000-pipeline-10.yml +0 -0
  95. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-pipeline-10.yml +0 -0
  96. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-pipeline-10.yml +0 -0
  97. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-type-pipeline-10.yml +0 -0
  98. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-touch-pipeline-10.yml +0 -0
  99. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-ttl-pipeline-10.yml +0 -0
  100. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hexists.yml +0 -0
  101. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values.yml +0 -0
  102. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hgetall-50-fields-10B-values.yml +0 -0
  103. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrby.yml +0 -0
  104. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrbyfloat.yml +0 -0
  105. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10.yml +0 -0
  106. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20.yml +0 -0
  107. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values.yml +0 -0
  108. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values.yml +0 -0
  109. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values.yml +0 -0
  110. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-rpoplpush-with-10B-values.yml +0 -0
  111. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +0 -0
  112. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values.yml +0 -0
  113. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values.yml +0 -0
  114. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-rpush-with-10B-values.yml +0 -0
  115. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-100B-values.yml +0 -0
  116. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values-pipeline-10.yml +0 -0
  117. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values.yml +0 -0
  118. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-1KiB-values.yml +0 -0
  119. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits-pipeline-10.yml +0 -0
  120. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits.yml +0 -0
  121. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-pipeline-10.yml +0 -0
  122. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements.yml +0 -0
  123. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10.yml +0 -0
  124. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values.yml +0 -0
  125. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10.yml +0 -0
  126. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values.yml +0 -0
  127. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10.yml +0 -0
  128. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values.yml +0 -0
  129. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10.yml +0 -0
  130. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100-nokeyprefix.yml +0 -0
  131. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100.yml +0 -0
  132. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-50.yml +0 -0
  133. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-500.yml +0 -0
  134. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values.yml +0 -0
  135. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values.yml +0 -0
  136. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-20KiB-values.yml +0 -0
  137. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-listpack-with-100-elements-double-score.yml +0 -0
  138. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score.yml +0 -0
  139. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score.yml +0 -0
  140. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B-pipeline-10.yml +0 -0
  141. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B.yml +0 -0
  142. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-decr.yml +0 -0
  143. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B-pipeline-10.yml +0 -0
  144. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B.yml +0 -0
  145. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-10.yml +0 -0
  146. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-100-nokeyprefix.yml +0 -0
  147. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-100.yml +0 -0
  148. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-50.yml +0 -0
  149. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-500.yml +0 -0
  150. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B.yml +0 -0
  151. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10.yml +0 -0
  152. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB.yml +0 -0
  153. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-32B-pipeline-10.yml +0 -0
  154. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-32B.yml +0 -0
  155. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incr-pipeline-10.yml +0 -0
  156. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby-pipeline-10.yml +0 -0
  157. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby.yml +0 -0
  158. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat-pipeline-10.yml +0 -0
  159. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat.yml +0 -0
  160. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-int-encoding-strlen-pipeline-10.yml +0 -0
  161. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mget-1KiB.yml +0 -0
  162. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire-pipeline-10.yml +0 -0
  163. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire.yml +0 -0
  164. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-pipeline-10.yml +0 -0
  165. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B.yml +0 -0
  166. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB-pipeline-10.yml +0 -0
  167. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB.yml +0 -0
  168. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B-pipeline-10.yml +0 -0
  169. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B.yml +0 -0
  170. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B-pipeline-10.yml +0 -0
  171. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B.yml +0 -0
  172. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-with-expiration-240B-400_conns.yml +0 -0
  173. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-set-with-ex-100B-pipeline-10.yml +0 -0
  174. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10.yml +0 -0
  175. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10.yml +0 -0
  176. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B.yml +0 -0
  177. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-100M-bits-bitmap-bitcount.yml +0 -0
  178. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-1Billion-bits-bitmap-bitcount.yml +0 -0
  179. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geopos.yml +0 -0
  180. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geosearch-fromlonlat-withcoord.yml +0 -0
  181. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist-pipeline-10.yml +0 -0
  182. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist.yml +0 -0
  183. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash-pipeline-10.yml +0 -0
  184. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash.yml +0 -0
  185. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos-pipeline-10.yml +0 -0
  186. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos.yml +0 -0
  187. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-bybox.yml +0 -0
  188. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-pipeline-10.yml +0 -0
  189. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat.yml +0 -0
  190. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall-pipeline-10.yml +0 -0
  191. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall.yml +0 -0
  192. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements-pipeline-10.yml +0 -0
  193. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements.yml +0 -0
  194. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-int-7bit-uint-lrange-all-elements-pipeline-10.yml +0 -0
  195. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-int-lrange-all-elements-pipeline-10.yml +0 -0
  196. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-llen-pipeline-10.yml +0 -0
  197. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements-pipeline-10.yml +0 -0
  198. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements.yml +0 -0
  199. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-integer.yml +0 -0
  200. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string-pipeline-10.yml +0 -0
  201. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string.yml +0 -0
  202. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer.yml +0 -0
  203. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-string.yml +0 -0
  204. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-integer.yml +0 -0
  205. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-string.yml +0 -0
  206. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements-pipeline-10.yml +0 -0
  207. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements.yml +0 -0
  208. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-2K-elements-quicklist-lrange-all-elements-longs.yml +0 -0
  209. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-hash-1K-fields-with-5B-values.yml +0 -0
  210. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-zset-with-5-elements-parsing-float-score.yml +0 -0
  211. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-zset-with-5-elements-parsing-hexa-score.yml +0 -0
  212. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-pfadd-4KB-values-pipeline-10.yml +0 -0
  213. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers-pipeline-10.yml +0 -0
  214. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers.yml +0 -0
  215. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smismember.yml +0 -0
  216. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-is-a-member.yml +0 -0
  217. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-not-a-member.yml +0 -0
  218. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smembers.yml +0 -0
  219. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smismember.yml +0 -0
  220. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sscan.yml +0 -0
  221. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10M-elements-sismember-50pct-chance.yml +0 -0
  222. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10M-elements-srem-50pct-chance.yml +0 -0
  223. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-smembers.yml +0 -0
  224. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1M-elements-sismember-50pct-chance.yml +0 -0
  225. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-200K-elements-sadd-constant.yml +0 -0
  226. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-2M-elements-sadd-increasing.yml +0 -0
  227. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zincrby-1M-elements-pipeline-1.yml +0 -0
  228. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-100K-elements-pipeline-1.yml +0 -0
  229. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-10M-elements-pipeline-1.yml +0 -0
  230. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-1M-elements-pipeline-1.yml +0 -0
  231. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrem-5M-elements-pipeline-1.yml +0 -0
  232. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1.yml +0 -0
  233. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-10.yml +0 -0
  234. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1.yml +0 -0
  235. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores.yml +0 -0
  236. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements.yml +0 -0
  237. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrange-all-elements.yml +0 -0
  238. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores.yml +0 -0
  239. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements.yml +0 -0
  240. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zscan.yml +0 -0
  241. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zrange-all-elements.yml +0 -0
  242. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10.yml +0 -0
  243. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10.yml +0 -0
  244. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements.yml +0 -0
  245. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-withscores-5-elements-pipeline-10.yml +0 -0
  246. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10.yml +0 -0
  247. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-600K-elements-zrangestore-1K-elements.yml +0 -0
  248. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-600K-elements-zrangestore-300K-elements.yml +0 -0
  249. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-listpack-zrank-100-elements-pipeline-1.yml +0 -0
  250. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-eval-hset-expire.yml +0 -0
  251. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-evalsha-hset-expire.yml +0 -0
  252. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sdiff.yml +0 -0
  253. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sinter.yml +0 -0
  254. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sunion.yml +0 -0
  255. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10.yml +0 -0
  256. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries.yml +0 -0
  257. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunion.yml +0 -0
  258. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore.yml +0 -0
  259. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values-pipeline-10.yml +0 -0
  260. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values.yml +0 -0
  261. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-400_conns.yml +0 -0
  262. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-40_conns.yml +0 -0
  263. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-2000_conns.yml +0 -0
  264. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-400_conns.yml +0 -0
  265. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-40_conns.yml +0 -0
  266. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-400_conns.yml +0 -0
  267. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-2000_conns.yml +0 -0
  268. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-400_conns.yml +0 -0
  269. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-5200_conns.yml +0 -0
  270. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-50-50-with-512B-values-with-expiration-pipeline-10-400_conns.yml +0 -0
  271. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-50Mkeys-string-set-ex-10-with-precondition-pipeline-10.yml +0 -0
  272. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-50Mkeys-string-set-ex-10years-pipeline-10.yml +0 -0
  273. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-50Mkeys-string-set-ex-3-pipeline-10.yml +0 -0
  274. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-50Mkeys-string-set-ex-random-range-pipeline-10.yml +0 -0
  275. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-50Mkeys-string-set-update-del-ex-120-pipeline-10.yml +0 -0
  276. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-80Mkeys-string-set-ex-20-precodition-multiclient-pipeline-10.yml +0 -0
  277. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello-pipeline-10.yml +0 -0
  278. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello.yml +0 -0
  279. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-connection-ping-pipeline-10.yml +0 -0
  280. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-100-subscribers.yml +0 -0
  281. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-1000-subscribers.yml +0 -0
  282. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-5000-subscribers.yml +0 -0
  283. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-50K-subscribers-5k-conns.yml +0 -0
  284. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers.yml +0 -0
  285. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-server-time-pipeline-10.yml +0 -0
  286. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/test-suites/template.txt +0 -0
  287. {redis_benchmarks_specification-0.1.274 → redis_benchmarks_specification-0.1.275}/redis_benchmarks_specification/vector-search-test-suites/vector_db_benchmark_test.yml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redis-benchmarks-specification
3
- Version: 0.1.274
3
+ Version: 0.1.275
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
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "redis-benchmarks-specification"
3
- version = "0.1.274"
3
+ version = "0.1.275"
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"
@@ -133,6 +133,9 @@ def extract_results_table(
133
133
  use_metric_context_path = False
134
134
  if len(find_res) > 1:
135
135
  use_metric_context_path = True
136
+ # Always use context path for precision_summary metrics to show actual precision levels
137
+ if "precision_summary" in metric_jsonpath and "*" in metric_jsonpath:
138
+ use_metric_context_path = True
136
139
  for metric in find_res:
137
140
  metric_name = str(metric.path)
138
141
  metric_value = float(metric.value)
@@ -142,15 +145,34 @@ def extract_results_table(
142
145
  if metric_jsonpath[0] == ".":
143
146
  metric_jsonpath = metric_jsonpath[1:]
144
147
 
148
+ # For precision_summary metrics, construct the full resolved path for display
149
+ display_path = metric_jsonpath
150
+ if "precision_summary" in metric_jsonpath and "*" in metric_jsonpath and use_metric_context_path:
151
+ # Replace the wildcard with the actual precision level
152
+ display_path = metric_jsonpath.replace("*", metric_context_path)
153
+
145
154
  # retro-compatible naming
146
155
  if use_metric_context_path is False:
147
156
  metric_name = metric_jsonpath
148
-
149
- metric_name = metric_name.replace("'", "")
150
- metric_name = metric_name.replace('"', "")
151
- metric_name = metric_name.replace("(", "")
152
- metric_name = metric_name.replace(")", "")
153
- metric_name = metric_name.replace(" ", "_")
157
+ else:
158
+ # For display purposes, use the resolved path for precision_summary
159
+ if "precision_summary" in metric_jsonpath and "*" in metric_jsonpath:
160
+ metric_name = display_path
161
+ else:
162
+ # Clean up the metric name for other cases
163
+ metric_name = metric_name.replace("'", "")
164
+ metric_name = metric_name.replace('"', "")
165
+ metric_name = metric_name.replace("(", "")
166
+ metric_name = metric_name.replace(")", "")
167
+ metric_name = metric_name.replace(" ", "_")
168
+
169
+ # Apply standard cleaning to all metric names
170
+ if not ("precision_summary" in metric_jsonpath and "*" in metric_jsonpath and use_metric_context_path):
171
+ metric_name = metric_name.replace("'", "")
172
+ metric_name = metric_name.replace('"', "")
173
+ metric_name = metric_name.replace("(", "")
174
+ metric_name = metric_name.replace(")", "")
175
+ metric_name = metric_name.replace(" ", "_")
154
176
 
155
177
  results_matrix.append(
156
178
  [
@@ -225,4 +225,40 @@ def create_client_runner_args(project_name):
225
225
  default="",
226
226
  help="UNIX Domain socket name",
227
227
  )
228
+ parser.add_argument(
229
+ "--enable-remote-profiling",
230
+ default=False,
231
+ action="store_true",
232
+ help="Enable remote profiling of Redis processes via HTTP GET endpoint. Profiles are collected in folded format during benchmark execution.",
233
+ )
234
+ parser.add_argument(
235
+ "--remote-profile-host",
236
+ type=str,
237
+ default="localhost",
238
+ help="Host for remote profiling HTTP endpoint. Default is localhost.",
239
+ )
240
+ parser.add_argument(
241
+ "--remote-profile-port",
242
+ type=int,
243
+ default=8080,
244
+ help="Port for remote profiling HTTP endpoint. Default is 8080.",
245
+ )
246
+ parser.add_argument(
247
+ "--remote-profile-output-dir",
248
+ type=str,
249
+ default="profiles",
250
+ help="Directory to store remote profiling output files. Default is 'profiles/'.",
251
+ )
252
+ parser.add_argument(
253
+ "--remote-profile-username",
254
+ type=str,
255
+ default=None,
256
+ help="Username for HTTP basic authentication to remote profiling endpoint. Optional.",
257
+ )
258
+ parser.add_argument(
259
+ "--remote-profile-password",
260
+ type=str,
261
+ default=None,
262
+ help="Password for HTTP basic authentication to remote profiling endpoint. Optional.",
263
+ )
228
264
  return parser
@@ -0,0 +1,329 @@
1
+ """
2
+ Remote profiling utilities for Redis benchmark runner.
3
+
4
+ This module provides functionality to trigger remote profiling of Redis processes
5
+ via HTTP GET endpoints during benchmark execution. Profiles are collected in
6
+ folded format for performance analysis.
7
+ """
8
+
9
+ import datetime
10
+ import logging
11
+ import os
12
+ import threading
13
+ import time
14
+ from pathlib import Path
15
+ from typing import Optional, Dict, Any
16
+ import requests
17
+
18
+
19
+ def extract_redis_pid(redis_conn) -> Optional[int]:
20
+ """
21
+ Extract Redis process ID from Redis INFO command.
22
+
23
+ Args:
24
+ redis_conn: Redis connection object
25
+
26
+ Returns:
27
+ Redis process ID as integer, or None if not found
28
+ """
29
+ try:
30
+ redis_info = redis_conn.info()
31
+ pid = redis_info.get("process_id")
32
+ if pid is not None:
33
+ logging.info(f"Extracted Redis PID: {pid}")
34
+ return int(pid)
35
+ else:
36
+ logging.warning("Redis process_id not found in INFO command")
37
+ return None
38
+ except Exception as e:
39
+ logging.error(f"Failed to extract Redis PID: {e}")
40
+ return None
41
+
42
+
43
+ def extract_redis_metadata(redis_conn) -> Dict[str, Any]:
44
+ """
45
+ Extract Redis metadata for profile comments.
46
+
47
+ Args:
48
+ redis_conn: Redis connection object
49
+
50
+ Returns:
51
+ Dictionary containing Redis metadata
52
+ """
53
+ try:
54
+ redis_info = redis_conn.info()
55
+ metadata = {
56
+ "redis_version": redis_info.get("redis_version", "unknown"),
57
+ "redis_git_sha1": redis_info.get("redis_git_sha1", "unknown"),
58
+ "redis_git_dirty": redis_info.get("redis_git_dirty", "unknown"),
59
+ "redis_build_id": redis_info.get("redis_build_id", "unknown"),
60
+ "process_id": redis_info.get("process_id", "unknown"),
61
+ "tcp_port": redis_info.get("tcp_port", "unknown"),
62
+ }
63
+
64
+ # Use build_id if git_sha1 is empty or 0
65
+ if metadata["redis_git_sha1"] in ("", 0, "0"):
66
+ metadata["redis_git_sha1"] = metadata["redis_build_id"]
67
+
68
+ logging.info(f"Extracted Redis metadata: version={metadata['redis_version']}, sha={metadata['redis_git_sha1']}, pid={metadata['process_id']}")
69
+ return metadata
70
+ except Exception as e:
71
+ logging.error(f"Failed to extract Redis metadata: {e}")
72
+ return {
73
+ "redis_version": "unknown",
74
+ "redis_git_sha1": "unknown",
75
+ "redis_git_dirty": "unknown",
76
+ "redis_build_id": "unknown",
77
+ "process_id": "unknown",
78
+ "tcp_port": "unknown",
79
+ }
80
+
81
+
82
+ def calculate_profile_duration(benchmark_duration_seconds: int) -> int:
83
+ """
84
+ Calculate profiling duration based on benchmark duration.
85
+
86
+ Args:
87
+ benchmark_duration_seconds: Expected benchmark duration in seconds
88
+
89
+ Returns:
90
+ Profiling duration in seconds (minimum: benchmark duration, maximum: 30)
91
+ """
92
+ # Minimum duration is the benchmark duration, maximum is 30 seconds
93
+ duration = min(max(benchmark_duration_seconds, 10), 30)
94
+ logging.info(f"Calculated profile duration: {duration}s (benchmark: {benchmark_duration_seconds}s)")
95
+ return duration
96
+
97
+
98
+ def trigger_remote_profile(
99
+ host: str,
100
+ port: int,
101
+ pid: int,
102
+ duration: int,
103
+ timeout: int = 60,
104
+ username: Optional[str] = None,
105
+ password: Optional[str] = None
106
+ ) -> Optional[str]:
107
+ """
108
+ Trigger remote profiling via HTTP GET request.
109
+
110
+ Args:
111
+ host: Remote host address
112
+ port: Remote port number
113
+ pid: Redis process ID
114
+ duration: Profiling duration in seconds
115
+ timeout: HTTP request timeout in seconds
116
+ username: Optional username for HTTP basic authentication
117
+ password: Optional password for HTTP basic authentication
118
+
119
+ Returns:
120
+ Profile content in folded format, or None if failed
121
+ """
122
+ url = f"http://{host}:{port}/debug/folded/profile"
123
+ params = {
124
+ "pid": pid,
125
+ "seconds": duration
126
+ }
127
+
128
+ # Prepare authentication if provided
129
+ auth = None
130
+ if username is not None and password is not None:
131
+ auth = (username, password)
132
+ logging.info(f"Using HTTP basic authentication with username: {username}")
133
+
134
+ try:
135
+ logging.info(f"Triggering remote profile: {url} with PID={pid}, duration={duration}s")
136
+ response = requests.get(url, params=params, timeout=timeout, auth=auth)
137
+ response.raise_for_status()
138
+
139
+ profile_content = response.text
140
+ logging.info(f"Successfully collected profile: {len(profile_content)} characters")
141
+ return profile_content
142
+
143
+ except requests.exceptions.Timeout:
144
+ logging.error(f"Remote profiling request timed out after {timeout}s")
145
+ return None
146
+ except requests.exceptions.ConnectionError:
147
+ logging.error(f"Failed to connect to remote profiling endpoint: {host}:{port}")
148
+ return None
149
+ except requests.exceptions.HTTPError as e:
150
+ logging.error(f"HTTP error during remote profiling: {e}")
151
+ if e.response.status_code == 401:
152
+ logging.error("Authentication failed - check username and password")
153
+ return None
154
+ except Exception as e:
155
+ logging.error(f"Unexpected error during remote profiling: {e}")
156
+ return None
157
+
158
+
159
+ def save_profile_with_metadata(
160
+ profile_content: str,
161
+ benchmark_name: str,
162
+ output_dir: str,
163
+ redis_metadata: Dict[str, Any],
164
+ duration: int
165
+ ) -> Optional[str]:
166
+ """
167
+ Save profile content to file with metadata comments.
168
+
169
+ Args:
170
+ profile_content: Profile data in folded format
171
+ benchmark_name: Name of the benchmark
172
+ output_dir: Output directory path
173
+ redis_metadata: Redis metadata dictionary
174
+ duration: Profiling duration in seconds
175
+
176
+ Returns:
177
+ Path to saved file, or None if failed
178
+ """
179
+ try:
180
+ # Create output directory if it doesn't exist
181
+ Path(output_dir).mkdir(parents=True, exist_ok=True)
182
+
183
+ # Generate filename
184
+ filename = f"{benchmark_name}.folded"
185
+ filepath = os.path.join(output_dir, filename)
186
+
187
+ # Generate timestamp
188
+ timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
189
+
190
+ # Create metadata comment
191
+ metadata_comment = (
192
+ f"# profile from redis sha = {redis_metadata['redis_git_sha1']} "
193
+ f"and pid {redis_metadata['process_id']} for duration of {duration}s. "
194
+ f"collection in date {timestamp}\n"
195
+ f"# redis_version: {redis_metadata['redis_version']}\n"
196
+ f"# redis_git_dirty: {redis_metadata['redis_git_dirty']}\n"
197
+ f"# tcp_port: {redis_metadata['tcp_port']}\n"
198
+ )
199
+
200
+ # Write file with metadata and profile content
201
+ with open(filepath, 'w') as f:
202
+ f.write(metadata_comment)
203
+ f.write(profile_content)
204
+
205
+ logging.info(f"Saved profile to: {filepath}")
206
+ return filepath
207
+
208
+ except Exception as e:
209
+ logging.error(f"Failed to save profile file: {e}")
210
+ return None
211
+
212
+
213
+ class RemoteProfiler:
214
+ """
215
+ Remote profiler class to handle threaded profiling execution.
216
+ """
217
+
218
+ def __init__(self, host: str, port: int, output_dir: str, username: Optional[str] = None, password: Optional[str] = None):
219
+ self.host = host
220
+ self.port = port
221
+ self.output_dir = output_dir
222
+ self.username = username
223
+ self.password = password
224
+ self.profile_thread = None
225
+ self.profile_result = None
226
+ self.profile_error = None
227
+
228
+ def start_profiling(
229
+ self,
230
+ redis_conn,
231
+ benchmark_name: str,
232
+ benchmark_duration_seconds: int
233
+ ) -> bool:
234
+ """
235
+ Start profiling in a separate thread.
236
+
237
+ Args:
238
+ redis_conn: Redis connection object
239
+ benchmark_name: Name of the benchmark
240
+ benchmark_duration_seconds: Expected benchmark duration
241
+
242
+ Returns:
243
+ True if profiling thread started successfully, False otherwise
244
+ """
245
+ try:
246
+ # Extract Redis metadata and PID
247
+ redis_metadata = extract_redis_metadata(redis_conn)
248
+ pid = redis_metadata.get("process_id")
249
+
250
+ if pid == "unknown" or pid is None:
251
+ logging.error("Cannot start remote profiling: Redis PID not available")
252
+ return False
253
+
254
+ # Calculate profiling duration
255
+ duration = calculate_profile_duration(benchmark_duration_seconds)
256
+
257
+ # Start profiling thread
258
+ self.profile_thread = threading.Thread(
259
+ target=self._profile_worker,
260
+ args=(pid, duration, benchmark_name, redis_metadata),
261
+ daemon=True
262
+ )
263
+ self.profile_thread.start()
264
+
265
+ logging.info(f"Started remote profiling thread for benchmark: {benchmark_name}")
266
+ return True
267
+
268
+ except Exception as e:
269
+ logging.error(f"Failed to start remote profiling: {e}")
270
+ return False
271
+
272
+ def _profile_worker(self, pid: int, duration: int, benchmark_name: str, redis_metadata: Dict[str, Any]):
273
+ """
274
+ Worker function for profiling thread.
275
+ """
276
+ try:
277
+ # Trigger remote profiling
278
+ profile_content = trigger_remote_profile(
279
+ self.host, self.port, pid, duration,
280
+ username=self.username, password=self.password
281
+ )
282
+
283
+ if profile_content:
284
+ # Save profile with metadata
285
+ filepath = save_profile_with_metadata(
286
+ profile_content, benchmark_name, self.output_dir, redis_metadata, duration
287
+ )
288
+ self.profile_result = filepath
289
+ else:
290
+ self.profile_error = "Failed to collect profile content"
291
+
292
+ except Exception as e:
293
+ self.profile_error = f"Profile worker error: {e}"
294
+ logging.error(self.profile_error)
295
+
296
+ def wait_for_completion(self, timeout: int = 60) -> bool:
297
+ """
298
+ Wait for profiling thread to complete.
299
+
300
+ Args:
301
+ timeout: Maximum time to wait in seconds
302
+
303
+ Returns:
304
+ True if completed successfully, False if timed out or failed
305
+ """
306
+ if self.profile_thread is None:
307
+ return False
308
+
309
+ try:
310
+ self.profile_thread.join(timeout=timeout)
311
+
312
+ if self.profile_thread.is_alive():
313
+ logging.warning(f"Remote profiling thread did not complete within {timeout}s")
314
+ return False
315
+
316
+ if self.profile_error:
317
+ logging.error(f"Remote profiling failed: {self.profile_error}")
318
+ return False
319
+
320
+ if self.profile_result:
321
+ logging.info(f"Remote profiling completed successfully: {self.profile_result}")
322
+ return True
323
+ else:
324
+ logging.warning("Remote profiling completed but no result available")
325
+ return False
326
+
327
+ except Exception as e:
328
+ logging.error(f"Error waiting for remote profiling completion: {e}")
329
+ return False