redis-benchmarks-specification 0.2.42__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. redis_benchmarks_specification/__api__/Readme.md +7 -0
  2. redis_benchmarks_specification/__api__/__init__.py +5 -0
  3. redis_benchmarks_specification/__api__/api.py +87 -0
  4. redis_benchmarks_specification/__api__/app.py +191 -0
  5. redis_benchmarks_specification/__builder__/Readme.md +7 -0
  6. redis_benchmarks_specification/__builder__/__init__.py +5 -0
  7. redis_benchmarks_specification/__builder__/builder.py +1010 -0
  8. redis_benchmarks_specification/__builder__/schema.py +23 -0
  9. redis_benchmarks_specification/__cli__/__init__.py +5 -0
  10. redis_benchmarks_specification/__cli__/args.py +226 -0
  11. redis_benchmarks_specification/__cli__/cli.py +624 -0
  12. redis_benchmarks_specification/__cli__/stats.py +1304 -0
  13. redis_benchmarks_specification/__common__/__init__.py +0 -0
  14. redis_benchmarks_specification/__common__/builder_schema.py +256 -0
  15. redis_benchmarks_specification/__common__/env.py +96 -0
  16. redis_benchmarks_specification/__common__/github.py +280 -0
  17. redis_benchmarks_specification/__common__/package.py +28 -0
  18. redis_benchmarks_specification/__common__/runner.py +485 -0
  19. redis_benchmarks_specification/__common__/spec.py +143 -0
  20. redis_benchmarks_specification/__common__/suppress_warnings.py +20 -0
  21. redis_benchmarks_specification/__common__/timeseries.py +1621 -0
  22. redis_benchmarks_specification/__compare__/__init__.py +5 -0
  23. redis_benchmarks_specification/__compare__/args.py +240 -0
  24. redis_benchmarks_specification/__compare__/compare.py +3322 -0
  25. redis_benchmarks_specification/__init__.py +15 -0
  26. redis_benchmarks_specification/__runner__/__init__.py +5 -0
  27. redis_benchmarks_specification/__runner__/args.py +334 -0
  28. redis_benchmarks_specification/__runner__/remote_profiling.py +535 -0
  29. redis_benchmarks_specification/__runner__/runner.py +3837 -0
  30. redis_benchmarks_specification/__self_contained_coordinator__/__init__.py +5 -0
  31. redis_benchmarks_specification/__self_contained_coordinator__/args.py +210 -0
  32. redis_benchmarks_specification/__self_contained_coordinator__/artifacts.py +27 -0
  33. redis_benchmarks_specification/__self_contained_coordinator__/build_info.py +61 -0
  34. redis_benchmarks_specification/__self_contained_coordinator__/clients.py +58 -0
  35. redis_benchmarks_specification/__self_contained_coordinator__/cpuset.py +17 -0
  36. redis_benchmarks_specification/__self_contained_coordinator__/docker.py +108 -0
  37. redis_benchmarks_specification/__self_contained_coordinator__/post_processing.py +19 -0
  38. redis_benchmarks_specification/__self_contained_coordinator__/prepopulation.py +96 -0
  39. redis_benchmarks_specification/__self_contained_coordinator__/runners.py +740 -0
  40. redis_benchmarks_specification/__self_contained_coordinator__/self_contained_coordinator.py +2554 -0
  41. redis_benchmarks_specification/__setups__/__init__.py +0 -0
  42. redis_benchmarks_specification/__setups__/topologies.py +17 -0
  43. redis_benchmarks_specification/__spec__/__init__.py +5 -0
  44. redis_benchmarks_specification/__spec__/args.py +78 -0
  45. redis_benchmarks_specification/__spec__/cli.py +259 -0
  46. redis_benchmarks_specification/__watchdog__/__init__.py +5 -0
  47. redis_benchmarks_specification/__watchdog__/args.py +54 -0
  48. redis_benchmarks_specification/__watchdog__/watchdog.py +175 -0
  49. redis_benchmarks_specification/commands/__init__.py +0 -0
  50. redis_benchmarks_specification/commands/commands.py +15 -0
  51. redis_benchmarks_specification/setups/builders/gcc:15.2.0-amd64-debian-bookworm-default.yml +20 -0
  52. redis_benchmarks_specification/setups/builders/gcc:15.2.0-arm64-debian-bookworm-default.yml +20 -0
  53. redis_benchmarks_specification/setups/platforms/aws-ec2-1node-c5.4xlarge.yml +27 -0
  54. redis_benchmarks_specification/setups/topologies/topologies.yml +153 -0
  55. redis_benchmarks_specification/test-suites/defaults.yml +32 -0
  56. redis_benchmarks_specification/test-suites/generate.py +114 -0
  57. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hexpire-5-fields-10B-values.yml +43 -0
  58. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hexpire-50-fields-10B-values.yml +53 -0
  59. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hexpireat-5-fields-10B-values.yml +43 -0
  60. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hexpireat-50-fields-10B-values.yml +53 -0
  61. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hgetall-50-fields-100B-values.yml +52 -0
  62. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hgetex-5-fields-10B-values.yml +43 -0
  63. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hgetex-50-fields-10B-values.yml +53 -0
  64. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hgetex-persist-50-fields-10B-values.yml +53 -0
  65. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hpexpire-5-fields-10B-values.yml +43 -0
  66. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hpexpire-50-fields-10B-values.yml +53 -0
  67. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hpexpireat-5-fields-10B-values.yml +43 -0
  68. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-hpexpireat-50-fields-10B-values.yml +53 -0
  69. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-hash-htll-50-fields-10B-values.yml +53 -0
  70. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-1-fields-with-1000B-values-expiration.yml +35 -0
  71. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-1-fields-with-10B-values-expiration.yml +34 -0
  72. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-1-fields-with-10B-values-long-expiration.yml +35 -0
  73. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-1-fields-with-10B-values-short-expiration.yml +35 -0
  74. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-20-fields-with-1B-values-pipeline-30.yml +43 -0
  75. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-5-fields-with-1000B-values-expiration.yml +36 -0
  76. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-5-fields-with-10B-values-expiration.yml +35 -0
  77. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-5-fields-with-10B-values-long-expiration.yml +36 -0
  78. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-5-fields-with-10B-values-short-expiration.yml +36 -0
  79. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-1000B-values-expiration.yml +45 -0
  80. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-1000B-values.yml +44 -0
  81. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-100B-values.yml +44 -0
  82. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values-expiration.yml +44 -0
  83. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values-long-expiration.yml +45 -0
  84. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values-short-expiration.yml +45 -0
  85. redis_benchmarks_specification/test-suites/memtier_benchmark-100Kkeys-load-hash-50-fields-with-10B-values.yml +43 -0
  86. redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-hash-50-fields-with-10000B-values.yml +44 -0
  87. redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-list-rpush-bulkload-pipeline-50.yml +39 -0
  88. redis_benchmarks_specification/test-suites/memtier_benchmark-10Kkeys-load-list-with-10B-values-pipeline-50.yml +33 -0
  89. redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values-pipeline-10.yml +33 -0
  90. redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-100B-values.yml +33 -0
  91. redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values-pipeline-10.yml +34 -0
  92. redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-load-hash-5-fields-with-10B-values.yml +33 -0
  93. redis_benchmarks_specification/test-suites/memtier_benchmark-10Mkeys-string-get-10B-pipeline-100-nokeyprefix.yml +38 -0
  94. redis_benchmarks_specification/test-suites/memtier_benchmark-1Kkeys-hash-listpack-500-fields-update-20-fields-with-1B-to-64B-values.yml +75 -0
  95. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-100B-expire-use-case.yml +50 -0
  96. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-expire-use-case.yml +50 -0
  97. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-psetex-expire-use-case.yml +43 -0
  98. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-10B-setex-expire-use-case.yml +43 -0
  99. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-1KiB-expire-use-case.yml +49 -0
  100. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-4KiB-expire-use-case.yml +50 -0
  101. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-bitmap-getbit-pipeline-10.yml +42 -0
  102. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-exists-pipeline-10.yml +41 -0
  103. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expire-pipeline-10.yml +41 -0
  104. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-expireat-pipeline-10.yml +41 -0
  105. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-pexpire-pipeline-10.yml +41 -0
  106. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-count-500-pipeline-10.yml +41 -0
  107. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-count-500-pipeline-10.yml +42 -0
  108. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-count-5000-pipeline-10.yml +42 -0
  109. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-cursor-pipeline-10.yml +42 -0
  110. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-pipeline-10.yml +41 -0
  111. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-scan-type-pipeline-10.yml +41 -0
  112. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-touch-pipeline-10.yml +41 -0
  113. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-generic-ttl-pipeline-10.yml +41 -0
  114. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hexists.yml +45 -0
  115. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hget-hgetall-hkeys-hvals-with-100B-values.yml +48 -0
  116. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hgetall-50-fields-10B-values.yml +53 -0
  117. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrby.yml +42 -0
  118. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hincrbyfloat.yml +42 -0
  119. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hkeys-10-fields-with-10B-values-with-expiration-pipeline-10.yml +45 -0
  120. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hkeys-5-fields-with-100B-values-with-expiration-pipeline-10.yml +44 -0
  121. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hkeys-5-fields-with-10B-values-with-expiration-pipeline-10.yml +44 -0
  122. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hkeys-50-fields-with-10B-values-with-expiration-pipeline-10.yml +54 -0
  123. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-hmget-5-fields-with-100B-values-pipeline-10.yml +44 -0
  124. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-hash-transactions-multi-exec-pipeline-20.yml +43 -0
  125. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-100B-values.yml +44 -0
  126. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-10B-values.yml +44 -0
  127. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-lpop-rpop-with-1KiB-values.yml +44 -0
  128. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-list-rpoplpush-with-10B-values.yml +42 -0
  129. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values-pipeline-10.yml +34 -0
  130. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-5-fields-with-1000B-values.yml +33 -0
  131. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-50-fields-with-10B-values-long-expiration-pipeline-10.yml +46 -0
  132. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-hash-hmset-5-fields-with-1000B-values.yml +33 -0
  133. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-rpush-with-10B-values.yml +32 -0
  134. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-100B-values.yml +32 -0
  135. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values-pipeline-10.yml +33 -0
  136. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-10B-values.yml +32 -0
  137. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-list-with-1KiB-values.yml +32 -0
  138. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits-pipeline-10.yml +58 -0
  139. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-19-digits.yml +58 -0
  140. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements-pipeline-10.yml +41 -0
  141. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-set-intset-with-100-elements.yml +40 -0
  142. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values-pipeline-10.yml +33 -0
  143. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-1-fields-with-100B-values.yml +33 -0
  144. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values-pipeline-10.yml +34 -0
  145. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-stream-5-fields-with-100B-values.yml +33 -0
  146. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values-pipeline-10.yml +32 -0
  147. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-100B-values.yml +35 -0
  148. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-10.yml +33 -0
  149. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100-nokeyprefix.yml +29 -0
  150. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-100.yml +33 -0
  151. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-50.yml +33 -0
  152. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values-pipeline-500.yml +33 -0
  153. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-10B-values.yml +32 -0
  154. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values-pipeline-10.yml +32 -0
  155. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-1KiB-values.yml +32 -0
  156. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-string-with-20KiB-values.yml +35 -0
  157. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-listpack-with-100-elements-double-score.yml +91 -0
  158. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-double-score.yml +35 -0
  159. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-load-zset-with-10-elements-int-score.yml +34 -0
  160. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B-pipeline-10.yml +43 -0
  161. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-append-1-100B.yml +42 -0
  162. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-decr.yml +41 -0
  163. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B-pipeline-10.yml +41 -0
  164. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-100B.yml +41 -0
  165. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-10.yml +41 -0
  166. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-100-nokeyprefix.yml +38 -0
  167. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-100.yml +41 -0
  168. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-50.yml +41 -0
  169. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B-pipeline-500.yml +41 -0
  170. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-10B.yml +41 -0
  171. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB-pipeline-10.yml +41 -0
  172. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-1KiB.yml +41 -0
  173. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-32B-pipeline-10.yml +40 -0
  174. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-get-32B.yml +40 -0
  175. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incr-pipeline-10.yml +30 -0
  176. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby-pipeline-10.yml +30 -0
  177. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrby.yml +30 -0
  178. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat-pipeline-10.yml +30 -0
  179. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-incrbyfloat.yml +30 -0
  180. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-int-encoding-strlen-pipeline-10.yml +40 -0
  181. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mget-1KiB.yml +41 -0
  182. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire-pipeline-10.yml +45 -0
  183. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-expire.yml +45 -0
  184. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B-pipeline-10.yml +43 -0
  185. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-100B.yml +42 -0
  186. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB-pipeline-10.yml +42 -0
  187. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-1KB.yml +41 -0
  188. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B-pipeline-10.yml +43 -0
  189. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-32B.yml +42 -0
  190. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B-pipeline-10.yml +43 -0
  191. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-512B.yml +42 -0
  192. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-mixed-50-50-set-get-with-expiration-240B-400_conns.yml +47 -0
  193. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-set-with-ex-100B-pipeline-10.yml +41 -0
  194. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setex-100B-pipeline-10.yml +41 -0
  195. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-1.yml +43 -0
  196. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-1KiB-pipeline-10.yml +43 -0
  197. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-4KiB-pipeline-1.yml +43 -0
  198. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-4KiB-pipeline-10.yml +43 -0
  199. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-512B-pipeline-1.yml +43 -0
  200. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setget200c-512B-pipeline-10.yml +43 -0
  201. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B-pipeline-10.yml +42 -0
  202. redis_benchmarks_specification/test-suites/memtier_benchmark-1Mkeys-string-setrange-100B.yml +42 -0
  203. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-100M-bits-bitmap-bitcount.yml +45 -0
  204. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-1Billion-bits-bitmap-bitcount.yml +45 -0
  205. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geopos.yml +38 -0
  206. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-2-elements-geosearch-fromlonlat-withcoord.yml +39 -0
  207. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist-pipeline-10.yml +36 -0
  208. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geodist.yml +36 -0
  209. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash-pipeline-10.yml +35 -0
  210. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geohash.yml +34 -0
  211. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos-pipeline-10.yml +35 -0
  212. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geopos.yml +34 -0
  213. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-bybox.yml +36 -0
  214. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat-pipeline-10.yml +36 -0
  215. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-geo-60M-elements-geosearch-fromlonlat.yml +36 -0
  216. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall-pipeline-10.yml +285 -0
  217. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-1K-fields-hgetall.yml +284 -0
  218. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-100B-values-cursor-count-1000.yml +291 -0
  219. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-10B-values-cursor-count-100.yml +291 -0
  220. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-1K-fields-10B-values.yml +290 -0
  221. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-hash-hscan-50-fields-10B-values.yml +54 -0
  222. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements-pipeline-10.yml +37 -0
  223. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10-elements-lrange-all-elements.yml +36 -0
  224. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-int-7bit-uint-lrange-all-elements-pipeline-10.yml +44 -0
  225. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-int-lrange-all-elements-pipeline-10.yml +52 -0
  226. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-llen-pipeline-10.yml +52 -0
  227. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements-pipeline-10.yml +52 -0
  228. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-100-elements-lrange-all-elements.yml +51 -0
  229. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-integer.yml +41 -0
  230. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string-pipeline-10.yml +42 -0
  231. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lindex-string.yml +41 -0
  232. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-integer.yml +45 -0
  233. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-linsert-lrem-string.yml +45 -0
  234. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-integer.yml +41 -0
  235. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-10K-elements-lpos-string.yml +41 -0
  236. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements-pipeline-10.yml +202 -0
  237. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-1K-elements-lrange-all-elements.yml +201 -0
  238. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-list-2K-elements-quicklist-lrange-all-elements-longs.yml +258 -0
  239. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-hash-1K-fields-with-5B-values.yml +282 -0
  240. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-zset-with-5-elements-parsing-float-score.yml +36 -0
  241. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-load-zset-with-5-elements-parsing-hexa-score.yml +36 -0
  242. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-pfadd-4KB-values-pipeline-10.yml +32 -0
  243. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers-pipeline-10.yml +37 -0
  244. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smembers.yml +36 -0
  245. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10-elements-smismember.yml +38 -0
  246. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-is-a-member.yml +53 -0
  247. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sismember-not-a-member.yml +53 -0
  248. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smembers.yml +50 -0
  249. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-smismember.yml +54 -0
  250. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-100-elements-sscan.yml +50 -0
  251. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10M-elements-sismember-50pct-chance.yml +41 -0
  252. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-10M-elements-srem-50pct-chance.yml +40 -0
  253. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-smembers.yml +200 -0
  254. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-sscan-cursor-count-100.yml +201 -0
  255. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1K-elements-sscan.yml +200 -0
  256. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-1M-elements-sismember-50pct-chance.yml +40 -0
  257. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-200K-elements-sadd-constant.yml +41 -0
  258. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-set-2M-elements-sadd-increasing.yml +32 -0
  259. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zincrby-1M-elements-pipeline-1.yml +40 -0
  260. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-100K-elements-pipeline-1.yml +40 -0
  261. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-10M-elements-pipeline-1.yml +41 -0
  262. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrank-1M-elements-pipeline-1.yml +40 -0
  263. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrem-5M-elements-pipeline-1.yml +47 -0
  264. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-1.yml +41 -0
  265. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrangebyscore-256K-elements-pipeline-10.yml +41 -0
  266. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zrevrank-1M-elements-pipeline-1.yml +40 -0
  267. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements-long-scores.yml +41 -0
  268. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-10-elements-zrange-all-elements.yml +40 -0
  269. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrange-all-elements.yml +66 -0
  270. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements-long-scores.yml +66 -0
  271. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zrangebyscore-all-elements.yml +66 -0
  272. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-100-elements-zscan.yml +65 -0
  273. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zrange-all-elements.yml +322 -0
  274. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1K-elements-zscan.yml +321 -0
  275. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zcard-pipeline-10.yml +39 -0
  276. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zremrangebyscore-pipeline-10.yml +41 -0
  277. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-5-elements.yml +40 -0
  278. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zrevrange-withscores-5-elements-pipeline-10.yml +41 -0
  279. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-1M-elements-zscore-pipeline-10.yml +40 -0
  280. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-600K-elements-zrangestore-1K-elements.yml +41 -0
  281. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-600K-elements-zrangestore-300K-elements.yml +43 -0
  282. redis_benchmarks_specification/test-suites/memtier_benchmark-1key-zset-listpack-zrank-100-elements-pipeline-1.yml +50 -0
  283. redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-eval-hset-expire.yml +37 -0
  284. redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-lua-evalsha-hset-expire.yml +41 -0
  285. redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sdiff.yml +57 -0
  286. redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sinter.yml +57 -0
  287. redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-set-10-100-elements-sunion.yml +57 -0
  288. redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries-pipeline-10.yml +46 -0
  289. redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-stream-5-entries-xread-all-entries.yml +46 -0
  290. redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunion.yml +434 -0
  291. redis_benchmarks_specification/test-suites/memtier_benchmark-2keys-zset-300-elements-skiplist-encoded-zunionstore.yml +434 -0
  292. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values-pipeline-10.yml +37 -0
  293. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-load-string-with-512B-values.yml +37 -0
  294. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-400_conns.yml +45 -0
  295. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-40_conns.yml +45 -0
  296. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-2000_conns.yml +46 -0
  297. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-400_conns.yml +46 -0
  298. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-get-with-1KiB-values-pipeline-10-40_conns.yml +46 -0
  299. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-400_conns.yml +45 -0
  300. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-2000_conns.yml +46 -0
  301. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-400_conns.yml +46 -0
  302. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-20-80-with-512B-values-pipeline-10-5200_conns.yml +46 -0
  303. redis_benchmarks_specification/test-suites/memtier_benchmark-3Mkeys-string-mixed-50-50-with-512B-values-with-expiration-pipeline-10-400_conns.yml +43 -0
  304. redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello-pipeline-10.yml +32 -0
  305. redis_benchmarks_specification/test-suites/memtier_benchmark-connection-hello.yml +32 -0
  306. redis_benchmarks_specification/test-suites/memtier_benchmark-multiple-hll-pfcount-100B-values.yml +34 -0
  307. redis_benchmarks_specification/test-suites/memtier_benchmark-multiple-hll-pfmerge-100B-values.yml +34 -0
  308. redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-connection-ping-pipeline-10.yml +29 -0
  309. redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-100-subscribers.yml +40 -0
  310. redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-1000-subscribers.yml +40 -0
  311. redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-5000-subscribers.yml +40 -0
  312. redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-mixed-100-channels-128B-100-publishers-50K-subscribers-5k-conns.yml +40 -0
  313. redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-pubsub-publish-1K-channels-10B-no-subscribers.yml +30 -0
  314. redis_benchmarks_specification/test-suites/memtier_benchmark-nokeys-server-time-pipeline-10.yml +29 -0
  315. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-leaderboard-top-10.yml +68 -0
  316. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-leaderboard-top-100.yml +69 -0
  317. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-leaderboard-top-1000.yml +68 -0
  318. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-rate-limiting-lua-100k-sessions.yml +64 -0
  319. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership-pipeline-10.yml +56 -0
  320. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-realtime-analytics-membership.yml +56 -0
  321. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-hash-100k-sessions.yml +108 -0
  322. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-json-100k-sessions.yml +109 -0
  323. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-caching-string-100k-sessions.yml +98 -0
  324. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-100k-sessions.yml +205 -0
  325. redis_benchmarks_specification/test-suites/memtier_benchmark-playbook-session-storage-1k-sessions.yml +205 -0
  326. redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xread-count-100.yml +36 -0
  327. redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100-noack.yml +38 -0
  328. redis_benchmarks_specification/test-suites/memtier_benchmark-stream-10M-entries-xreadgroup-count-100.yml +38 -0
  329. redis_benchmarks_specification/test-suites/memtier_benchmark-stream-concurrent-xadd-xreadgroup-70-30.yml +50 -0
  330. redis_benchmarks_specification/test-suites/template.txt +18 -0
  331. redis_benchmarks_specification/vector-search-test-suites/vector_db_benchmark_test.yml +41 -0
  332. redis_benchmarks_specification-0.2.42.dist-info/LICENSE +201 -0
  333. redis_benchmarks_specification-0.2.42.dist-info/METADATA +434 -0
  334. redis_benchmarks_specification-0.2.42.dist-info/RECORD +336 -0
  335. redis_benchmarks_specification-0.2.42.dist-info/WHEEL +4 -0
  336. redis_benchmarks_specification-0.2.42.dist-info/entry_points.txt +10 -0
