redis-benchmarks-specification 0.1.333__tar.gz → 0.1.334__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 (288) hide show
  1. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/PKG-INFO +1 -1
  2. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/pyproject.toml +1 -1
  3. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__runner__/runner.py +17 -1
  4. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py +312 -42
  5. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/LICENSE +0 -0
  6. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/Readme.md +0 -0
  7. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__api__/Readme.md +0 -0
  8. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__api__/__init__.py +0 -0
  9. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__api__/api.py +0 -0
  10. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__api__/app.py +0 -0
  11. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__builder__/Readme.md +0 -0
  12. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__builder__/__init__.py +0 -0
  13. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__builder__/builder.py +0 -0
  14. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__builder__/schema.py +0 -0
  15. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__cli__/__init__.py +0 -0
  16. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__cli__/args.py +0 -0
  17. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__cli__/cli.py +0 -0
  18. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__cli__/stats.py +0 -0
  19. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__common__/__init__.py +0 -0
  20. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__common__/builder_schema.py +0 -0
  21. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__common__/env.py +0 -0
  22. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__common__/github.py +0 -0
  23. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__common__/package.py +0 -0
  24. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__common__/runner.py +0 -0
  25. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__common__/spec.py +0 -0
  26. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__common__/suppress_warnings.py +0 -0
  27. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__common__/timeseries.py +0 -0
  28. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__compare__/__init__.py +0 -0
  29. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__compare__/args.py +0 -0
  30. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__compare__/compare.py +0 -0
  31. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__init__.py +0 -0
  32. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__runner__/__init__.py +0 -0
  33. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__runner__/args.py +0 -0
  34. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__runner__/remote_profiling.py +0 -0
  35. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/__init__.py +0 -0
  36. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/args.py +0 -0
  37. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py +0 -0
  38. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/build_info.py +0 -0
  39. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/clients.py +0 -0
  40. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/cpuset.py +0 -0
  41. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/docker.py +0 -0
  42. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/post_processing.py +0 -0
  43. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py +0 -0
  44. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__self_contained_coordinator__/runners.py +0 -0
  45. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__setups__/__init__.py +0 -0
  46. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__setups__/topologies.py +0 -0
  47. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__spec__/__init__.py +0 -0
  48. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__spec__/args.py +0 -0
  49. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__spec__/cli.py +0 -0
  50. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__watchdog__/__init__.py +0 -0
  51. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__watchdog__/args.py +0 -0
  52. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/__watchdog__/watchdog.py +0 -0
  53. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/commands/__init__.py +0 -0
  54. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/commands/commands.py +0 -0
  55. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/setups/builders/gcc:15.2.0-amd64-debian-bookworm-default.yml +0 -0
  56. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/setups/builders/gcc:15.2.0-arm64-debian-bookworm-default.yml +0 -0
  57. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/setups/platforms/aws-ec2-1node-c5.4xlarge.yml +0 -0
  58. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/setups/topologies/topologies.yml +0 -0
  59. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/defaults.yml +0 -0
  60. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/generate.py +0 -0
  61. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hgetall-50-fields-100B-values.yml +0 -0
  62. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-20-fields-with-1B-values-pipeline-30.yml +0 -0
  63. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-1000B-values.yml +0 -0
  64. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-100B-values.yml +0 -0
  65. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values.yml +0 -0
  66. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values.yml +0 -0
  67. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-list-rpush-bulkload-pipeline-50.yml +0 -0
  68. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-list-with-10B-values-pipeline-50.yml +0 -0
  69. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10.yml +0 -0
  70. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values.yml +0 -0
  71. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10.yml +0 -0
  72. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values.yml +0 -0
  73. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-string-get-10B-pipeline-100-nokeyprefix.yml +0 -0
  74. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Kkeys-hash-listpack-500-fields-update-20-fields-with-1B-to-64B-values.yml +0 -0
  75. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-100B-expire-use-case.yml +0 -0
  76. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-expire-use-case.yml +0 -0
  77. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-psetex-expire-use-case.yml +0 -0
  78. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-setex-expire-use-case.yml +0 -0
  79. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-1KiB-expire-use-case.yml +0 -0
  80. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-4KiB-expire-use-case.yml +0 -0
  81. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10.yml +0 -0
  82. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-exists-pipeline-10.yml +0 -0
  83. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expire-pipeline-10.yml +0 -0
  84. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expireat-pipeline-10.yml +0 -0
  85. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10.yml +0 -0
  86. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10.yml +0 -0
  87. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-count-500-pipeline-10.yml +0 -0
  88. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-count-5000-pipeline-10.yml +0 -0
  89. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-pipeline-10.yml +0 -0
  90. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-pipeline-10.yml +0 -0
  91. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-type-pipeline-10.yml +0 -0
  92. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-touch-pipeline-10.yml +0 -0
  93. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-ttl-pipeline-10.yml +0 -0
  94. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hexists.yml +0 -0
  95. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values.yml +0 -0
  96. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hgetall-50-fields-10B-values.yml +0 -0
  97. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrby.yml +0 -0
  98. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrbyfloat.yml +0 -0
  99. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10.yml +0 -0
  100. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20.yml +0 -0
  101. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values.yml +0 -0
  102. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values.yml +0 -0
  103. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values.yml +0 -0
  104. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-rpoplpush-with-10B-values.yml +0 -0
  105. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +0 -0
  106. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values.yml +0 -0
  107. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values.yml +0 -0
  108. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-rpush-with-10B-values.yml +0 -0
  109. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-100B-values.yml +0 -0
  110. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values-pipeline-10.yml +0 -0
  111. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values.yml +0 -0
  112. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-1KiB-values.yml +0 -0
  113. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits-pipeline-10.yml +0 -0
  114. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits.yml +0 -0
  115. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-pipeline-10.yml +0 -0
  116. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements.yml +0 -0
  117. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10.yml +0 -0
  118. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values.yml +0 -0
  119. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10.yml +0 -0
  120. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values.yml +0 -0
  121. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10.yml +0 -0
  122. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values.yml +0 -0
  123. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10.yml +0 -0
  124. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100-nokeyprefix.yml +0 -0
  125. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100.yml +0 -0
  126. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-50.yml +0 -0
  127. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-500.yml +0 -0
  128. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values.yml +0 -0
  129. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values-pipeline-10.yml +0 -0
  130. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values.yml +0 -0
  131. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-20KiB-values.yml +0 -0
  132. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-listpack-with-100-elements-double-score.yml +0 -0
  133. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score.yml +0 -0
  134. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score.yml +0 -0
  135. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B-pipeline-10.yml +0 -0
  136. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B.yml +0 -0
  137. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-decr.yml +0 -0
  138. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B-pipeline-10.yml +0 -0
  139. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B.yml +0 -0
  140. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-10.yml +0 -0
  141. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-100-nokeyprefix.yml +0 -0
  142. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-100.yml +0 -0
  143. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-50.yml +0 -0
  144. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-500.yml +0 -0
  145. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B.yml +0 -0
  146. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10.yml +0 -0
  147. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB.yml +0 -0
  148. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-32B-pipeline-10.yml +0 -0
  149. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-32B.yml +0 -0
  150. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incr-pipeline-10.yml +0 -0
  151. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby-pipeline-10.yml +0 -0
  152. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby.yml +0 -0
  153. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat-pipeline-10.yml +0 -0
  154. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat.yml +0 -0
  155. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-int-encoding-strlen-pipeline-10.yml +0 -0
  156. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mget-1KiB.yml +0 -0
  157. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire-pipeline-10.yml +0 -0
  158. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire.yml +0 -0
  159. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-pipeline-10.yml +0 -0
  160. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B.yml +0 -0
  161. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB-pipeline-10.yml +0 -0
  162. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB.yml +0 -0
  163. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B-pipeline-10.yml +0 -0
  164. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B.yml +0 -0
  165. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B-pipeline-10.yml +0 -0
  166. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B.yml +0 -0
  167. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-with-expiration-240B-400_conns.yml +0 -0
  168. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-set-with-ex-100B-pipeline-10.yml +0 -0
  169. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10.yml +0 -0
  170. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml +0 -0
  171. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10.yml +0 -0
  172. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B.yml +0 -0
  173. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-100M-bits-bitmap-bitcount.yml +0 -0
  174. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-1Billion-bits-bitmap-bitcount.yml +0 -0
  175. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geopos.yml +0 -0
  176. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geosearch-fromlonlat-withcoord.yml +0 -0
  177. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist-pipeline-10.yml +0 -0
  178. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist.yml +0 -0
  179. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash-pipeline-10.yml +0 -0
  180. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash.yml +0 -0
  181. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos-pipeline-10.yml +0 -0
  182. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos.yml +0 -0
  183. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-bybox.yml +0 -0
  184. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-pipeline-10.yml +0 -0
  185. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat.yml +0 -0
  186. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall-pipeline-10.yml +0 -0
  187. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall.yml +0 -0
  188. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-100B-values-cursor-count-1000.yml +0 -0
  189. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-10B-values-cursor-count-100.yml +0 -0
  190. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-10B-values.yml +0 -0
  191. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-50-fields-10B-values.yml +0 -0
  192. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/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.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements.yml +0 -0
  194. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/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.333 → redis_benchmarks_specification-0.1.334}/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.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-llen-pipeline-10.yml +0 -0
  197. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/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.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements.yml +0 -0
  199. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-integer.yml +0 -0
  200. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string-pipeline-10.yml +0 -0
  201. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string.yml +0 -0
  202. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer.yml +0 -0
  203. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-string.yml +0 -0
  204. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-integer.yml +0 -0
  205. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-string.yml +0 -0
  206. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/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.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements.yml +0 -0
  208. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/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.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-hash-1K-fields-with-5B-values.yml +0 -0
  210. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/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.333 → redis_benchmarks_specification-0.1.334}/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.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-pfadd-4KB-values-pipeline-10.yml +0 -0
  213. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers-pipeline-10.yml +0 -0
  214. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers.yml +0 -0
  215. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smismember.yml +0 -0
  216. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-is-a-member.yml +0 -0
  217. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-not-a-member.yml +0 -0
  218. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smembers.yml +0 -0
  219. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smismember.yml +0 -0
  220. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sscan.yml +0 -0
  221. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10M-elements-sismember-50pct-chance.yml +0 -0
  222. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10M-elements-srem-50pct-chance.yml +0 -0
  223. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-smembers.yml +0 -0
  224. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-sscan-cursor-count-100.yml +0 -0
  225. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-sscan.yml +0 -0
  226. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1M-elements-sismember-50pct-chance.yml +0 -0
  227. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-200K-elements-sadd-constant.yml +0 -0
  228. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-2M-elements-sadd-increasing.yml +0 -0
  229. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zincrby-1M-elements-pipeline-1.yml +0 -0
  230. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-100K-elements-pipeline-1.yml +0 -0
  231. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-10M-elements-pipeline-1.yml +0 -0
  232. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-1M-elements-pipeline-1.yml +0 -0
  233. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrem-5M-elements-pipeline-1.yml +0 -0
  234. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1.yml +0 -0
  235. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-10.yml +0 -0
  236. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1.yml +0 -0
  237. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores.yml +0 -0
  238. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements.yml +0 -0
  239. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrange-all-elements.yml +0 -0
  240. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores.yml +0 -0
  241. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements.yml +0 -0
  242. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zscan.yml +0 -0
  243. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zrange-all-elements.yml +0 -0
  244. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zscan.yml +0 -0
  245. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10.yml +0 -0
  246. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10.yml +0 -0
  247. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements.yml +0 -0
  248. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-withscores-5-elements-pipeline-10.yml +0 -0
  249. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10.yml +0 -0
  250. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-600K-elements-zrangestore-1K-elements.yml +0 -0
  251. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-600K-elements-zrangestore-300K-elements.yml +0 -0
  252. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-listpack-zrank-100-elements-pipeline-1.yml +0 -0
  253. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-eval-hset-expire.yml +0 -0
  254. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-evalsha-hset-expire.yml +0 -0
  255. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sdiff.yml +0 -0
  256. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sinter.yml +0 -0
  257. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sunion.yml +0 -0
  258. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10.yml +0 -0
  259. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries.yml +0 -0
  260. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunion.yml +0 -0
  261. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore.yml +0 -0
  262. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values-pipeline-10.yml +0 -0
  263. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values.yml +0 -0
  264. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-400_conns.yml +0 -0
  265. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-40_conns.yml +0 -0
  266. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-2000_conns.yml +0 -0
  267. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-400_conns.yml +0 -0
  268. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-40_conns.yml +0 -0
  269. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-400_conns.yml +0 -0
  270. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-2000_conns.yml +0 -0
  271. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-400_conns.yml +0 -0
  272. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-5200_conns.yml +0 -0
  273. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-50-50-with-512B-values-with-expiration-pipeline-10-400_conns.yml +0 -0
  274. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello-pipeline-10.yml +0 -0
  275. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello.yml +0 -0
  276. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-connection-ping-pipeline-10.yml +0 -0
  277. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-100-subscribers.yml +0 -0
  278. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-1000-subscribers.yml +0 -0
  279. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-5000-subscribers.yml +0 -0
  280. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-50K-subscribers-5k-conns.yml +0 -0
  281. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers.yml +0 -0
  282. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-server-time-pipeline-10.yml +0 -0
  283. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-hash-100k-sessions.yml +0 -0
  284. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-string-100k-sessions.yml +0 -0
  285. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-100k-sessions.yml +0 -0
  286. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-1k-sessions.yml +0 -0
  287. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/redis_benchmarks_specification/test-suites/template.txt +0 -0
  288. {redis_benchmarks_specification-0.1.333 → redis_benchmarks_specification-0.1.334}/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.333
