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
File without changes
@@ -0,0 +1,17 @@
1
+ import os
2
+ import yaml
3
+
4
+
5
+ def get_topologies(usecase_filename):
6
+ full_filename = os.path.abspath(usecase_filename)
7
+ topologies_map = {}
8
+ with open(full_filename) as stream:
9
+ build_config = yaml.safe_load(stream)
10
+ spec = build_config["spec"]
11
+ setups = spec["setups"]
12
+ for topology in setups:
13
+ topology_name = topology["name"]
14
+ topologies_map[topology_name] = topology
15
+ # print(build_config)
16
+
17
+ return topologies_map
@@ -0,0 +1,5 @@
1
+ # Apache 2 License
2
+ #
3
+ # Copyright (c) 2021., Redis Labs
4
+ # All rights reserved.
5
+ #
@@ -0,0 +1,78 @@
1
+ # BSD 3-Clause License
2
+ #
3
+ # Copyright (c) 2021., Redis Labs Modules
4
+ # All rights reserved.
5
+ #
6
+ import datetime
7
+
8
+
9
+ from redis_benchmarks_specification.__common__.env import (
10
+ GH_REDIS_SERVER_HOST,
11
+ GH_TOKEN,
12
+ GH_REDIS_SERVER_PORT,
13
+ GH_REDIS_SERVER_AUTH,
14
+ GH_REDIS_SERVER_USER,
15
+ )
16
+
17
+ from redisbench_admin.run.common import get_start_time_vars
18
+
19
+ START_TIME_NOW_UTC, _, _ = get_start_time_vars()
20
+ START_TIME_LAST_YEAR_UTC = START_TIME_NOW_UTC - datetime.timedelta(days=7)
21
+
22
+
23
+ def spec_cli_args(parser):
24
+ parser.add_argument("--redis_host", type=str, default=GH_REDIS_SERVER_HOST)
25
+ parser.add_argument("--branch", type=str, default="unstable")
26
+ parser.add_argument("--gh_token", type=str, default=GH_TOKEN)
27
+ parser.add_argument("--redis_port", type=int, default=GH_REDIS_SERVER_PORT)
28
+ parser.add_argument("--redis_pass", type=str, default=GH_REDIS_SERVER_AUTH)
29
+ parser.add_argument("--redis_user", type=str, default=GH_REDIS_SERVER_USER)
30
+ parser.add_argument(
31
+ "--from-date",
32
+ type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
33
+ default=START_TIME_LAST_YEAR_UTC,
34
+ )
35
+ parser.add_argument(
36
+ "--to-date",
37
+ type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
38
+ default=START_TIME_NOW_UTC,
39
+ )
40
+ parser.add_argument("--redis_repo", type=str, default=None)
41
+ parser.add_argument("--trigger-unstable-commits", type=bool, default=True)
42
+ parser.add_argument(
43
+ "--use-tags",
44
+ default=False,
45
+ action="store_true",
46
+ help="Iterate over the git tags.",
47
+ )
48
+ parser.add_argument(
49
+ "--tags-regexp",
50
+ type=str,
51
+ default=".*",
52
+ help="Interpret PATTERN as a regular expression to filter tag names",
53
+ )
54
+ parser.add_argument(
55
+ "--hash-regexp",
56
+ type=str,
57
+ default=".*",
58
+ help="Interpret PATTERN as a regular expression to filter commit hashes",
59
+ )
60
+ parser.add_argument(
61
+ "--use-branch",
62
+ default=False,
63
+ action="store_true",
64
+ help="Iterate over the git commits.",
65
+ )
66
+ parser.add_argument(
67
+ "--dry-run",
68
+ default=False,
69
+ action="store_true",
70
+ help="Only check how many benchmarks we would trigger. Don't request benchmark runs at the end.",
71
+ )
72
+ parser.add_argument(
73
+ "--last_n",
74
+ type=int,
75
+ default=-1,
76
+ help="Use the last N samples. by default will use all available values",
77
+ )
78
+ return parser
@@ -0,0 +1,259 @@
1
+ # BSD 3-Clause License
2
+ #
3
+ # Copyright (c) 2021., Redis Labs Modules
4
+ # All rights reserved.
5
+ #
6
+
7
+ import argparse
8
+ import datetime
9
+ import logging
10
+ import re
11
+ import shutil
12
+ import subprocess
13
+ import sys
14
+ import tempfile
15
+ import git
16
+ import packaging
17
+ import redis
18
+ from packaging import version
19
+
20
+
21
+ from redis_benchmarks_specification.__cli__.args import spec_cli_args
22
+ from redis_benchmarks_specification.__common__.builder_schema import (
23
+ get_commit_dict_from_sha,
24
+ request_build_from_commit_info,
25
+ )
26
+ from redis_benchmarks_specification.__common__.env import REDIS_BINS_EXPIRE_SECS
27
+ from redis_benchmarks_specification.__common__.package import (
28
+ get_version_string,
29
+ populate_with_poetry_data,
30
+ )
31
+
32
+ # logging settings
33
+ logging.basicConfig(
34
+ format="%(asctime)s %(levelname)-4s %(message)s",
35
+ level=logging.INFO,
36
+ datefmt="%Y-%m-%d %H:%M:%S",
37
+ )
38
+
39
+
40
+ def main():
41
+ _, _, project_version = populate_with_poetry_data()
42
+ project_name = "redis-benchmarks-spec-cli"
43
+ parser = argparse.ArgumentParser(
44
+ description=get_version_string(project_name, project_version),
45
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
46
+ )
47
+ parser = spec_cli_args(parser)
48
+ args = parser.parse_args()
49
+
50
+ cli_command_logic(args, project_name, project_version)
51
+
52
+
53
+ def cli_command_logic(args, project_name, project_version):
54
+ logging.info(
55
+ "Using: {project_name} {project_version}".format(
56
+ project_name=project_name, project_version=project_version
57
+ )
58
+ )
59
+ if args.use_branch is False and args.use_tags is False:
60
+ logging.error("You must specify either --use-tags or --use-branch flag")
61
+ sys.exit(1)
62
+ redisDirPath = args.redis_repo
63
+ cleanUp = False
64
+ if redisDirPath is None:
65
+ cleanUp = True
66
+ redisDirPath = tempfile.mkdtemp()
67
+ logging.info(
68
+ "Retrieving redis repo from remote into {}. Using branch {}.".format(
69
+ redisDirPath, args.branch
70
+ )
71
+ )
72
+ cmd = "git clone https://github.com/redis/redis {} --branch {}\n".format(
73
+ redisDirPath, args.branch
74
+ )
75
+ process = subprocess.Popen(
76
+ "/bin/bash", stdin=subprocess.PIPE, stdout=subprocess.PIPE
77
+ )
78
+ process.communicate(cmd.encode())
79
+ else:
80
+ logging.info(
81
+ "Using the following redis repo to retrieve versions info {}. No need to fetch remote data.".format(
82
+ redisDirPath
83
+ )
84
+ )
85
+ logging.info(
86
+ "Using the following timeframe: from {} to {}".format(
87
+ args.from_date, args.to_date
88
+ )
89
+ )
90
+ repo = git.Repo(redisDirPath)
91
+ commits = []
92
+ total_commits = 0
93
+ if args.use_branch:
94
+ for commit in repo.iter_commits():
95
+
96
+ commit_datetime_utc = datetime.datetime.utcfromtimestamp(
97
+ commit.committed_datetime.timestamp()
98
+ )
99
+ git_timestamp_ms = int(commit_datetime_utc.timestamp() * 1000)
100
+ if args.from_date <= commit_datetime_utc <= args.to_date:
101
+ if (
102
+ args.last_n > 0 and total_commits < args.last_n
103
+ ) or args.last_n == -1:
104
+ total_commits = total_commits + 1
105
+ print(commit.summary)
106
+ commits.append(
107
+ {
108
+ "git_hash": commit.hexsha,
109
+ "git_branch": repo.active_branch.name,
110
+ "commit_summary": commit.summary,
111
+ "git_timestamp_ms": git_timestamp_ms,
112
+ }
113
+ )
114
+ if args.use_tags:
115
+ tags_regexp = args.tags_regexp
116
+ if tags_regexp == ".*":
117
+ logging.info(
118
+ "Acception all tags that follow semver between the timeframe. If you need further filter specify a regular expression via --tags-regexp"
119
+ )
120
+ else:
121
+ logging.info(
122
+ "Filtering all tags via a regular expression: {}".format(tags_regexp)
123
+ )
124
+ tags_regex_string = re.compile(tags_regexp)
125
+
126
+ tags = sorted(repo.tags, key=lambda t: t.commit.committed_datetime)
127
+ for tag in tags:
128
+ if (
129
+ args.from_date
130
+ <= datetime.datetime.utcfromtimestamp(
131
+ tag.commit.committed_datetime.timestamp()
132
+ )
133
+ <= args.to_date
134
+ ):
135
+
136
+ try:
137
+ version.Version(tag.name)
138
+ match_obj = re.search(tags_regex_string, tag.name)
139
+ if match_obj is None:
140
+ logging.info(
141
+ "Skipping {} given it does not match regex {}".format(
142
+ tag.name, tags_regexp
143
+ )
144
+ )
145
+ else:
146
+ git_version = tag.name
147
+ print(
148
+ "Commit summary: {}. Extract semver: {}".format(
149
+ tag.commit.summary, git_version
150
+ )
151
+ )
152
+ commits.append(
153
+ {
154
+ "git_hash": tag.commit.hexsha,
155
+ "git_version": git_version,
156
+ "commit_summary": tag.commit.summary,
157
+ }
158
+ )
159
+ except packaging.version.InvalidVersion:
160
+ logging.info(
161
+ "Ignoring tag {} given we were not able to extract commit or version info from it.".format(
162
+ tag.name
163
+ )
164
+ )
165
+ pass
166
+ by_description = "n/a"
167
+ if args.use_branch:
168
+ by_description = "from branch {}".format(repo.active_branch.name)
169
+ if args.use_tags:
170
+ by_description = "by tags"
171
+ logging.info(
172
+ "Will trigger {} distinct tests {}.".format(len(commits), by_description)
173
+ )
174
+
175
+ hash_regexp = args.hash_regexp
176
+ if hash_regexp == ".*":
177
+ logging.info(
178
+ "Acception all commit hashes. If you need further filter specify a regular expression via --hash-regexp"
179
+ )
180
+ else:
181
+ logging.info(
182
+ "Filtering all commit hashes via a regular expression: {}".format(
183
+ hash_regexp
184
+ )
185
+ )
186
+ hash_regexp_string = re.compile(hash_regexp)
187
+ filtered_hash_commits = []
188
+ for cdict in commits:
189
+ commit_hash = cdict["git_hash"]
190
+ commit_summary = cdict["commit_summary"]
191
+ match_obj = re.search(hash_regexp_string, commit_hash)
192
+ if match_obj is None:
193
+ logging.info(
194
+ "Skipping {} given it does not match regex {}".format(
195
+ commit_hash, hash_regexp_string
196
+ )
197
+ )
198
+ else:
199
+ print(
200
+ "Commit with hash: {} added. summary: {}".format(
201
+ commit_hash, commit_summary
202
+ )
203
+ )
204
+ filtered_hash_commits.append(cdict)
205
+
206
+ if args.dry_run is False:
207
+ conn = redis.StrictRedis(
208
+ host=args.redis_host,
209
+ port=args.redis_port,
210
+ password=args.redis_pass,
211
+ username=args.redis_user,
212
+ decode_responses=False,
213
+ )
214
+
215
+ for rep in range(0, 1):
216
+ for cdict in filtered_hash_commits:
217
+
218
+ # Pass local repository path if using local repo
219
+ local_repo_path = redisDirPath if args.redis_repo is not None else None
220
+
221
+ (
222
+ result,
223
+ error_msg,
224
+ commit_dict,
225
+ _,
226
+ binary_key,
227
+ binary_value,
228
+ ) = get_commit_dict_from_sha(
229
+ cdict["git_hash"],
230
+ "redis",
231
+ "redis",
232
+ cdict,
233
+ True,
234
+ args.gh_token,
235
+ None,
236
+ local_repo_path,
237
+ )
238
+ if result is True:
239
+ result, reply_fields, error_msg = request_build_from_commit_info(
240
+ conn,
241
+ commit_dict,
242
+ {},
243
+ binary_key,
244
+ binary_value,
245
+ REDIS_BINS_EXPIRE_SECS,
246
+ )
247
+ logging.info(
248
+ "Successfully requested a build for commit: {}. Request stream id: {}.".format(
249
+ cdict["git_hash"], reply_fields["id"]
250
+ )
251
+ )
252
+ else:
253
+ logging.error(error_msg)
254
+
255
+ else:
256
+ logging.info("Skipping actual work trigger ( dry-run )")
257
+ if cleanUp is True:
258
+ logging.info("Removing temporary redis dir {}.".format(redisDirPath))
259
+ shutil.rmtree(redisDirPath)
@@ -0,0 +1,5 @@
1
+ # Apache 2 License
2
+ #
3
+ # Copyright (c) 2021., Redis Labs
4
+ # All rights reserved.
5
+ #
@@ -0,0 +1,54 @@
1
+ # BSD 3-Clause License
2
+ #
3
+ # Copyright (c) 2021., Redis Labs Modules
4
+ # All rights reserved.
5
+ #
6
+ import datetime
7
+
8
+
9
+ from redis_benchmarks_specification.__common__.env import (
10
+ GH_REDIS_SERVER_HOST,
11
+ GH_REDIS_SERVER_PORT,
12
+ GH_REDIS_SERVER_AUTH,
13
+ GH_REDIS_SERVER_USER,
14
+ STREAM_KEYNAME_GH_EVENTS_COMMIT,
15
+ STREAM_KEYNAME_NEW_BUILD_EVENTS,
16
+ )
17
+
18
+ from redisbench_admin.run.common import get_start_time_vars
19
+
20
+ START_TIME_NOW_UTC, _, _ = get_start_time_vars()
21
+ START_TIME_LAST_YEAR_UTC = START_TIME_NOW_UTC - datetime.timedelta(days=7)
22
+
23
+
24
+ def spec_watchdog_args(parser):
25
+ # events related Redis
26
+ parser.add_argument("--redis_host", type=str, default=GH_REDIS_SERVER_HOST)
27
+ parser.add_argument("--redis_port", type=int, default=GH_REDIS_SERVER_PORT)
28
+ parser.add_argument("--redis_pass", type=str, default=GH_REDIS_SERVER_AUTH)
29
+ parser.add_argument("--redis_user", type=str, default=GH_REDIS_SERVER_USER)
30
+ # event stream from github
31
+ parser.add_argument(
32
+ "--events_stream_keyname_commits",
33
+ type=str,
34
+ default=STREAM_KEYNAME_GH_EVENTS_COMMIT,
35
+ )
36
+ # build events stream. This is the stream read by the coordinators to kickoff benchmark variations
37
+ parser.add_argument(
38
+ "--events_stream_keyname_builds",
39
+ type=str,
40
+ default=STREAM_KEYNAME_NEW_BUILD_EVENTS,
41
+ )
42
+ parser.add_argument(
43
+ "--update-interval",
44
+ type=int,
45
+ default=60,
46
+ help="watchdog update interval in seconds",
47
+ )
48
+ parser.add_argument(
49
+ "--dry-run",
50
+ default=False,
51
+ action="store_true",
52
+ help="Only check how many benchmarks we would trigger. Don't request benchmark runs at the end.",
53
+ )
54
+ return parser
@@ -0,0 +1,175 @@
1
+ # BSD 3-Clause License
2
+ #
3
+ # Copyright (c) 2021., Redis Labs Modules
4
+ # All rights reserved.
5
+ #
6
+
7
+ import argparse
8
+ import datetime
9
+ import logging
10
+ import time
11
+
12
+ import redis
13
+
14
+ # logging settings
15
+ from redisbench_admin.run.common import get_start_time_vars
16
+ from redistimeseries.client import Client
17
+
18
+ from redis_benchmarks_specification.__watchdog__.args import spec_watchdog_args
19
+ from redis_benchmarks_specification.__common__.package import (
20
+ get_version_string,
21
+ populate_with_poetry_data,
22
+ )
23
+
24
+ logging.basicConfig(
25
+ format="%(asctime)s %(levelname)-4s %(message)s",
26
+ level=logging.INFO,
27
+ datefmt="%Y-%m-%d %H:%M:%S",
28
+ )
29
+
30
+
31
+ def main():
32
+ _, _, project_version = populate_with_poetry_data()
33
+ project_name = "redis-benchmarks-spec-watchdog"
34
+ parser = argparse.ArgumentParser(
35
+ description=get_version_string(project_name, project_version),
36
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
37
+ )
38
+ parser = spec_watchdog_args(parser)
39
+ args = parser.parse_args()
40
+
41
+ cli_command_logic(args, project_name, project_version)
42
+
43
+
44
+ def cli_command_logic(args, project_name, project_version):
45
+ logging.info(
46
+ "Using: {project_name} {project_version}".format(
47
+ project_name=project_name, project_version=project_version
48
+ )
49
+ )
50
+ logging.info("Checking connection to RedisTimeSeries.")
51
+ rts = Client(
52
+ host=args.redis_host,
53
+ port=args.redis_port,
54
+ password=args.redis_pass,
55
+ )
56
+
57
+ # tsname_overall_sc_coordinator_running = "{}/sc-coordinator/state:running".format(
58
+ # prefix
59
+ # )
60
+ # tsname_overall_api_running = "{}/api/state:running".format(prefix)
61
+ # tsname_overall_builder_running = "{}/builder/state:running".format(prefix)
62
+
63
+ rts.redis.ping()
64
+ update_interval = args.update_interval
65
+ logging.info(
66
+ "Entering watching loop. Ticking every {} secs".format(update_interval)
67
+ )
68
+ while True:
69
+ starttime, start_time_ms, _ = get_start_time_vars()
70
+ try:
71
+
72
+ prefix = "mgt-timeseries::benchmarks.redis.io/redis/redis::"
73
+ create_consumer_group_rts_metrics(
74
+ args.dry_run,
75
+ prefix,
76
+ args.events_stream_keyname_commits,
77
+ "event stream from github webhook",
78
+ rts,
79
+ start_time_ms,
80
+ )
81
+ create_consumer_group_rts_metrics(
82
+ args.dry_run,
83
+ prefix,
84
+ args.events_stream_keyname_builds,
85
+ "event stream from built artifacts",
86
+ rts,
87
+ start_time_ms,
88
+ )
89
+ except redis.exceptions.ConnectionError as e:
90
+ logging.error(
91
+ "Detected an error while writing data to rts: {}".format(e.__str__())
92
+ )
93
+ sleep_time_secs = float(update_interval) - (
94
+ (datetime.datetime.now() - starttime).total_seconds()
95
+ % float(update_interval)
96
+ )
97
+ logging.info("Sleeping for {} secs".format(sleep_time_secs))
98
+ time.sleep(sleep_time_secs)
99
+
100
+
101
+ def create_consumer_group_rts_metrics(
102
+ dry_run, prefix, stream_name, event_stream_desc, rts, start_time_ms
103
+ ):
104
+ groups = rts.redis.xinfo_groups(stream_name)
105
+ stream_info = rts.redis.xinfo_stream(stream_name)
106
+ total_events = stream_info["length"]
107
+ total_cgroups = stream_info["groups"]
108
+
109
+ labels_dict = {
110
+ "metric": "consumer_groups:total",
111
+ "type": "mgt-timeseries",
112
+ "stream": stream_name,
113
+ "github_org_repo": "redis/redis",
114
+ }
115
+ tsname_overall_cgrougs_gh_events = "{}stream={}:consumer_groups:total".format(
116
+ prefix, stream_name
117
+ )
118
+ logging.info(
119
+ "stream={}; consumer_groups:total={}".format(stream_name, total_cgroups)
120
+ )
121
+ if dry_run is False:
122
+ rts.add(
123
+ tsname_overall_cgrougs_gh_events,
124
+ start_time_ms,
125
+ total_cgroups,
126
+ labels=labels_dict,
127
+ )
128
+ labels_dict["metric"] = "total_events"
129
+ tsname_total_events_gh_events = "{}stream={}:events:total".format(
130
+ prefix, stream_name
131
+ )
132
+ logging.info("stream={}; total_events={}".format(stream_name, total_events))
133
+ if dry_run is False:
134
+ rts.add(
135
+ tsname_total_events_gh_events,
136
+ start_time_ms,
137
+ total_events,
138
+ labels=labels_dict,
139
+ )
140
+
141
+ for consumer_group in groups:
142
+ consumer_group_name = consumer_group["name"]
143
+ labels_dict["consumer_group"] = consumer_group_name
144
+ events_prefix = "{}stream={}:consumer_group={}:events:".format(
145
+ prefix, stream_name, consumer_group_name
146
+ )
147
+ consumer_group_pending = consumer_group["pending"]
148
+ lag = total_events - consumer_group_pending
149
+ tsname_pending_gh_events = "{}pending".format(events_prefix)
150
+ tsname_total_gh_events = "{}total".format(events_prefix)
151
+ logging.info("cg={}; total_events={}".format(consumer_group_name, total_events))
152
+ logging.info(
153
+ "cg={}; pending={}".format(consumer_group_name, consumer_group_pending)
154
+ )
155
+ if dry_run is False:
156
+ labels_dict["metric"] = "events:pending"
157
+ labels_dict["metric+consumer_group"] = "{} {}".format(
158
+ "events:pending", consumer_group_name
159
+ )
160
+ rts.add(
161
+ tsname_pending_gh_events,
162
+ start_time_ms,
163
+ consumer_group_pending,
164
+ labels=labels_dict,
165
+ )
166
+ labels_dict["metric"] = "events:total"
167
+ labels_dict["metric+consumer_group"] = "{} {}".format(
168
+ "events:total", consumer_group_name
169
+ )
170
+ rts.add(
171
+ tsname_total_gh_events,
172
+ start_time_ms,
173
+ lag,
174
+ labels=labels_dict,
175
+ )
File without changes
@@ -0,0 +1,15 @@
1
+ # BSD 3-Clause License
2
+ #
3
+ # Copyright (c) 2022., Redis Performance Group <performance at redis dot com>
4
+ # All rights reserved.
5
+ #
6
+
7
+
8
+ def generate_command_groups(commands_json):
9
+ groups = {}
10
+ for command_name, command_description in commands_json.items():
11
+ group_name = command_description["group"]
12
+ if group_name not in groups:
13
+ groups[group_name] = []
14
+ groups[group_name].append(command_name)
15
+ return groups
@@ -0,0 +1,20 @@
1
+ version: 0.1
2
+ id: gcc:15.2.0-amd64-debian-bookworm-default
3
+ os: debian-bookworm
4
+ arch: amd64
5
+ compiler: "gcc"
6
+ cpp_compiler: "g++"
7
+ kind: docker
8
+ build_image: gcc:15.2.0-bookworm
9
+ run_image: gcc:15.2.0-bookworm
10
+ description: "Using GNU Compiler Containers (https://hub.docker.com/_/gcc?tab=description)
11
+ pre-configured environment with all the tools required to build with gcc."
12
+ metadata:
13
+ compiler: "gcc"
14
+ compiler_version: "15.2.0"
15
+ os: debian-bookworm
16
+ arch: amd64
17
+
18
+ env:
19
+ REDIS_CFLAGS: "-g -fno-omit-frame-pointer"
20
+
@@ -0,0 +1,20 @@
1
+ version: 0.1
2
+ id: gcc:15.2.0-arm64-debian-bookworm-default
3
+ os: debian-bookworm
4
+ arch: arm64
5
+ compiler: "gcc"
6
+ cpp_compiler: "g++"
7
+ kind: docker
8
+ build_image: gcc:15.2.0-bookworm
9
+ run_image: gcc:15.2.0-bookworm
10
+ description: "Using GNU Compiler Containers (https://hub.docker.com/_/gcc?tab=description)
11
+ pre-configured environment with all the tools required to build with gcc."
12
+ metadata:
13
+ compiler: "gcc"
14
+ compiler_version: "15.2.0"
15
+ os: debian-bookworm
16
+ arch: arm64
17
+
18
+ env:
19
+ REDIS_CFLAGS: "-g -fno-omit-frame-pointer"
20
+
@@ -0,0 +1,27 @@
1
+ kind: VM
2
+
3
+ infrastructure_as_code:
4
+ trigger_mode: "provision"
5
+ provisioning:
6
+ setup_teardown_required: true
7
+ definition_language: "hcl"
8
+ definition_contributor: redislabs
9
+ definition: https://github.com/RedisLabsModules/testing-infrastructure/tree/master/terraform/oss-1node-c5.4xlarge
10
+ units: 1
11
+ provider: "aws"
12
+ os: "ubuntu18.04"
13
+ os_arch: "linux/amd64"
14
+ user: "ubuntu"
15
+ pem: "benchmarks.redislabs.pem"
16
+
17
+ metadata:
18
+ labels:
19
+ provider: "aws"
20
+ instance_type: "c5.4xlarge"
21
+ os: "ubuntu18.04"
22
+ os_arch: "linux/amd64"
23
+ definition_contributor: redislabs
24
+
25
+ unit-specs:
26
+ cpu: 16
27
+ memory: 32