tigerbeetle 0.0.36 → 0.0.38

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 (248) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/ext/tb_client/extconf.rb +13 -13
  4. data/ext/tb_client/tigerbeetle/LICENSE +177 -0
  5. data/ext/tb_client/tigerbeetle/build.zig +2327 -0
  6. data/ext/tb_client/tigerbeetle/src/aof.zig +1000 -0
  7. data/ext/tb_client/tigerbeetle/src/build_multiversion.zig +808 -0
  8. data/ext/tb_client/tigerbeetle/src/cdc/amqp/protocol.zig +1283 -0
  9. data/ext/tb_client/tigerbeetle/src/cdc/amqp/spec.zig +1704 -0
  10. data/ext/tb_client/tigerbeetle/src/cdc/amqp/types.zig +341 -0
  11. data/ext/tb_client/tigerbeetle/src/cdc/amqp.zig +1450 -0
  12. data/ext/tb_client/tigerbeetle/src/cdc/runner.zig +1659 -0
  13. data/ext/tb_client/tigerbeetle/src/clients/c/samples/main.c +406 -0
  14. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/context.zig +1092 -0
  15. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/echo_client.zig +286 -0
  16. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/packet.zig +158 -0
  17. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/signal.zig +229 -0
  18. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/signal_fuzz.zig +110 -0
  19. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client.h +386 -0
  20. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client.zig +34 -0
  21. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client_exports.zig +281 -0
  22. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client_header.zig +312 -0
  23. data/ext/tb_client/tigerbeetle/src/clients/c/tb_client_header_test.zig +138 -0
  24. data/ext/tb_client/tigerbeetle/src/clients/c/test.zig +466 -0
  25. data/ext/tb_client/tigerbeetle/src/clients/docs_samples.zig +157 -0
  26. data/ext/tb_client/tigerbeetle/src/clients/docs_types.zig +90 -0
  27. data/ext/tb_client/tigerbeetle/src/clients/dotnet/ci.zig +203 -0
  28. data/ext/tb_client/tigerbeetle/src/clients/dotnet/docs.zig +79 -0
  29. data/ext/tb_client/tigerbeetle/src/clients/dotnet/dotnet_bindings.zig +542 -0
  30. data/ext/tb_client/tigerbeetle/src/clients/go/ci.zig +109 -0
  31. data/ext/tb_client/tigerbeetle/src/clients/go/docs.zig +86 -0
  32. data/ext/tb_client/tigerbeetle/src/clients/go/go_bindings.zig +370 -0
  33. data/ext/tb_client/tigerbeetle/src/clients/go/pkg/native/tb_client.h +386 -0
  34. data/ext/tb_client/tigerbeetle/src/clients/java/ci.zig +167 -0
  35. data/ext/tb_client/tigerbeetle/src/clients/java/docs.zig +126 -0
  36. data/ext/tb_client/tigerbeetle/src/clients/java/java_bindings.zig +996 -0
  37. data/ext/tb_client/tigerbeetle/src/clients/java/src/client.zig +748 -0
  38. data/ext/tb_client/tigerbeetle/src/clients/java/src/jni.zig +3238 -0
  39. data/ext/tb_client/tigerbeetle/src/clients/java/src/jni_tests.zig +1718 -0
  40. data/ext/tb_client/tigerbeetle/src/clients/java/src/jni_thread_cleaner.zig +190 -0
  41. data/ext/tb_client/tigerbeetle/src/clients/node/ci.zig +104 -0
  42. data/ext/tb_client/tigerbeetle/src/clients/node/docs.zig +75 -0
  43. data/ext/tb_client/tigerbeetle/src/clients/node/node.zig +522 -0
  44. data/ext/tb_client/tigerbeetle/src/clients/node/node_bindings.zig +267 -0
  45. data/ext/tb_client/tigerbeetle/src/clients/node/src/c.zig +3 -0
  46. data/ext/tb_client/tigerbeetle/src/clients/node/src/translate.zig +379 -0
  47. data/ext/tb_client/tigerbeetle/src/clients/python/ci.zig +131 -0
  48. data/ext/tb_client/tigerbeetle/src/clients/python/docs.zig +63 -0
  49. data/ext/tb_client/tigerbeetle/src/clients/python/python_bindings.zig +588 -0
  50. data/ext/tb_client/tigerbeetle/src/clients/rust/assets/tb_client.h +386 -0
  51. data/ext/tb_client/tigerbeetle/src/clients/rust/ci.zig +73 -0
  52. data/ext/tb_client/tigerbeetle/src/clients/rust/docs.zig +106 -0
  53. data/ext/tb_client/tigerbeetle/src/clients/rust/rust_bindings.zig +305 -0
  54. data/ext/tb_client/tigerbeetle/src/config.zig +296 -0
  55. data/ext/tb_client/tigerbeetle/src/constants.zig +790 -0
  56. data/ext/tb_client/tigerbeetle/src/copyhound.zig +202 -0
  57. data/ext/tb_client/tigerbeetle/src/counting_allocator.zig +72 -0
  58. data/ext/tb_client/tigerbeetle/src/direction.zig +120 -0
  59. data/ext/tb_client/tigerbeetle/src/docs_website/build.zig +158 -0
  60. data/ext/tb_client/tigerbeetle/src/docs_website/src/content.zig +156 -0
  61. data/ext/tb_client/tigerbeetle/src/docs_website/src/docs.zig +252 -0
  62. data/ext/tb_client/tigerbeetle/src/docs_website/src/file_checker.zig +313 -0
  63. data/ext/tb_client/tigerbeetle/src/docs_website/src/html.zig +87 -0
  64. data/ext/tb_client/tigerbeetle/src/docs_website/src/page_writer.zig +63 -0
  65. data/ext/tb_client/tigerbeetle/src/docs_website/src/redirects.zig +47 -0
  66. data/ext/tb_client/tigerbeetle/src/docs_website/src/search_index_writer.zig +28 -0
  67. data/ext/tb_client/tigerbeetle/src/docs_website/src/service_worker_writer.zig +61 -0
  68. data/ext/tb_client/tigerbeetle/src/docs_website/src/single_page_writer.zig +169 -0
  69. data/ext/tb_client/tigerbeetle/src/docs_website/src/website.zig +46 -0
  70. data/ext/tb_client/tigerbeetle/src/ewah.zig +445 -0
  71. data/ext/tb_client/tigerbeetle/src/ewah_benchmark.zig +128 -0
  72. data/ext/tb_client/tigerbeetle/src/ewah_fuzz.zig +171 -0
  73. data/ext/tb_client/tigerbeetle/src/fuzz_tests.zig +179 -0
  74. data/ext/tb_client/tigerbeetle/src/integration_tests.zig +662 -0
  75. data/ext/tb_client/tigerbeetle/src/io/common.zig +155 -0
  76. data/ext/tb_client/tigerbeetle/src/io/darwin.zig +1093 -0
  77. data/ext/tb_client/tigerbeetle/src/io/linux.zig +1880 -0
  78. data/ext/tb_client/tigerbeetle/src/io/test.zig +1005 -0
  79. data/ext/tb_client/tigerbeetle/src/io/windows.zig +1598 -0
  80. data/ext/tb_client/tigerbeetle/src/io.zig +34 -0
  81. data/ext/tb_client/tigerbeetle/src/iops.zig +134 -0
  82. data/ext/tb_client/tigerbeetle/src/list.zig +236 -0
  83. data/ext/tb_client/tigerbeetle/src/lsm/binary_search.zig +848 -0
  84. data/ext/tb_client/tigerbeetle/src/lsm/binary_search_benchmark.zig +179 -0
  85. data/ext/tb_client/tigerbeetle/src/lsm/cache_map.zig +424 -0
  86. data/ext/tb_client/tigerbeetle/src/lsm/cache_map_fuzz.zig +420 -0
  87. data/ext/tb_client/tigerbeetle/src/lsm/compaction.zig +2117 -0
  88. data/ext/tb_client/tigerbeetle/src/lsm/composite_key.zig +182 -0
  89. data/ext/tb_client/tigerbeetle/src/lsm/forest.zig +1119 -0
  90. data/ext/tb_client/tigerbeetle/src/lsm/forest_fuzz.zig +1102 -0
  91. data/ext/tb_client/tigerbeetle/src/lsm/forest_table_iterator.zig +200 -0
  92. data/ext/tb_client/tigerbeetle/src/lsm/groove.zig +1495 -0
  93. data/ext/tb_client/tigerbeetle/src/lsm/k_way_merge.zig +739 -0
  94. data/ext/tb_client/tigerbeetle/src/lsm/k_way_merge_benchmark.zig +166 -0
  95. data/ext/tb_client/tigerbeetle/src/lsm/manifest.zig +754 -0
  96. data/ext/tb_client/tigerbeetle/src/lsm/manifest_level.zig +1294 -0
  97. data/ext/tb_client/tigerbeetle/src/lsm/manifest_level_fuzz.zig +510 -0
  98. data/ext/tb_client/tigerbeetle/src/lsm/manifest_log.zig +1263 -0
  99. data/ext/tb_client/tigerbeetle/src/lsm/manifest_log_fuzz.zig +628 -0
  100. data/ext/tb_client/tigerbeetle/src/lsm/node_pool.zig +247 -0
  101. data/ext/tb_client/tigerbeetle/src/lsm/scan_buffer.zig +116 -0
  102. data/ext/tb_client/tigerbeetle/src/lsm/scan_builder.zig +543 -0
  103. data/ext/tb_client/tigerbeetle/src/lsm/scan_fuzz.zig +938 -0
  104. data/ext/tb_client/tigerbeetle/src/lsm/scan_lookup.zig +293 -0
  105. data/ext/tb_client/tigerbeetle/src/lsm/scan_merge.zig +359 -0
  106. data/ext/tb_client/tigerbeetle/src/lsm/scan_range.zig +99 -0
  107. data/ext/tb_client/tigerbeetle/src/lsm/scan_state.zig +17 -0
  108. data/ext/tb_client/tigerbeetle/src/lsm/scan_tree.zig +962 -0
  109. data/ext/tb_client/tigerbeetle/src/lsm/schema.zig +617 -0
  110. data/ext/tb_client/tigerbeetle/src/lsm/scratch_memory.zig +84 -0
  111. data/ext/tb_client/tigerbeetle/src/lsm/segmented_array.zig +1500 -0
  112. data/ext/tb_client/tigerbeetle/src/lsm/segmented_array_benchmark.zig +149 -0
  113. data/ext/tb_client/tigerbeetle/src/lsm/segmented_array_fuzz.zig +7 -0
  114. data/ext/tb_client/tigerbeetle/src/lsm/set_associative_cache.zig +865 -0
  115. data/ext/tb_client/tigerbeetle/src/lsm/table.zig +607 -0
  116. data/ext/tb_client/tigerbeetle/src/lsm/table_memory.zig +843 -0
  117. data/ext/tb_client/tigerbeetle/src/lsm/table_value_iterator.zig +90 -0
  118. data/ext/tb_client/tigerbeetle/src/lsm/timestamp_range.zig +40 -0
  119. data/ext/tb_client/tigerbeetle/src/lsm/tree.zig +630 -0
  120. data/ext/tb_client/tigerbeetle/src/lsm/tree_fuzz.zig +933 -0
  121. data/ext/tb_client/tigerbeetle/src/lsm/zig_zag_merge.zig +534 -0
  122. data/ext/tb_client/tigerbeetle/src/message_buffer.zig +469 -0
  123. data/ext/tb_client/tigerbeetle/src/message_bus.zig +1214 -0
  124. data/ext/tb_client/tigerbeetle/src/message_bus_fuzz.zig +936 -0
  125. data/ext/tb_client/tigerbeetle/src/message_pool.zig +343 -0
  126. data/ext/tb_client/tigerbeetle/src/multiversion.zig +2195 -0
  127. data/ext/tb_client/tigerbeetle/src/queue.zig +390 -0
  128. data/ext/tb_client/tigerbeetle/src/repl/completion.zig +201 -0
  129. data/ext/tb_client/tigerbeetle/src/repl/parser.zig +1356 -0
  130. data/ext/tb_client/tigerbeetle/src/repl/terminal.zig +496 -0
  131. data/ext/tb_client/tigerbeetle/src/repl.zig +1034 -0
  132. data/ext/tb_client/tigerbeetle/src/scripts/amqp.zig +973 -0
  133. data/ext/tb_client/tigerbeetle/src/scripts/cfo.zig +1866 -0
  134. data/ext/tb_client/tigerbeetle/src/scripts/changelog.zig +304 -0
  135. data/ext/tb_client/tigerbeetle/src/scripts/ci.zig +227 -0
  136. data/ext/tb_client/tigerbeetle/src/scripts/client_readmes.zig +658 -0
  137. data/ext/tb_client/tigerbeetle/src/scripts/devhub.zig +466 -0
  138. data/ext/tb_client/tigerbeetle/src/scripts/release.zig +1058 -0
  139. data/ext/tb_client/tigerbeetle/src/scripts.zig +105 -0
  140. data/ext/tb_client/tigerbeetle/src/shell.zig +1195 -0
  141. data/ext/tb_client/tigerbeetle/src/stack.zig +260 -0
  142. data/ext/tb_client/tigerbeetle/src/state_machine/auditor.zig +911 -0
  143. data/ext/tb_client/tigerbeetle/src/state_machine/workload.zig +2079 -0
  144. data/ext/tb_client/tigerbeetle/src/state_machine.zig +4872 -0
  145. data/ext/tb_client/tigerbeetle/src/state_machine_fuzz.zig +288 -0
  146. data/ext/tb_client/tigerbeetle/src/state_machine_tests.zig +3128 -0
  147. data/ext/tb_client/tigerbeetle/src/static_allocator.zig +82 -0
  148. data/ext/tb_client/tigerbeetle/src/stdx/bit_set.zig +157 -0
  149. data/ext/tb_client/tigerbeetle/src/stdx/bounded_array.zig +292 -0
  150. data/ext/tb_client/tigerbeetle/src/stdx/debug.zig +65 -0
  151. data/ext/tb_client/tigerbeetle/src/stdx/flags.zig +1414 -0
  152. data/ext/tb_client/tigerbeetle/src/stdx/mlock.zig +92 -0
  153. data/ext/tb_client/tigerbeetle/src/stdx/prng.zig +677 -0
  154. data/ext/tb_client/tigerbeetle/src/stdx/radix.zig +336 -0
  155. data/ext/tb_client/tigerbeetle/src/stdx/ring_buffer.zig +511 -0
  156. data/ext/tb_client/tigerbeetle/src/stdx/sort_test.zig +112 -0
  157. data/ext/tb_client/tigerbeetle/src/stdx/stdx.zig +1160 -0
  158. data/ext/tb_client/tigerbeetle/src/stdx/testing/low_level_hash_vectors.zig +142 -0
  159. data/ext/tb_client/tigerbeetle/src/stdx/testing/snaptest.zig +361 -0
  160. data/ext/tb_client/tigerbeetle/src/stdx/time_units.zig +275 -0
  161. data/ext/tb_client/tigerbeetle/src/stdx/unshare.zig +295 -0
  162. data/ext/tb_client/tigerbeetle/src/stdx/vendored/aegis.zig +436 -0
  163. data/ext/tb_client/tigerbeetle/src/stdx/windows.zig +48 -0
  164. data/ext/tb_client/tigerbeetle/src/stdx/zipfian.zig +402 -0
  165. data/ext/tb_client/tigerbeetle/src/storage.zig +489 -0
  166. data/ext/tb_client/tigerbeetle/src/storage_fuzz.zig +180 -0
  167. data/ext/tb_client/tigerbeetle/src/testing/bench.zig +146 -0
  168. data/ext/tb_client/tigerbeetle/src/testing/cluster/grid_checker.zig +53 -0
  169. data/ext/tb_client/tigerbeetle/src/testing/cluster/journal_checker.zig +61 -0
  170. data/ext/tb_client/tigerbeetle/src/testing/cluster/manifest_checker.zig +76 -0
  171. data/ext/tb_client/tigerbeetle/src/testing/cluster/message_bus.zig +110 -0
  172. data/ext/tb_client/tigerbeetle/src/testing/cluster/network.zig +412 -0
  173. data/ext/tb_client/tigerbeetle/src/testing/cluster/state_checker.zig +331 -0
  174. data/ext/tb_client/tigerbeetle/src/testing/cluster/storage_checker.zig +458 -0
  175. data/ext/tb_client/tigerbeetle/src/testing/cluster.zig +1198 -0
  176. data/ext/tb_client/tigerbeetle/src/testing/exhaustigen.zig +128 -0
  177. data/ext/tb_client/tigerbeetle/src/testing/fixtures.zig +181 -0
  178. data/ext/tb_client/tigerbeetle/src/testing/fuzz.zig +144 -0
  179. data/ext/tb_client/tigerbeetle/src/testing/id.zig +97 -0
  180. data/ext/tb_client/tigerbeetle/src/testing/io.zig +317 -0
  181. data/ext/tb_client/tigerbeetle/src/testing/marks.zig +126 -0
  182. data/ext/tb_client/tigerbeetle/src/testing/packet_simulator.zig +533 -0
  183. data/ext/tb_client/tigerbeetle/src/testing/reply_sequence.zig +154 -0
  184. data/ext/tb_client/tigerbeetle/src/testing/state_machine.zig +389 -0
  185. data/ext/tb_client/tigerbeetle/src/testing/storage.zig +1247 -0
  186. data/ext/tb_client/tigerbeetle/src/testing/table.zig +249 -0
  187. data/ext/tb_client/tigerbeetle/src/testing/time.zig +98 -0
  188. data/ext/tb_client/tigerbeetle/src/testing/tmp_tigerbeetle.zig +212 -0
  189. data/ext/tb_client/tigerbeetle/src/testing/vortex/constants.zig +26 -0
  190. data/ext/tb_client/tigerbeetle/src/testing/vortex/faulty_network.zig +580 -0
  191. data/ext/tb_client/tigerbeetle/src/testing/vortex/java_driver/ci.zig +39 -0
  192. data/ext/tb_client/tigerbeetle/src/testing/vortex/logged_process.zig +214 -0
  193. data/ext/tb_client/tigerbeetle/src/testing/vortex/rust_driver/ci.zig +34 -0
  194. data/ext/tb_client/tigerbeetle/src/testing/vortex/supervisor.zig +766 -0
  195. data/ext/tb_client/tigerbeetle/src/testing/vortex/workload.zig +543 -0
  196. data/ext/tb_client/tigerbeetle/src/testing/vortex/zig_driver.zig +181 -0
  197. data/ext/tb_client/tigerbeetle/src/tidy.zig +1448 -0
  198. data/ext/tb_client/tigerbeetle/src/tigerbeetle/benchmark_driver.zig +227 -0
  199. data/ext/tb_client/tigerbeetle/src/tigerbeetle/benchmark_load.zig +1069 -0
  200. data/ext/tb_client/tigerbeetle/src/tigerbeetle/cli.zig +1422 -0
  201. data/ext/tb_client/tigerbeetle/src/tigerbeetle/inspect.zig +1658 -0
  202. data/ext/tb_client/tigerbeetle/src/tigerbeetle/inspect_integrity.zig +518 -0
  203. data/ext/tb_client/tigerbeetle/src/tigerbeetle/libtb_client.zig +36 -0
  204. data/ext/tb_client/tigerbeetle/src/tigerbeetle/main.zig +646 -0
  205. data/ext/tb_client/tigerbeetle/src/tigerbeetle.zig +958 -0
  206. data/ext/tb_client/tigerbeetle/src/time.zig +236 -0
  207. data/ext/tb_client/tigerbeetle/src/trace/event.zig +745 -0
  208. data/ext/tb_client/tigerbeetle/src/trace/statsd.zig +462 -0
  209. data/ext/tb_client/tigerbeetle/src/trace.zig +556 -0
  210. data/ext/tb_client/tigerbeetle/src/unit_tests.zig +321 -0
  211. data/ext/tb_client/tigerbeetle/src/vopr.zig +1785 -0
  212. data/ext/tb_client/tigerbeetle/src/vortex.zig +101 -0
  213. data/ext/tb_client/tigerbeetle/src/vsr/checkpoint_trailer.zig +473 -0
  214. data/ext/tb_client/tigerbeetle/src/vsr/checksum.zig +208 -0
  215. data/ext/tb_client/tigerbeetle/src/vsr/checksum_benchmark.zig +43 -0
  216. data/ext/tb_client/tigerbeetle/src/vsr/client.zig +768 -0
  217. data/ext/tb_client/tigerbeetle/src/vsr/client_replies.zig +532 -0
  218. data/ext/tb_client/tigerbeetle/src/vsr/client_sessions.zig +338 -0
  219. data/ext/tb_client/tigerbeetle/src/vsr/clock.zig +1019 -0
  220. data/ext/tb_client/tigerbeetle/src/vsr/fault_detector.zig +279 -0
  221. data/ext/tb_client/tigerbeetle/src/vsr/free_set.zig +1381 -0
  222. data/ext/tb_client/tigerbeetle/src/vsr/free_set_fuzz.zig +315 -0
  223. data/ext/tb_client/tigerbeetle/src/vsr/grid.zig +1460 -0
  224. data/ext/tb_client/tigerbeetle/src/vsr/grid_blocks_missing.zig +757 -0
  225. data/ext/tb_client/tigerbeetle/src/vsr/grid_scrubber.zig +797 -0
  226. data/ext/tb_client/tigerbeetle/src/vsr/journal.zig +2586 -0
  227. data/ext/tb_client/tigerbeetle/src/vsr/marzullo.zig +308 -0
  228. data/ext/tb_client/tigerbeetle/src/vsr/message_header.zig +1777 -0
  229. data/ext/tb_client/tigerbeetle/src/vsr/multi_batch.zig +715 -0
  230. data/ext/tb_client/tigerbeetle/src/vsr/multi_batch_fuzz.zig +185 -0
  231. data/ext/tb_client/tigerbeetle/src/vsr/repair_budget.zig +333 -0
  232. data/ext/tb_client/tigerbeetle/src/vsr/replica.zig +12355 -0
  233. data/ext/tb_client/tigerbeetle/src/vsr/replica_format.zig +416 -0
  234. data/ext/tb_client/tigerbeetle/src/vsr/replica_reformat.zig +165 -0
  235. data/ext/tb_client/tigerbeetle/src/vsr/replica_test.zig +2928 -0
  236. data/ext/tb_client/tigerbeetle/src/vsr/routing.zig +1075 -0
  237. data/ext/tb_client/tigerbeetle/src/vsr/superblock.zig +1603 -0
  238. data/ext/tb_client/tigerbeetle/src/vsr/superblock_fuzz.zig +484 -0
  239. data/ext/tb_client/tigerbeetle/src/vsr/superblock_quorums.zig +405 -0
  240. data/ext/tb_client/tigerbeetle/src/vsr/superblock_quorums_fuzz.zig +355 -0
  241. data/ext/tb_client/tigerbeetle/src/vsr/sync.zig +29 -0
  242. data/ext/tb_client/tigerbeetle/src/vsr.zig +1727 -0
  243. data/lib/tb_client/shared_lib.rb +12 -5
  244. data/lib/tigerbeetle/platforms.rb +9 -0
  245. data/lib/tigerbeetle/version.rb +2 -2
  246. data/tigerbeetle.gemspec +22 -5
  247. metadata +242 -3
  248. data/ext/tb_client/pkg.tar.gz +0 -0