3
+ Version: 0.1.334
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.333"
3
+ version = "0.1.334"
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"
@@ -182,7 +182,7 @@ def validate_benchmark_metrics(
182
182
  "all_stats.totals.ops/sec",
183
183
  ]
184
184
 
185
- latency_patterns = ["latency", "p50", "p95", "p99", "p999", "usec", "msec"]
185
+ latency_patterns = ["p50", "p95", "p99", "p999", "percentile"]
186
186
 
187
187
  validation_errors = []
188
188
 
@@ -195,6 +195,22 @@ def validate_benchmark_metrics(
195
195
  elif isinstance(data, (int, float)):
196
196
  metric_path_lower = path.lower()
197
197
 
198
+ # Skip Waits metrics as they can legitimately be 0
199
+ if "waits" in metric_path_lower:
200
+ return
201
+
202
+ # Skip general latency metrics that can legitimately be 0
203
+ # Only validate specific percentile latencies (p50, p95, etc.)
204
+ if any(
205
+ pattern in metric_path_lower
206
+ for pattern in [
207
+ "average latency",
208
+ "totals.latency",
209
+ "all_stats.totals.latency",
210
+ ]
211
+ ):
212
+ return
213
+
198
214
  # Check throughput metrics
199
215
  for pattern in throughput_patterns:
200
216
  if pattern in metric_path_lower:
@@ -191,6 +191,22 @@ class CoordinatorHTTPHandler(BaseHTTPRequestHandler):
191
191
  "service": "redis-benchmarks-self-contained-coordinator",
192
192
  }