@@ -0,0 +1,5 @@
1
+ # Apache 2 License
2
+ #
3
+ # Copyright (c) 2021., Redis Labs
4
+ # All rights reserved.
5
+ #
@@ -0,0 +1,210 @@
1
+ import argparse
2
+ import os
3
+ from redis_benchmarks_specification.__common__.env import (
4
+ MACHINE_CPU_COUNT,
5
+ SPECS_PATH_SETUPS,
6
+ SPECS_PATH_TEST_SUITES,
7
+ DATASINK_RTS_HOST,
8
+ DATASINK_RTS_PORT,
9
+ DATASINK_RTS_AUTH,
10
+ DATASINK_RTS_USER,
11
+ DATASINK_RTS_PUSH,
12
+ MACHINE_NAME,
13
+ GH_REDIS_SERVER_HOST,
14
+ GH_REDIS_SERVER_PORT,
15
+ GH_REDIS_SERVER_AUTH,
16
+ GH_REDIS_SERVER_USER,
17
+ PROFILERS_ENABLED,
18
+ PROFILERS,
19
+ PROFILERS_DEFAULT,
20
+ ALLOWED_PROFILERS,
21
+ )
22
+
23
+ PERFORMANCE_GH_TOKEN = os.getenv("PERFORMANCE_GH_TOKEN", None)
24
+
25
+
26
+ def create_self_contained_coordinator_args(project_name):
27
+ parser = argparse.ArgumentParser(
28
+ description=project_name,
29
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
30
+ )
31
+ parser.add_argument(
32
+ "--version",
33
+ action="version",
34
+ version=project_name,
35
+ help="Show version information and exit",
36
+ )
37
+ parser.add_argument("--event_stream_host", type=str, default=GH_REDIS_SERVER_HOST)
38
+ parser.add_argument("--event_stream_port", type=int, default=GH_REDIS_SERVER_PORT)
39
+ parser.add_argument("--event_stream_pass", type=str, default=GH_REDIS_SERVER_AUTH)
40
+ parser.add_argument("--event_stream_user", type=str, default=GH_REDIS_SERVER_USER)
41
+ parser.add_argument("--github_token", type=str, default=PERFORMANCE_GH_TOKEN)
42
+ parser.add_argument(
43
+ "--cpu-count",
44
+ type=int,
45
+ default=MACHINE_CPU_COUNT,
46
+ help="Specify how much of the available CPU resources the coordinator can use.",
47
+ )
48
+ parser.add_argument("--redis_proc_start_port", type=int, default=6379)
49
+ parser.add_argument("--cpuset_start_pos", type=int, default=0)
50
+ parser.add_argument(
51
+ "--platform-name",
52
+ type=str,
53
+ default=MACHINE_NAME,
54
+ help="Specify the running platform name. By default it will use the machine name.",
55
+ )
56
+ parser.add_argument(
57
+ "--logname", type=str, default=None, help="logname to write the logs to"
58
+ )
59
+ parser.add_argument(
60
+ "--consumer-start-id",
61
+ type=str,
62
+ default=">",
63
+ )
64
+ parser.add_argument(
65
+ "--consumer-id",
66
+ type=int,
67
+ default=1,
68
+ help="Consumer id for consumer group for platform",
69
+ )
70
+ parser.add_argument(
71
+ "--consumer-pos",
72
+ type=int,
73
+ default=1,
74
+ help="Consumer pos for consumer group for platform",
75
+ )
76
+
77
+ parser.add_argument(
78
+ "--setups-folder",
79
+ type=str,
80
+ default=SPECS_PATH_SETUPS,
81
+ help="Setups folder, containing the build environment variations sub-folder that we use to trigger different build artifacts",
82
+ )
83
+ parser.add_argument(
84
+ "--test-suites-folder",
85
+ type=str,
86
+ default=SPECS_PATH_TEST_SUITES,
87
+ help="Test suites folder, containing the different test variations",
88
+ )
89
+ parser.add_argument(
90
+ "--test",
91
+ type=str,
92
+ default="",
93
+ help="specify a test to run. By default will run all the tests"
94
+ + " present in the folder specified in --test-suites-folder.",
95
+ )
96
+ parser.add_argument(
97
+ "--tests-regexp",
98
+ type=str,
99
+ default=".*",
100
+ help="Interpret PATTERN as a regular expression to filter test names",
101
+ )
102
+ parser.add_argument(
103
+ "--datasink_redistimeseries_host", type=str, default=DATASINK_RTS_HOST
104
+ )
105
+ parser.add_argument(
106
+ "--datasink_redistimeseries_port", type=int, default=DATASINK_RTS_PORT
107
+ )
108
+ parser.add_argument(
109
+ "--datasink_redistimeseries_pass", type=str, default=DATASINK_RTS_AUTH
110
+ )
111
+ parser.add_argument(
112
+ "--datasink_redistimeseries_user", type=str, default=DATASINK_RTS_USER
113
+ )
114
+ parser.add_argument(
115
+ "--datasink_push_results_redistimeseries",
116
+ default=DATASINK_RTS_PUSH,
117
+ action="store_true",
118
+ help="uploads the results to RedisTimeSeries. Proper credentials are required",
119
+ )
120
+ parser.add_argument("--profilers", type=str, default=PROFILERS)
121
+ parser.add_argument(
122
+ "--enable-profilers",
123
+ default=PROFILERS_ENABLED,
124
+ action="store_true",
125
+ help="Enable Identifying On-CPU and Off-CPU Time using perf/ebpf/vtune tooling. "
126
+ + "By default the chosen profilers are {}".format(PROFILERS_DEFAULT)
127
+ + "Full list of profilers: {}".format(ALLOWED_PROFILERS)
128
+ + "Only available on x86 Linux platform and kernel version >= 4.9",
129
+ )
130
+ parser.add_argument(
131
+ "--grafana-profile-dashboard",
132
+ type=str,
133
+ default="https://benchmarksredisio.grafana.net/d/uRPZar57k/ci-profiler-viewer",
134
+ )
135
+ parser.add_argument(
136
+ "--docker-air-gap",
137
+ default=False,
138
+ action="store_true",
139
+ help="Read the docker images from redis keys.",
140
+ )
141
+ parser.add_argument(
142
+ "--verbose",
143
+ default=False,
144
+ action="store_true",
145
+ help="Run in verbose mode.",
146
+ )
147
+ parser.add_argument(
148
+ "--override-memtier-test-time",
149
+ default=0,
150
+ type=int,
151
+ help="override memtier test-time for each benchmark. By default will preserve test time specified in test spec",
152
+ )
153
+ parser.add_argument(
154
+ "--defaults_filename",
155
+ type=str,
156
+ default="{}/defaults.yml".format(SPECS_PATH_TEST_SUITES),
157
+ help="specify the defaults file containing spec topologies, common metric extractions,etc...",
158
+ )
159
+ parser.add_argument(
160
+ "--arch", type=str, default="amd64", help="arch to build artifacts"
161
+ )
162
+ parser.add_argument(
163
+ "--tests-priority-lower-limit",
164
+ type=int,
165
+ default=0,
166
+ help="Run a subset of the tests based uppon a preset priority. By default runs all tests.",
167
+ )
168
+ parser.add_argument(
169
+ "--tests-priority-upper-limit",
170
+ type=int,
171
+ default=100000,
172
+ help="Run a subset of the tests based uppon a preset priority. By default runs all tests.",
173
+ )
174
+ parser.add_argument(
175
+ "--topology",
176
+ type=str,
177
+ default="",
178
+ help="Filter tests to run only with the specified topology (e.g. oss-standalone)",
179
+ )
180
+ parser.add_argument(
181
+ "--exclusive-hardware",
182
+ default=False,
183
+ action="store_true",
184
+ help="Enable exclusive hardware mode. Kills all memtier processes and stops all docker containers before and after each test.",
185
+ )
186
+ parser.add_argument(
187
+ "--http-port",
188
+ type=int,
189
+ default=8080,
190
+ help="Port for HTTP server endpoints (/ping health check and /reset-queue POST endpoint).",
191
+ )
192
+ parser.add_argument(
193
+ "--http-auth-username",
194
+ type=str,
195
+ default=None,
196
+ help="Username for HTTP endpoint authentication. HTTP server is disabled if not provided.",
197
+ )
198
+ parser.add_argument(
199
+ "--http-auth-password",
200
+ type=str,
201
+ default=None,
202
+ help="Password for HTTP endpoint authentication. HTTP server is disabled if not provided.",
203
+ )
204
+ parser.add_argument(
205
+ "--skip-clear-pending-on-startup",
206
+ default=False,
207
+ action="store_true",
208
+ help="Skip automatically clearing pending messages and resetting consumer group position on startup. By default, pending messages are cleared and consumer group is reset to latest position to skip old work and recover from crashes.",
209
+ )
210
+ return parser
@@ -0,0 +1,27 @@
1
+ import logging
2
+ import os
3
+
4
+
5
+ def restore_build_artifacts_from_test_details(
6
+ build_artifacts, conn, temporary_dir, testDetails
7
+ ):
8
+ for build_artifact in build_artifacts:
9
+ build_artifact_key = "{}".format(build_artifact).encode()
10
+ if build_artifact_key in testDetails:
11
+ buffer_key = testDetails[build_artifact_key]
12
+ logging.info(
13
+ "Reading artifact binary {} from key {}".format(
14
+ build_artifact, buffer_key
15
+ )
16
+ )
17
+ buffer = bytes(conn.get(buffer_key))
18
+ artifact_fname = "{}/{}".format(temporary_dir, build_artifact)
19
+ with open(artifact_fname, "wb") as fd:
20
+ fd.write(buffer)
21
+ os.chmod(artifact_fname, 755)
22
+
23
+ logging.info(
24
+ "Successfully restored {} into {}".format(
25
+ build_artifact, artifact_fname
26
+ )
27
+ )
@@ -0,0 +1,61 @@
1
+ import json
2
+ import logging
3
+
4
+ from redis_benchmarks_specification.__common__.builder_schema import (
5
+ get_branch_version_from_test_details,
6
+ )
7
+
8
+
9
+ def extract_build_info_from_streamdata(testDetails):
10
+ arch = "amd64"
11
+ use_git_timestamp = False
12
+ git_timestamp_ms = None
13
+ metadata = {}
14
+ build_variant_name = None
15
+ fields = [fieldname.decode() for fieldname in testDetails.keys()]
16
+ logging.info("Fields on stream {}".format(testDetails))
17
+ git_hash = None
18
+ if b"git_hash" in testDetails:
19
+ git_hash = testDetails[b"git_hash"].decode()
20
+ if b"use_git_timestamp" in testDetails:
21
+ use_git_timestamp = bool(testDetails[b"use_git_timestamp"].decode())
22
+ if b"git_timestamp_ms" in testDetails:
23
+ git_timestamp_ms = int(testDetails[b"git_timestamp_ms"].decode())
24
+ if b"id" in testDetails:
25
+ build_variant_name = testDetails[b"id"]
26
+ if type(build_variant_name) == bytes:
27
+ build_variant_name = build_variant_name.decode()
28
+ git_branch, git_version = get_branch_version_from_test_details(testDetails)
29
+ if type(git_hash) == bytes:
30
+ git_hash = git_hash.decode()
31
+ logging.info("Received commit hash specifier {}.".format(git_hash))
32
+ build_artifacts_str = "redis-server"
33
+ build_image = testDetails[b"build_image"].decode()
34
+ run_image = build_image
35
+ if b"arch" in testDetails:
36
+ arch = testDetails[b"arch"].decode()
37
+ logging.info("detected arch info {}.".format(arch))
38
+ else:
39
+ logging.info("using default arch info {}.".format(arch))
40
+ if b"run_image" in testDetails:
41
+ run_image = testDetails[b"run_image"].decode()
42
+ logging.info("detected run image info {}.".format(run_image))
43
+ else:
44
+ logging.info("using build image info {}.".format(build_image))
45
+ if b"build_artifacts" in testDetails:
46
+ build_artifacts_str = testDetails[b"build_artifacts"].decode()
47
+ build_artifacts = build_artifacts_str.split(",")
48
+ if b"metadata" in testDetails:
49
+ metadata = json.loads(testDetails[b"metadata"].decode())
50
+ return (
51
+ build_variant_name,
52
+ metadata,
53
+ build_artifacts,
54
+ git_hash,
55
+ git_branch,
56
+ git_version,
57
+ run_image,
58
+ use_git_timestamp,
59
+ git_timestamp_ms,
60
+ arch,
61
+ )
@@ -0,0 +1,58 @@
1
+ import logging
2
+
3
+
4
+ def prepare_memtier_benchmark_parameters(
5
+ clientconfig,
6
+ full_benchmark_path,
7
+ port,
8
+ server,
9
+ local_benchmark_output_filename,
10
+ oss_cluster_api_enabled,
11
+ password=None,
12
+ ):
13
+ benchmark_command = [
14
+ full_benchmark_path,
15
+ "--json-out-file",
16
+ local_benchmark_output_filename,
17
+ "--port",
18
+ "{}".format(port),
19
+ "--server",
20
+ "{}".format(server),
21
+ ]
22
+
23
+ # Add password authentication if provided
24
+ if password is not None and password != "":
25
+ benchmark_command.extend(["--authenticate", password])
26
+ logging.info("Memtier benchmark will use password authentication")
27
+
28
+ if oss_cluster_api_enabled is True:
29
+ benchmark_command.append("--cluster-mode")
30
+ benchmark_command_str = " ".join(benchmark_command)
31
+ if "arguments" in clientconfig:
32
+ benchmark_command_str = benchmark_command_str + " " + clientconfig["arguments"]
33
+
34
+ return None, benchmark_command_str
35
+
36
+
37
+ def prepare_vector_db_benchmark_parameters(
38
+ clientconfig, full_benchmark_path, port, server, password, client_mnt_point
39
+ ):
40
+ benchmark_command = []
41
+ # if port is not None:
42
+ # benchmark_command.extend(["REDIS_PORT={}".format(port)])
43
+ # if password is not None:
44
+ # benchmark_command.extend(["REDIS_AUTH={}".format(password)])
45
+ benchmark_command.extend(
46
+ [
47
+ full_benchmark_path,
48
+ "--host",
49
+ f"{server}",
50
+ ]
51
+ )
52
+ benchmark_command.extend(["--engines", clientconfig.get("engines", "redis-test")])
53
+ benchmark_command.extend(
54
+ ["--datasets", clientconfig.get("datasets", "glove-100-angular")]
55
+ )
56
+ benchmark_command_str = " ".join(benchmark_command)
57
+ benchmark_command_str = f"bash -c 'ITERATIONS=1 {benchmark_command_str} && mv /code/results {client_mnt_point}.'"
58
+ return None, benchmark_command_str
@@ -0,0 +1,17 @@
1
+ import math
2
+
3
+
4
+ def generate_cpuset_cpus(ceil_db_cpu_limit, current_cpu_pos):
5
+ previous_cpu_pos = current_cpu_pos
6
+ current_cpu_pos = current_cpu_pos + int(ceil_db_cpu_limit)
7
+ db_cpuset_cpus = ",".join(
8
+ [str(x) for x in range(previous_cpu_pos, current_cpu_pos)]
9
+ )
10
+ return db_cpuset_cpus, current_cpu_pos
11
+
12
+
13
+ def extract_db_cpu_limit(topologies_map, topology_spec_name):
14
+ topology_spec = topologies_map[topology_spec_name]
15
+ db_cpu_limit = topology_spec["resources"]["requests"]["cpus"]
16
+ ceil_db_cpu_limit = math.ceil(float(db_cpu_limit))
17
+ return ceil_db_cpu_limit
@@ -0,0 +1,108 @@
1
+ import logging
2
+
3
+ import docker
4
+
5
+ from redis_benchmarks_specification.__self_contained_coordinator__.cpuset import (
6
+ generate_cpuset_cpus,
7
+ )
8
+
9
+
10
+ def generate_standalone_redis_server_args(
11
+ binary,
12
+ port,
13
+ dbdir,
14
+ configuration_parameters=None,
15
+ redis_arguments="",
16
+ password=None,
17
+ ):
18
+ added_params = ["port", "protected-mode", "dir", "requirepass", "logfile"]
19
+ # start redis-server
20
+ command = [
21
+ binary,
22
+ "--protected-mode",
23
+ "no",
24
+ "--port",
25
+ "{}".format(port),
26
+ ]
27
+
28
+ # Add password authentication if provided
29
+ if password is not None and password != "":
30
+ command.extend(["--requirepass", password])
31
+ logging.info("Redis server will be started with password authentication")
32
+ if dbdir != "":
33
+ command.extend(["--dir", dbdir])
34
+ command.extend(["--logfile", f"{dbdir}redis.log"])
35
+ if configuration_parameters is not None:
36
+ for parameter, parameter_value in configuration_parameters.items():
37
+ if parameter not in added_params:
38
+ command.extend(
39
+ [
40
+ "--{}".format(parameter),
41
+ parameter_value,
42
+ ]
43
+ )
44
+ if redis_arguments != "":
45
+ redis_arguments_arr = redis_arguments.split(" ")
46
+ logging.info(f"adding redis arguments {redis_arguments_arr}")
47
+ command.extend(redis_arguments_arr)
48
+ return command
49
+
50
+
51
+ def teardown_containers(redis_containers, container_type):
52
+ for container in redis_containers:
53
+ try:
54
+ container.stop()
55
+ except docker.errors.NotFound:
56
+ logging.info(
57
+ "When trying to stop {} container with id {} and image {} it was already stopped".format(
58
+ container_type, container.id, container.image
59
+ )
60
+ )
61
+ pass
62
+
63
+
64
+ def spin_docker_standalone_redis(
65
+ ceil_db_cpu_limit,
66
+ current_cpu_pos,
67
+ docker_client,
68
+ redis_configuration_parameters,
69
+ redis_containers,
70
+ redis_proc_start_port,
71
+ run_image,
72
+ temporary_dir,
73
+ password=None,
74
+ ):
75
+ mnt_point = "/mnt/redis/"
76
+ command = generate_standalone_redis_server_args(
77
+ "{}redis-server".format(mnt_point),
78
+ redis_proc_start_port,
79
+ mnt_point,
80
+ redis_configuration_parameters,
81
+ "",
82
+ password,
83
+ )
84
+ command_str = " ".join(command)
85
+ db_cpuset_cpus, current_cpu_pos = generate_cpuset_cpus(
86
+ ceil_db_cpu_limit, current_cpu_pos
87
+ )
88
+ logging.info(
89
+ "Running redis-server on docker image {} (cpuset={}) with the following args: {}".format(
90
+ run_image, db_cpuset_cpus, command_str
91
+ )
92
+ )
93
+ container = docker_client.containers.run(
94
+ image=run_image,
95
+ volumes={
96
+ temporary_dir: {"bind": mnt_point, "mode": "rw"},
97
+ },
98
+ auto_remove=True,
99
+ privileged=True,
100
+ working_dir=mnt_point,
101
+ command=command_str,
102
+ network_mode="host",
103
+ detach=True,
104
+ cpuset_cpus=db_cpuset_cpus,
105
+ pid_mode="host",
106
+ )
107
+ redis_containers.append(container)
108
+ return current_cpu_pos
@@ -0,0 +1,19 @@
1
+ import os
2
+ import json
3
+
4
+
5
+ def post_process_vector_db(temporary_dir):
6
+ results_dir = os.path.join(temporary_dir, "results")
7
+ results = {}
8
+ for file in os.listdir(results_dir):
9
+ if "upload" in file:
10
+ with open(os.path.join(results_dir, file), "r") as f:
11
+ upload_results = json.load(f)
12
+ results["upload_time"] = upload_results["results"]["upload_time"]
13
+ else:
14
+ with open(os.path.join(results_dir, file), "r") as f:
15
+ query_results = json.load(f)
16
+ results["rps"] = query_results["results"]["rps"]
17
+ results["precision"] = query_results["results"]["mean_precisions"]
18
+ results["total_time"] = query_results["results"]["total_time"]
19
+ return results
@@ -0,0 +1,96 @@
1
+ import datetime
2
+ import logging
3
+
4
+ from redisbench_admin.run.common import get_start_time_vars
5
+ from redisbench_admin.run.run import calculate_client_tool_duration_and_check
6
+ from redisbench_admin.utils.local import get_local_run_full_filename
7
+
8
+ from redis_benchmarks_specification.__common__.spec import (
9
+ extract_client_container_image,
10
+ extract_client_tool,
11
+ )
12
+ from redis_benchmarks_specification.__self_contained_coordinator__.clients import (
13
+ prepare_memtier_benchmark_parameters,
14
+ )
15
+
16
+
17
+ def data_prepopulation_step(
18
+ benchmark_config,
19
+ benchmark_tool_workdir,
20
+ client_cpuset_cpus,
21
+ docker_client,
22
+ git_hash,
23
+ port,
24
+ temporary_dir,
25
+ test_name,
26
+ redis_password,
27
+ ):
28
+ # setup the benchmark
29
+ (
30
+ start_time,
31
+ start_time_ms,
32
+ start_time_str,
33
+ ) = get_start_time_vars()
34
+ local_benchmark_output_filename = get_local_run_full_filename(
35
+ start_time_str,
36
+ git_hash,
37
+ "preload__" + test_name,
38
+ "oss-standalone",
39
+ )
40
+ preload_image = extract_client_container_image(
41
+ benchmark_config["dbconfig"], "preload_tool"
42
+ )
43
+ preload_tool = extract_client_tool(benchmark_config["dbconfig"], "preload_tool")
44
+ full_benchmark_path = "/usr/local/bin/{}".format(preload_tool)
45
+ client_mnt_point = "/mnt/client/"
46
+ if "memtier_benchmark" in preload_tool:
47
+ (
48
+ _,
49
+ preload_command_str,
50
+ ) = prepare_memtier_benchmark_parameters(
51
+ benchmark_config["dbconfig"]["preload_tool"],
52
+ full_benchmark_path,
53
+ port,
54
+ "localhost",
55
+ local_benchmark_output_filename,
56
+ False,
57
+ redis_password,
58
+ )
59
+
60
+ logging.info(
61
+ "Using docker image {} as benchmark PRELOAD image (cpuset={}) with the following args: {}".format(
62
+ preload_image,
63
+ client_cpuset_cpus,
64
+ preload_command_str,
65
+ )
66
+ )
67
+ # run the benchmark
68
+ preload_start_time = datetime.datetime.now()
69
+
70
+ client_container_stdout = docker_client.containers.run(
71
+ image=preload_image,
72
+ volumes={
73
+ temporary_dir: {
74
+ "bind": client_mnt_point,
75
+ "mode": "rw",
76
+ },
77
+ },
78
+ auto_remove=True,
79
+ privileged=True,
80
+ working_dir=benchmark_tool_workdir,
81
+ command=preload_command_str,
82
+ network_mode="host",
83
+ detach=False,
84
+ cpuset_cpus=client_cpuset_cpus,
85
+ )
86
+
87
+ preload_end_time = datetime.datetime.now()
88
+ preload_duration_seconds = calculate_client_tool_duration_and_check(
89
+ preload_end_time, preload_start_time, "Preload", False
90
+ )
91
+ logging.info(
92
+ "Tool {} seconds to load data. Output {}".format(
93
+ preload_duration_seconds,
94
+ client_container_stdout,
95
+ )
96
+ )