@@ -0,0 +1,321 @@
1
+ comptime {
2
+ _ = @import("aof.zig");
3
+ _ = @import("cdc/amqp.zig");
4
+ _ = @import("cdc/amqp/protocol.zig");
5
+ _ = @import("cdc/runner.zig");
6
+ _ = @import("clients/c/tb_client.zig");
7
+ _ = @import("clients/c/tb_client/context.zig");
8
+ _ = @import("clients/c/tb_client/signal.zig");
9
+ _ = @import("clients/c/test.zig");
10
+ _ = @import("copyhound.zig");
11
+ _ = @import("ewah.zig");
12
+ _ = @import("ewah_benchmark.zig");
13
+ _ = @import("io/test.zig");
14
+ _ = @import("iops.zig");
15
+ _ = @import("list.zig");
16
+ _ = @import("lsm/binary_search.zig");
17
+ _ = @import("lsm/binary_search_benchmark.zig");
18
+ _ = @import("lsm/cache_map.zig");
19
+ _ = @import("lsm/composite_key.zig");
20
+ _ = @import("lsm/forest.zig");
21
+ _ = @import("lsm/forest_table_iterator.zig");
22
+ _ = @import("lsm/k_way_merge.zig");
23
+ _ = @import("lsm/k_way_merge_benchmark.zig");
24
+ _ = @import("lsm/manifest_level.zig");
25
+ _ = @import("lsm/node_pool.zig");
26
+ _ = @import("lsm/scratch_memory.zig");
27
+ _ = @import("lsm/segmented_array.zig");
28
+ _ = @import("lsm/segmented_array_benchmark.zig");
29
+ _ = @import("lsm/set_associative_cache.zig");
30
+ _ = @import("lsm/table.zig");
31
+ _ = @import("lsm/table_memory.zig");
32
+ _ = @import("lsm/tree.zig");
33
+ _ = @import("lsm/zig_zag_merge.zig");
34
+ _ = @import("message_buffer.zig");
35
+ _ = @import("multiversion.zig");
36
+ _ = @import("queue.zig");
37
+ _ = @import("repl/completion.zig");
38
+ _ = @import("repl/parser.zig");
39
+ _ = @import("repl/terminal.zig");
40
+ _ = @import("scripts/cfo.zig");
41
+ _ = @import("scripts/changelog.zig");
42
+ _ = @import("shell.zig");
43
+ _ = @import("stack.zig");
44
+ _ = @import("state_machine.zig");
45
+ _ = @import("state_machine_fuzz.zig");
46
+ _ = @import("state_machine_tests.zig");
47
+ _ = @import("testing/bench.zig");
48
+ _ = @import("testing/exhaustigen.zig");
49
+ _ = @import("testing/id.zig");
50
+ _ = @import("testing/marks.zig");
51
+ _ = @import("testing/table.zig");
52
+ _ = @import("testing/vortex/logged_process.zig");
53
+ _ = @import("testing/vortex/supervisor.zig");
54
+ _ = @import("tidy.zig");
55
+ _ = @import("time.zig");
56
+ _ = @import("trace.zig");
57
+ _ = @import("trace/event.zig");
58
+ _ = @import("vsr.zig");
59
+ _ = @import("vsr/checksum.zig");
60
+ _ = @import("vsr/checksum_benchmark.zig");
61
+ _ = @import("vsr/clock.zig");
62
+ _ = @import("vsr/fault_detector.zig");
63
+ _ = @import("vsr/free_set.zig");
64
+ _ = @import("vsr/grid_scrubber.zig");
65
+ _ = @import("vsr/journal.zig");
66
+ _ = @import("vsr/marzullo.zig");
67
+ _ = @import("vsr/message_header.zig");
68
+ _ = @import("vsr/multi_batch.zig");
69
+ _ = @import("vsr/replica_format.zig");
70
+ _ = @import("vsr/replica_test.zig");
71
+ _ = @import("vsr/routing.zig");
72
+ _ = @import("vsr/superblock.zig");
73
+ _ = @import("vsr/superblock_quorums.zig");
74
+ }
75
+
76
+ const quine =
77
+ \\const std = @import("std");
78
+ \\const stdx = @import("stdx");
79
+ \\const builtin = @import("builtin");
80
+ \\const assert = std.debug.assert;
81
+ \\
82
+ \\const MiB = stdx.MiB;
83
+ \\
84
+ \\test quine {
85
+ \\ var arena_instance = std.heap.ArenaAllocator.init(std.testing.allocator);
86
+ \\ defer arena_instance.deinit();
87
+ \\
88
+ \\ const arena = arena_instance.allocator();
89
+ \\
90
+ \\ // build.zig runs this in the root dir.
91
+ \\ var src_dir = try std.fs.cwd().openDir("src", .{
92
+ \\ .access_sub_paths = true,
93
+ \\ .iterate = true,
94
+ \\ });
95
+ \\
96
+ \\ var unit_tests_contents = std.ArrayList(u8).init(arena);
97
+ \\ const writer = unit_tests_contents.writer();
98
+ \\ try writer.writeAll("comptime {\n");
99
+ \\
100
+ \\ for (try unit_test_files(arena, src_dir)) |unit_test_file| {
101
+ \\ try writer.print(" _ = @import(\"{s}\");\n", .{unit_test_file});
102
+ \\ }
103
+ \\
104
+ \\ try writer.writeAll("}\n\n");
105
+ \\
106
+ \\ var quine_lines = std.mem.splitScalar(u8, quine, '\n');
107
+ \\ try writer.writeAll("const quine =\n");
108
+ \\ while (quine_lines.next()) |line| {
109
+ \\ try writer.print(" \\\\{s}\n", .{line});
110
+ \\ }
111
+ \\ try writer.writeAll(";\n\n");
112
+ \\
113
+ \\ try writer.writeAll(quine);
114
+ \\
115
+ \\ assert(std.mem.eql(u8, @src().file, "unit_tests.zig"));
116
+ \\ const unit_tests_contents_disk = try src_dir.readFileAlloc(arena, @src().file, 1 * MiB);
117
+ \\ assert(std.mem.startsWith(u8, unit_tests_contents_disk, "comptime {"));
118
+ \\ assert(std.mem.endsWith(u8, unit_tests_contents.items, "}\n"));
119
+ \\
120
+ \\ const unit_tests_needs_update = !std.mem.startsWith(
121
+ \\ u8,
122
+ \\ unit_tests_contents_disk,
123
+ \\ unit_tests_contents.items,
124
+ \\ );
125
+ \\
126
+ \\ if (unit_tests_needs_update) {
127
+ \\ if (std.process.hasEnvVarConstant("SNAP_UPDATE")) {
128
+ \\ // Add the rest of the real file on disk to the generated in-memory file.
129
+ \\ try src_dir.writeFile(.{
130
+ \\ .sub_path = "unit_tests.zig",
131
+ \\ .data = unit_tests_contents.items,
132
+ \\ .flags = .{ .exclusive = false, .truncate = true },
133
+ \\ });
134
+ \\ } else {
135
+ \\ std.debug.print("unit_tests.zig needs updating.\n", .{});
136
+ \\ std.debug.print(
137
+ \\ "Rerun with SNAP_UPDATE=1 environmental variable to update the contents.\n",
138
+ \\ .{},
139
+ \\ );
140
+ \\ assert(false);
141
+ \\ }
142
+ \\ }
143
+ \\}
144
+ \\
145
+ \\fn unit_test_files(arena: std.mem.Allocator, src_dir: std.fs.Dir) ![]const []const u8 {
146
+ \\ // Different platforms can walk the directory in different orders.
147
+ \\ // Store the paths and sort them to ensure consistency.
148
+ \\ var result = std.ArrayList([]const u8).init(arena);
149
+ \\
150
+ \\ var src_walker = try src_dir.walk(arena);
151
+ \\ defer src_walker.deinit();
152
+ \\
153
+ \\ while (try src_walker.next()) |entry| {
154
+ \\ if (entry.kind != .file) continue;
155
+ \\
156
+ \\ const entry_path = try arena.dupe(u8, entry.path);
157
+ \\
158
+ \\ // Replace the path separator to be Unix-style, for consistency on Windows.
159
+ \\ // Don't use entry.path directly!
160
+ \\ if (builtin.os.tag == .windows) {
161
+ \\ std.mem.replaceScalar(u8, entry_path, '\\', '/');
162
+ \\ }
163
+ \\
164
+ \\ if (!std.mem.endsWith(u8, entry_path, ".zig")) continue;
165
+ \\
166
+ \\ if (std.mem.eql(u8, entry_path, "unit_tests.zig")) continue;
167
+ \\ if (std.mem.eql(u8, entry_path, "integration_tests.zig")) continue;
168
+ \\ if (std.mem.startsWith(u8, entry_path, "stdx/")) continue;
169
+ \\ if (std.mem.startsWith(u8, entry_path, "clients/") and
170
+ \\ !std.mem.startsWith(u8, entry_path, "clients/c")) continue;
171
+ \\ if (std.mem.eql(u8, entry_path, "clients/c/tb_client_header_test.zig")) continue;
172
+ \\ if (std.mem.eql(u8, entry_path, "tigerbeetle/libtb_client.zig")) continue;
173
+ \\
174
+ \\ const contents = try src_dir.readFileAlloc(arena, entry_path, 1 * MiB);
175
+ \\ var line_iterator = std.mem.splitScalar(u8, contents, '\n');
176
+ \\ while (line_iterator.next()) |line| {
177
+ \\ const line_trimmed = std.mem.trimLeft(u8, line, " ");
178
+ \\ if (std.mem.startsWith(u8, line_trimmed, "test ")) {
179
+ \\ try result.append(entry_path);
180
+ \\ break;
181
+ \\ }
182
+ \\ }
183
+ \\ }
184
+ \\
185
+ \\ std.mem.sort(
186
+ \\ []const u8,
187
+ \\ result.items,
188
+ \\ {},
189
+ \\ struct {
190
+ \\ fn less_than_fn(_: void, a: []const u8, b: []const u8) bool {
191
+ \\ return std.mem.order(u8, a, b) == .lt;
192
+ \\ }
193
+ \\ }.less_than_fn,
194
+ \\ );
195
+ \\
196
+ \\ return result.items;
197
+ \\}
198
+ \\
199
+ ;
200
+
201
+ const std = @import("std");
202
+ const stdx = @import("stdx");
203
+ const builtin = @import("builtin");
204
+ const assert = std.debug.assert;
205
+
206
+ const MiB = stdx.MiB;
207
+
208
+ test quine {
209
+ var arena_instance = std.heap.ArenaAllocator.init(std.testing.allocator);
210
+ defer arena_instance.deinit();
211
+
212
+ const arena = arena_instance.allocator();
213
+
214
+ // build.zig runs this in the root dir.
215
+ var src_dir = try std.fs.cwd().openDir("src", .{
216
+ .access_sub_paths = true,
217
+ .iterate = true,
218
+ });
219
+
220
+ var unit_tests_contents = std.ArrayList(u8).init(arena);
221
+ const writer = unit_tests_contents.writer();
222
+ try writer.writeAll("comptime {\n");
223
+
224
+ for (try unit_test_files(arena, src_dir)) |unit_test_file| {
225
+ try writer.print(" _ = @import(\"{s}\");\n", .{unit_test_file});
226
+ }
227
+
228
+ try writer.writeAll("}\n\n");
229
+
230
+ var quine_lines = std.mem.splitScalar(u8, quine, '\n');
231
+ try writer.writeAll("const quine =\n");
232
+ while (quine_lines.next()) |line| {
233
+ try writer.print(" \\\\{s}\n", .{line});
234
+ }
235
+ try writer.writeAll(";\n\n");
236
+
237
+ try writer.writeAll(quine);
238
+
239
+ assert(std.mem.eql(u8, @src().file, "unit_tests.zig"));
240
+ const unit_tests_contents_disk = try src_dir.readFileAlloc(arena, @src().file, 1 * MiB);
241
+ assert(std.mem.startsWith(u8, unit_tests_contents_disk, "comptime {"));
242
+ assert(std.mem.endsWith(u8, unit_tests_contents.items, "}\n"));
243
+
244
+ const unit_tests_needs_update = !std.mem.startsWith(
245
+ u8,
246
+ unit_tests_contents_disk,
247
+ unit_tests_contents.items,
248
+ );
249
+
250
+ if (unit_tests_needs_update) {
251
+ if (std.process.hasEnvVarConstant("SNAP_UPDATE")) {
252
+ // Add the rest of the real file on disk to the generated in-memory file.
253
+ try src_dir.writeFile(.{
254
+ .sub_path = "unit_tests.zig",
255
+ .data = unit_tests_contents.items,
256
+ .flags = .{ .exclusive = false, .truncate = true },
257
+ });
258
+ } else {
259
+ std.debug.print("unit_tests.zig needs updating.\n", .{});
260
+ std.debug.print(
261
+ "Rerun with SNAP_UPDATE=1 environmental variable to update the contents.\n",
262
+ .{},
263
+ );
264
+ assert(false);
265
+ }
266
+ }
267
+ }
268
+
269
+ fn unit_test_files(arena: std.mem.Allocator, src_dir: std.fs.Dir) ![]const []const u8 {
270
+ // Different platforms can walk the directory in different orders.
271
+ // Store the paths and sort them to ensure consistency.
272
+ var result = std.ArrayList([]const u8).init(arena);
273
+
274
+ var src_walker = try src_dir.walk(arena);
275
+ defer src_walker.deinit();
276
+
277
+ while (try src_walker.next()) |entry| {
278
+ if (entry.kind != .file) continue;
279
+
280
+ const entry_path = try arena.dupe(u8, entry.path);
281
+
282
+ // Replace the path separator to be Unix-style, for consistency on Windows.
283
+ // Don't use entry.path directly!
284
+ if (builtin.os.tag == .windows) {
285
+ std.mem.replaceScalar(u8, entry_path, '\\', '/');
286
+ }
287
+
288
+ if (!std.mem.endsWith(u8, entry_path, ".zig")) continue;
289
+
290
+ if (std.mem.eql(u8, entry_path, "unit_tests.zig")) continue;
291
+ if (std.mem.eql(u8, entry_path, "integration_tests.zig")) continue;
292
+ if (std.mem.startsWith(u8, entry_path, "stdx/")) continue;
293
+ if (std.mem.startsWith(u8, entry_path, "clients/") and
294
+ !std.mem.startsWith(u8, entry_path, "clients/c")) continue;
295
+ if (std.mem.eql(u8, entry_path, "clients/c/tb_client_header_test.zig")) continue;
296
+ if (std.mem.eql(u8, entry_path, "tigerbeetle/libtb_client.zig")) continue;
297
+
298
+ const contents = try src_dir.readFileAlloc(arena, entry_path, 1 * MiB);
299
+ var line_iterator = std.mem.splitScalar(u8, contents, '\n');
300
+ while (line_iterator.next()) |line| {
301
+ const line_trimmed = std.mem.trimLeft(u8, line, " ");
302
+ if (std.mem.startsWith(u8, line_trimmed, "test ")) {
303
+ try result.append(entry_path);
304
+ break;
305
+ }
306
+ }
307
+ }
308
+
309
+ std.mem.sort(
310
+ []const u8,
311
+ result.items,
312
+ {},
313
+ struct {
314
+ fn less_than_fn(_: void, a: []const u8, b: []const u8) bool {
315
+ return std.mem.order(u8, a, b) == .lt;
316
+ }
317
+ }.less_than_fn,
318
+ );
319
+
320
+ return result.items;
321
+ }