193
193
  self.wfile.write(json.dumps(response).encode())
194
+
195
+ elif parsed_path.path == "/containers":
196
+ # Check for stuck containers
197
+ stuck_containers = self._check_stuck_containers()
198
+
199
+ self.send_response(200)
200
+ self.send_header("Content-type", "application/json")
201
+ self.end_headers()
202
+ response = {
203
+ "status": "success",
204
+ "stuck_containers": stuck_containers,
205
+ "total_stuck": len(stuck_containers),
206
+ "timestamp": datetime.datetime.utcnow().isoformat(),
207
+ }
208
+ self.wfile.write(json.dumps(response).encode())
209
+
194
210
  else:
195
211
  self.send_response(404)
196
212
  self.send_header("Content-type", "application/json")
@@ -259,7 +275,9 @@ class CoordinatorHTTPHandler(BaseHTTPRequestHandler):
259
275
  flush_time = datetime.datetime.utcnow()
260
276
  _flush_timestamp = flush_time
261
277
 
262
- logging.info("Flush requested via HTTP endpoint - stopping all containers and processes")
278
+ logging.info(
279
+ "Flush requested via HTTP endpoint - stopping all containers and processes"
280
+ )
263
281
 
264
282
  # Perform flush cleanup
265
283
  self._perform_flush_cleanup()
@@ -271,7 +289,7 @@ class CoordinatorHTTPHandler(BaseHTTPRequestHandler):
271
289
  "status": "success",
272
290
  "message": "Flush completed - all containers stopped and processes killed",
273
291
  "flush_timestamp": flush_time.isoformat(),
274
- "timestamp": datetime.datetime.utcnow().isoformat()
292
+ "timestamp": datetime.datetime.utcnow().isoformat(),
275
293
  }
276
294
  self.wfile.write(json.dumps(response).encode())
277
295
 
@@ -283,7 +301,7 @@ class CoordinatorHTTPHandler(BaseHTTPRequestHandler):
283
301
  response = {
284
302
  "status": "error",
285
303
  "message": f"Flush failed: {str(e)}",
286
- "timestamp": datetime.datetime.utcnow().isoformat()
304
+ "timestamp": datetime.datetime.utcnow().isoformat(),
287
305
  }
288
306
  self.wfile.write(json.dumps(response).encode())
289
307
 
@@ -300,27 +318,114 @@ class CoordinatorHTTPHandler(BaseHTTPRequestHandler):
300
318
  # Kill all memtier processes
301
319
  try:
302
320
  logging.info("Killing all memtier_benchmark processes")
303
- subprocess.run(["pkill", "-f", "memtier_benchmark"], check=False)
304
- subprocess.run(["pkill", "-f", "memtier"], check=False)
321
+ result = subprocess.run(
322
+ ["pkill", "-f", "memtier_benchmark"], capture_output=True, text=True
323
+ )
324
+ if result.returncode == 0:
325
+ logging.info("Successfully killed memtier_benchmark processes")
326
+ else:
327
+ logging.info("No memtier_benchmark processes found to kill")
328
+
329
+ result = subprocess.run(
330
+ ["pkill", "-f", "memtier"], capture_output=True, text=True
331
+ )
332
+ if result.returncode == 0:
333
+ logging.info("Successfully killed memtier processes")
334
+ else:
335
+ logging.info("No memtier processes found to kill")
305
336
  except Exception as e:
306
337
  logging.warning(f"Error killing memtier processes: {e}")
307
338
 
308
- # Stop all Docker containers
339
+ # Stop all Docker containers with force if needed
309
340
  try:
310
341
  logging.info("Stopping all Docker containers")
311
342
  client = docker.from_env()
312
343
  containers = client.containers.list()
344
+
345
+ if not containers:
346
+ logging.info("No running containers found")
347
+ return
348
+
349
+ logging.info(f"Found {len(containers)} running containers")
350
+
313
351
  for container in containers:
314
352
  try:
315
- logging.info(f"Stopping container: {container.name} ({container.id[:12]})")
316
- container.stop(timeout=5)
353
+ # Get container info
354
+ created_time = container.attrs["Created"]
355
+ uptime = (
356
+ datetime.datetime.utcnow()
357
+ - datetime.datetime.fromisoformat(
358
+ created_time.replace("Z", "+00:00")
359
+ )
360
+ )
361
+
362
+ logging.info(
363
+ f"Stopping container: {container.name} ({container.id[:12]}) - uptime: {uptime}"
364
+ )
365
+
366
+ # Try graceful stop first
367
+ container.stop(timeout=10)
368
+ logging.info(f"Successfully stopped container: {container.name}")
369
+
317
370
  except Exception as e:
318
371
  logging.warning(f"Error stopping container {container.name}: {e}")
372
+ try:
373
+ # Force kill if graceful stop failed
374
+ logging.info(f"Force killing container: {container.name}")
375
+ container.kill()
376
+ logging.info(
377
+ f"Successfully force killed container: {container.name}"
378
+ )
379
+ except Exception as e2:
380
+ logging.error(
381
+ f"Failed to force kill container {container.name}: {e2}"
382
+ )
383
+
319
384
  except Exception as e:
320
385
  logging.warning(f"Error accessing Docker client: {e}")
321
386
 
322
387
  logging.info("Flush cleanup completed")
323
388
 
389
+ def _check_stuck_containers(self, max_hours=2):
390
+ """Check for containers running longer than max_hours and return info"""
391
+ try:
392
+ client = docker.from_env()
393
+ containers = client.containers.list()
394
+ stuck_containers = []
395
+
396
+ for container in containers:
397
+ try:
398
+ created_time = container.attrs["Created"]
399
+ uptime = (
400
+ datetime.datetime.utcnow()
401
+ - datetime.datetime.fromisoformat(
402
+ created_time.replace("Z", "+00:00")
403
+ )
404
+ )
405
+ uptime_hours = uptime.total_seconds() / 3600
406
+
407
+ if uptime_hours > max_hours:
408
+ stuck_containers.append(
409
+ {
410
+ "name": container.name,
411
+ "id": container.id[:12],
412
+ "image": (
413
+ container.image.tags[0]
414
+ if container.image.tags
415
+ else "unknown"
416
+ ),
417
+ "uptime_hours": round(uptime_hours, 2),
418
+ "status": container.status,
419
+ }
420
+ )
421
+ except Exception as e:
422
+ logging.warning(f"Error checking container {container.name}: {e}")
423
+
424
+ return stuck_containers
425
+ except Exception as e:
426
+ logging.warning(f"Error accessing Docker client: {e}")
427
+ return []
428
+
324
429
 
325
430
  def start_http_server(port=8080):
326
431
  """Start the HTTP server in a separate thread"""
@@ -331,6 +436,7 @@ def start_http_server(port=8080):
331
436
  logging.info(f"Starting HTTP server on port {port}")
332
437
  logging.info(f"Available endpoints:")
333
438
  logging.info(f" GET /ping - Health check")
439
+ logging.info(f" GET /containers - Check for stuck containers")
334
440
  logging.info(
335
441
  f" POST /reset-queue - Reset pending streams and skip running tests"
336
442
  )
@@ -865,7 +971,11 @@ def process_self_contained_coordinator_stream(
865
971
 
866
972
  # Check if this work should be ignored due to flush
867
973
  global _flush_timestamp
868
- if _flush_timestamp is not None and use_git_timestamp and git_timestamp_ms is not None:
974
+ if (
975
+ _flush_timestamp is not None
976
+ and use_git_timestamp
977
+ and git_timestamp_ms is not None
978
+ ):
869
979
  # Convert flush timestamp to milliseconds for comparison
870
980
  flush_timestamp_ms = int(_flush_timestamp.timestamp() * 1000)
871
981
  if git_timestamp_ms < flush_timestamp_ms:
@@ -1045,7 +1155,9 @@ def process_self_contained_coordinator_stream(
1045
1155
  command_regexp,
1046
1156
  )
1047
1157
 
1048
- logging.info(f"Adding {len(filtered_test_files)} tests to pending test list")
1158
+ logging.info(
1159
+ f"Adding {len(filtered_test_files)} tests to pending test list"
1160
+ )
1049
1161
 
1050
1162
  # Use pipeline for efficient bulk operations
1051
1163
  pipeline = github_event_conn.pipeline()
@@ -1068,7 +1180,9 @@ def process_self_contained_coordinator_stream(
1068
1180
  pipeline.expire(stream_test_list_pending, REDIS_BINS_EXPIRE_SECS)
1069
1181
  pipeline.execute()
1070
1182
 
1071
- logging.info(f"Successfully added {len(test_names_added)} tests to pending test list in key {stream_test_list_pending}")
1183
+ logging.info(
1184
+ f"Successfully added {len(test_names_added)} tests to pending test list in key {stream_test_list_pending}"
1185
+ )
1072
1186
 
1073
1187
  pending_tests = len(filtered_test_files)
1074
1188
  failed_tests = 0
@@ -1426,25 +1540,111 @@ def process_self_contained_coordinator_stream(
1426
1540
  )
1427
1541
  # run the benchmark
1428
1542
  benchmark_start_time = datetime.datetime.now()
1543
+
1544
+ # Calculate container timeout
1545
+ container_timeout = 300 # 5 minutes default
1546
+ buffer_timeout = 60 # Default buffer
1547
+
1548
+ # Try to extract test time from command and add buffer
1549
+ import re
1550
+
1551
+ test_time_match = re.search(
1552
+ r"--?test-time[=\s]+(\d+)", benchmark_command_str
1553
+ )
1554
+ if test_time_match:
1555
+ test_time = int(test_time_match.group(1))
1556
+ container_timeout = test_time + buffer_timeout
1557
+ logging.info(
1558
+ f"Set container timeout to {container_timeout}s (test-time: {test_time}s + {buffer_timeout}s buffer)"
1559
+ )
1560
+ else:
1561
+ logging.info(
1562
+ f"Using default container timeout: {container_timeout}s"
1563
+ )
1564
+
1429
1565
  try:
1430
- client_container_stdout = (
1431
- docker_client.containers.run(
1432
- image=client_container_image,
1433
- volumes={
1434
- temporary_dir_client: {
1435
- "bind": client_mnt_point,
1436
- "mode": "rw",
1437
- },
1566
+ # Start container with detach=True to enable timeout handling
1567
+ container = docker_client.containers.run(
1568
+ image=client_container_image,
1569
+ volumes={
1570
+ temporary_dir_client: {
1571
+ "bind": client_mnt_point,
1572
+ "mode": "rw",
1438
1573
  },
1439
- auto_remove=True,
1440
- privileged=True,
1441
- working_dir=benchmark_tool_workdir,
1442
- command=benchmark_command_str,
1443
- network_mode="host",
1444
- detach=False,
1445
- cpuset_cpus=client_cpuset_cpus,
1446
- )
1574
+ },
1575
+ auto_remove=False, # Don't auto-remove so we can get logs if timeout
1576
+ privileged=True,
1577
+ working_dir=benchmark_tool_workdir,
1578
+ command=benchmark_command_str,
1579
+ network_mode="host",
1580
+ detach=True, # Detach to enable timeout
1581
+ cpuset_cpus=client_cpuset_cpus,
1582
+ )
1583
+
1584
+ logging.info(
1585
+ f"Started container {container.name} ({container.id[:12]}) with {container_timeout}s timeout"
1447
1586
  )
1587
+
1588
+ # Wait for container with timeout
1589
+ try:
1590
+ result = container.wait(
1591
+ timeout=container_timeout
1592
+ )
1593
+ client_container_stdout = container.logs(
1594
+ stdout=True, stderr=False
1595
+ ).decode("utf-8")
1596
+ container_stderr = container.logs(
1597
+ stdout=False, stderr=True
1598
+ ).decode("utf-8")
1599
+
1600
+ # Check exit code
1601
+ if result["StatusCode"] != 0:
1602
+ logging.error(
1603
+ f"Container exited with code {result['StatusCode']}"
1604
+ )
1605
+ logging.error(
1606
+ f"Container stderr: {container_stderr}"
1607
+ )
1608
+ raise docker.errors.ContainerError(
1609
+ container,
1610
+ result["StatusCode"],
1611
+ benchmark_command_str,
1612
+ client_container_stdout,
1613
+ container_stderr,
1614
+ )
1615
+
1616
+ logging.info(
1617
+ f"Container {container.name} completed successfully"
1618
+ )
1619
+
1620
+ except Exception as timeout_error:
1621
+ if "timeout" in str(timeout_error).lower():
1622
+ logging.error(
1623
+ f"Container {container.name} timed out after {container_timeout}s"
1624
+ )
1625
+ # Get logs before killing
1626
+ try:
1627
+ timeout_logs = container.logs(
1628
+ stdout=True, stderr=True
1629
+ ).decode("utf-8")
1630
+ logging.error(
1631
+ f"Container logs before timeout: {timeout_logs}"
1632
+ )
1633
+ except:
1634
+ pass
1635
+ # Kill the container
1636
+ container.kill()
1637
+ raise Exception(
1638
+ f"Container timed out after {container_timeout} seconds"
1639
+ )
1640
+ else:
1641
+ raise timeout_error
1642
+ finally:
1643
+ # Clean up container
1644
+ try:
1645
+ container.remove(force=True)
1646
+ except:
1647
+ pass
1448
1648
  except docker.errors.ContainerError as e:
1449
1649
  logging.info(
1450
1650
  "stdout: {}".format(
@@ -2208,22 +2408,92 @@ def data_prepopulation_step(
2208
2408
  # run the benchmark
2209
2409
  preload_start_time = datetime.datetime.now()
2210
2410
 
2211
- client_container_stdout = docker_client.containers.run(
2212
- image=preload_image,
2213
- volumes={
2214
- temporary_dir: {
2215
- "bind": client_mnt_point,
2216
- "mode": "rw",
2411
+ # Set preload timeout (preload can take longer than benchmarks)
2412
+ preload_timeout = 1800 # 30 minutes default for data loading
2413
+ logging.info(f"Starting preload container with {preload_timeout}s timeout")
2414
+
2415
+ try:
2416
+ # Start container with detach=True to enable timeout handling
2417
+ container = docker_client.containers.run(
2418
+ image=preload_image,
2419
+ volumes={
2420
+ temporary_dir: {
2421
+ "bind": client_mnt_point,
2422
+ "mode": "rw",
2423
+ },
2217
2424
  },
2218
- },
2219
- auto_remove=True,
2220
- privileged=True,
2221
- working_dir=benchmark_tool_workdir,
2222
- command=preload_command_str,
2223
- network_mode="host",
2224
- detach=False,
2225
- cpuset_cpus=client_cpuset_cpus,
2226
- )
2425
+ auto_remove=False, # Don't auto-remove so we can get logs if timeout
2426
+ privileged=True,
2427
+ working_dir=benchmark_tool_workdir,
2428
+ command=preload_command_str,
2429
+ network_mode="host",
2430
+ detach=True, # Detach to enable timeout
2431
+ cpuset_cpus=client_cpuset_cpus,
2432
+ )
2433
+
2434
+ logging.info(
2435
+ f"Started preload container {container.name} ({container.id[:12]}) with {preload_timeout}s timeout"
2436
+ )
2437
+
2438
+ # Wait for container with timeout
2439
+ try:
2440
+ result = container.wait(timeout=preload_timeout)
2441
+ client_container_stdout = container.logs(
2442
+ stdout=True, stderr=False
2443
+ ).decode("utf-8")
2444
+ container_stderr = container.logs(stdout=False, stderr=True).decode(
2445
+ "utf-8"
2446
+ )
2447
+
2448
+ # Check exit code
2449
+ if result["StatusCode"] != 0:
2450
+ logging.error(
2451
+ f"Preload container exited with code {result['StatusCode']}"
2452
+ )
2453
+ logging.error(f"Preload container stderr: {container_stderr}")
2454
+ raise docker.errors.ContainerError(
2455
+ container,
2456
+ result["StatusCode"],
2457
+ preload_command_str,
2458
+ client_container_stdout,
2459
+ container_stderr,
2460
+ )
2461
+
2462
+ logging.info(
2463
+ f"Preload container {container.name} completed successfully"
2464
+ )
2465
+
2466
+ except Exception as timeout_error:
2467
+ if "timeout" in str(timeout_error).lower():
2468
+ logging.error(
2469
+ f"Preload container {container.name} timed out after {preload_timeout}s"
2470
+ )
2471
+ # Get logs before killing
2472
+ try:
2473
+ timeout_logs = container.logs(stdout=True, stderr=True).decode(
2474
+ "utf-8"
2475
+ )
2476
+ logging.error(
2477
+ f"Preload container logs before timeout: {timeout_logs}"
2478
+ )
2479
+ except:
2480
+ pass
2481
+ # Kill the container
2482
+ container.kill()
2483
+ raise Exception(
2484
+ f"Preload container timed out after {preload_timeout} seconds"
2485
+ )
2486
+ else:
2487
+ raise timeout_error
2488
+ finally:
2489
+ # Clean up container
2490
+ try:
2491
+ container.remove(force=True)
2492
+ except:
2493
+ pass
2494
+ except Exception as e:
2495
+ logging.error(f"Preload container failed: {e}")
2496
+ raise e
2227
2497
 
2228
2498
  preload_end_time = datetime.datetime.now()
2229
2499
  preload_duration_seconds = calculate_client_tool_duration_and_check(