@platformatic/rdkafka 4.0.1 → 4.1.0-alpha.1

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 (292) hide show
  1. package/README.md +5 -5
  2. package/bench/seed.sh +0 -0
  3. package/binding.gyp +8 -1
  4. package/ci/prepublish.js +4 -4
  5. package/config.d.ts +126 -10
  6. package/configure +0 -0
  7. package/deps/librdkafka/.semaphore/run-all-tests.yml +77 -0
  8. package/deps/librdkafka/.semaphore/semaphore-integration.yml +250 -0
  9. package/deps/librdkafka/.semaphore/semaphore.yml +67 -44
  10. package/deps/librdkafka/.semaphore/verify-linux-packages.yml +41 -0
  11. package/deps/librdkafka/CHANGELOG.md +471 -1
  12. package/deps/librdkafka/CONFIGURATION.md +29 -9
  13. package/deps/librdkafka/INTRODUCTION.md +909 -601
  14. package/deps/librdkafka/LICENSES.txt +592 -1
  15. package/deps/librdkafka/Makefile +2 -1
  16. package/deps/librdkafka/configure +0 -0
  17. package/deps/librdkafka/debian/rules +0 -0
  18. package/deps/librdkafka/dev-conf.sh +0 -0
  19. package/deps/librdkafka/examples/consumer.c +18 -8
  20. package/deps/librdkafka/examples/describe_consumer_groups.c +25 -6
  21. package/deps/librdkafka/examples/incremental_alter_configs.c +4 -5
  22. package/deps/librdkafka/examples/kafkatest_verifiable_client.cpp +26 -42
  23. package/deps/librdkafka/examples/openssl_engine_example.cpp +3 -4
  24. package/deps/librdkafka/examples/producer.cpp +2 -2
  25. package/deps/librdkafka/examples/user_scram.c +4 -5
  26. package/deps/librdkafka/examples/win_ssl_cert_store.cpp +4 -3
  27. package/deps/librdkafka/lds-gen.py +0 -0
  28. package/deps/librdkafka/mklove/Makefile.base +0 -0
  29. package/deps/librdkafka/packaging/RELEASE.md +8 -0
  30. package/deps/librdkafka/packaging/alpine/build-alpine.sh +0 -0
  31. package/deps/librdkafka/packaging/cp/README.md +4 -1
  32. package/deps/librdkafka/packaging/cp/check_features.c +12 -4
  33. package/deps/librdkafka/packaging/cp/verify-deb.sh +6 -6
  34. package/deps/librdkafka/packaging/cp/verify-packages.sh +52 -31
  35. package/deps/librdkafka/packaging/cp/verify-rpm.sh +6 -13
  36. package/deps/librdkafka/packaging/debian/rules +0 -0
  37. package/deps/librdkafka/packaging/get_version.py +0 -0
  38. package/deps/librdkafka/packaging/homebrew/brew-update-pr.sh +0 -0
  39. package/deps/librdkafka/packaging/mingw-w64/{travis-before-install.sh → export-variables.sh} +0 -7
  40. package/deps/librdkafka/packaging/mingw-w64/semaphoreci-build.sh +1 -1
  41. package/deps/librdkafka/packaging/nuget/artifact.py +0 -0
  42. package/deps/librdkafka/packaging/nuget/cleanup-s3.py +0 -0
  43. package/deps/librdkafka/packaging/nuget/nuget.sh +0 -0
  44. package/deps/librdkafka/packaging/nuget/packaging.py +0 -0
  45. package/deps/librdkafka/packaging/nuget/push-to-nuget.sh +0 -0
  46. package/deps/librdkafka/packaging/nuget/release.py +0 -0
  47. package/deps/librdkafka/packaging/nuget/requirements.txt +3 -3
  48. package/deps/librdkafka/packaging/rpm/mock-on-docker.sh +0 -0
  49. package/deps/librdkafka/packaging/rpm/tests/run-test.sh +0 -0
  50. package/deps/librdkafka/packaging/rpm/tests/test-on-docker.sh +0 -0
  51. package/deps/librdkafka/packaging/tools/build-configurations-checks.sh +3 -1
  52. package/deps/librdkafka/packaging/tools/build-deb-package.sh +0 -0
  53. package/deps/librdkafka/packaging/tools/build-debian.sh +0 -0
  54. package/deps/librdkafka/packaging/tools/build-manylinux.sh +0 -0
  55. package/deps/librdkafka/packaging/tools/build-release-artifacts.sh +0 -0
  56. package/deps/librdkafka/packaging/tools/distro-build.sh +0 -0
  57. package/deps/librdkafka/packaging/tools/gh-release-checksums.py +0 -0
  58. package/deps/librdkafka/packaging/tools/rdutcoverage.sh +0 -0
  59. package/deps/librdkafka/packaging/tools/run-in-docker.sh +28 -0
  60. package/deps/librdkafka/packaging/tools/run-integration-tests.sh +31 -0
  61. package/deps/librdkafka/packaging/tools/run-style-check.sh +4 -0
  62. package/deps/librdkafka/packaging/tools/style-format.sh +6 -5
  63. package/deps/librdkafka/packaging/tools/update_rpcs_max_versions.py +100 -0
  64. package/deps/librdkafka/service.yml +154 -0
  65. package/deps/librdkafka/src/generate_proto.sh +0 -0
  66. package/deps/librdkafka/src/rd.h +145 -2
  67. package/deps/librdkafka/src/rdaddr.h +6 -7
  68. package/deps/librdkafka/src/rdatomic.h +15 -11
  69. package/deps/librdkafka/src/rdavg.h +3 -2
  70. package/deps/librdkafka/src/rdbase64.c +33 -2
  71. package/deps/librdkafka/src/rdbase64.h +2 -0
  72. package/deps/librdkafka/src/rdendian.h +10 -9
  73. package/deps/librdkafka/src/rdhttp.c +418 -100
  74. package/deps/librdkafka/src/rdhttp.h +23 -5
  75. package/deps/librdkafka/src/rdkafka.c +299 -145
  76. package/deps/librdkafka/src/rdkafka.h +89 -6
  77. package/deps/librdkafka/src/rdkafka_admin.c +482 -105
  78. package/deps/librdkafka/src/rdkafka_admin.h +42 -0
  79. package/deps/librdkafka/src/rdkafka_broker.c +463 -312
  80. package/deps/librdkafka/src/rdkafka_broker.h +68 -10
  81. package/deps/librdkafka/src/rdkafka_buf.c +8 -5
  82. package/deps/librdkafka/src/rdkafka_buf.h +4 -3
  83. package/deps/librdkafka/src/rdkafka_cert.c +25 -1
  84. package/deps/librdkafka/src/rdkafka_cert.h +4 -3
  85. package/deps/librdkafka/src/rdkafka_cgrp.c +468 -143
  86. package/deps/librdkafka/src/rdkafka_cgrp.h +36 -2
  87. package/deps/librdkafka/src/rdkafka_conf.c +526 -102
  88. package/deps/librdkafka/src/rdkafka_conf.h +68 -4
  89. package/deps/librdkafka/src/rdkafka_feature.c +472 -35
  90. package/deps/librdkafka/src/rdkafka_feature.h +2 -0
  91. package/deps/librdkafka/src/rdkafka_fetcher.c +22 -2
  92. package/deps/librdkafka/src/rdkafka_fetcher.h +2 -2
  93. package/deps/librdkafka/src/rdkafka_int.h +84 -46
  94. package/deps/librdkafka/src/rdkafka_metadata.c +221 -136
  95. package/deps/librdkafka/src/rdkafka_metadata.h +15 -11
  96. package/deps/librdkafka/src/rdkafka_metadata_cache.c +279 -73
  97. package/deps/librdkafka/src/rdkafka_mock.c +795 -19
  98. package/deps/librdkafka/src/rdkafka_mock.h +119 -0
  99. package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1298 -132
  100. package/deps/librdkafka/src/rdkafka_mock_handlers.c +345 -49
  101. package/deps/librdkafka/src/rdkafka_mock_int.h +180 -61
  102. package/deps/librdkafka/src/rdkafka_msg.c +35 -19
  103. package/deps/librdkafka/src/rdkafka_msg.h +3 -3
  104. package/deps/librdkafka/src/rdkafka_msgset_writer.c +14 -10
  105. package/deps/librdkafka/src/rdkafka_offset.c +33 -5
  106. package/deps/librdkafka/src/rdkafka_op.c +1 -1
  107. package/deps/librdkafka/src/rdkafka_op.h +45 -21
  108. package/deps/librdkafka/src/rdkafka_partition.c +118 -23
  109. package/deps/librdkafka/src/rdkafka_partition.h +16 -7
  110. package/deps/librdkafka/src/rdkafka_proto.h +4 -1
  111. package/deps/librdkafka/src/rdkafka_protocol.h +1 -0
  112. package/deps/librdkafka/src/rdkafka_queue.c +125 -48
  113. package/deps/librdkafka/src/rdkafka_queue.h +19 -0
  114. package/deps/librdkafka/src/rdkafka_range_assignor.c +1 -1
  115. package/deps/librdkafka/src/rdkafka_request.c +336 -64
  116. package/deps/librdkafka/src/rdkafka_request.h +24 -1
  117. package/deps/librdkafka/src/rdkafka_sasl.c +5 -3
  118. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +14 -10
  119. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1166 -89
  120. package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +13 -3
  121. package/deps/librdkafka/src/rdkafka_sasl_plain.c +3 -3
  122. package/deps/librdkafka/src/rdkafka_sasl_scram.c +4 -3
  123. package/deps/librdkafka/src/rdkafka_ssl.c +306 -81
  124. package/deps/librdkafka/src/rdkafka_ssl.h +22 -0
  125. package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4 -0
  126. package/deps/librdkafka/src/rdkafka_telemetry.c +80 -23
  127. package/deps/librdkafka/src/rdkafka_telemetry_encode.c +5 -1
  128. package/deps/librdkafka/src/rdkafka_telemetry_encode.h +20 -20
  129. package/deps/librdkafka/src/rdkafka_topic.c +220 -137
  130. package/deps/librdkafka/src/rdkafka_topic.h +14 -8
  131. package/deps/librdkafka/src/rdkafka_transport.c +59 -47
  132. package/deps/librdkafka/src/rdkafka_transport.h +5 -0
  133. package/deps/librdkafka/src/rdkafka_txnmgr.c +6 -1
  134. package/deps/librdkafka/src/rdmap.c +6 -1
  135. package/deps/librdkafka/src/rdrand.c +11 -1
  136. package/deps/librdkafka/src/rdtime.h +48 -17
  137. package/deps/librdkafka/src/rdunittest.c +42 -25
  138. package/deps/librdkafka/src/rdunittest.h +2 -0
  139. package/deps/librdkafka/src/rdwin32.h +1 -1
  140. package/deps/librdkafka/src/regexp.c +47 -42
  141. package/deps/librdkafka/src/tinycthread_extra.c +45 -21
  142. package/deps/librdkafka/src/tinycthread_extra.h +7 -3
  143. package/deps/librdkafka/src-cpp/rdkafkacpp.h +28 -2
  144. package/deps/librdkafka/tests/0001-multiobj.c +4 -0
  145. package/deps/librdkafka/tests/0004-conf.c +103 -36
  146. package/deps/librdkafka/tests/0009-mock_cluster.c +1 -0
  147. package/deps/librdkafka/tests/0011-produce_batch.c +2 -1
  148. package/deps/librdkafka/tests/0016-client_swname.c +18 -3
  149. package/deps/librdkafka/tests/0017-compression.c +6 -8
  150. package/deps/librdkafka/tests/0018-cgrp_term.c +8 -3
  151. package/deps/librdkafka/tests/0021-rkt_destroy.c +1 -0
  152. package/deps/librdkafka/tests/0022-consume_batch.c +4 -1
  153. package/deps/librdkafka/tests/0026-consume_pause.c +12 -14
  154. package/deps/librdkafka/tests/0028-long_topicnames.c +1 -1
  155. package/deps/librdkafka/tests/0029-assign_offset.c +6 -8
  156. package/deps/librdkafka/tests/0030-offset_commit.c +2 -2
  157. package/deps/librdkafka/tests/0033-regex_subscribe.c +33 -17
  158. package/deps/librdkafka/tests/0034-offset_reset.c +25 -4
  159. package/deps/librdkafka/tests/0036-partial_fetch.c +1 -0
  160. package/deps/librdkafka/tests/0038-performance.c +1 -0
  161. package/deps/librdkafka/tests/0040-io_event.c +11 -5
  162. package/deps/librdkafka/tests/0041-fetch_max_bytes.c +1 -0
  163. package/deps/librdkafka/tests/0044-partition_cnt.c +3 -2
  164. package/deps/librdkafka/tests/0045-subscribe_update.c +284 -20
  165. package/deps/librdkafka/tests/0047-partial_buf_tmout.c +1 -0
  166. package/deps/librdkafka/tests/0048-partitioner.c +1 -1
  167. package/deps/librdkafka/tests/0050-subscribe_adds.c +1 -0
  168. package/deps/librdkafka/tests/0051-assign_adds.c +1 -0
  169. package/deps/librdkafka/tests/0052-msg_timestamps.c +22 -4
  170. package/deps/librdkafka/tests/0053-stats_cb.cpp +12 -20
  171. package/deps/librdkafka/tests/0055-producer_latency.c +176 -3
  172. package/deps/librdkafka/tests/0056-balanced_group_mt.c +6 -2
  173. package/deps/librdkafka/tests/0058-log.cpp +3 -3
  174. package/deps/librdkafka/tests/0059-bsearch.cpp +8 -4
  175. package/deps/librdkafka/tests/0061-consumer_lag.cpp +25 -5
  176. package/deps/librdkafka/tests/0067-empty_topic.cpp +3 -0
  177. package/deps/librdkafka/tests/0068-produce_timeout.c +21 -23
  178. package/deps/librdkafka/tests/0069-consumer_add_parts.c +3 -7
  179. package/deps/librdkafka/tests/0075-retry.c +38 -1
  180. package/deps/librdkafka/tests/0076-produce_retry.c +2 -0
  181. package/deps/librdkafka/tests/0077-compaction.c +8 -2
  182. package/deps/librdkafka/tests/0080-admin_ut.c +34 -4
  183. package/deps/librdkafka/tests/0081-admin.c +455 -155
  184. package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +4 -0
  185. package/deps/librdkafka/tests/0083-cb_event.c +8 -3
  186. package/deps/librdkafka/tests/0084-destroy_flags.c +14 -18
  187. package/deps/librdkafka/tests/0085-headers.cpp +4 -0
  188. package/deps/librdkafka/tests/0086-purge.c +40 -7
  189. package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +1 -1
  190. package/deps/librdkafka/tests/0089-max_poll_interval.c +12 -7
  191. package/deps/librdkafka/tests/0090-idempotence.c +1 -2
  192. package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +5 -7
  193. package/deps/librdkafka/tests/0092-mixed_msgver.c +6 -0
  194. package/deps/librdkafka/tests/0093-holb.c +8 -5
  195. package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +1 -0
  196. package/deps/librdkafka/tests/0097-ssl_verify.cpp +262 -70
  197. package/deps/librdkafka/tests/0098-consumer-txn.cpp +16 -16
  198. package/deps/librdkafka/tests/0099-commit_metadata.c +1 -1
  199. package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +1 -1
  200. package/deps/librdkafka/tests/0102-static_group_rebalance.c +317 -16
  201. package/deps/librdkafka/tests/0103-transactions.c +7 -7
  202. package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +1 -0
  203. package/deps/librdkafka/tests/0105-transactions_mock.c +18 -11
  204. package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +35 -14
  205. package/deps/librdkafka/tests/0107-topic_recreate.c +2 -2
  206. package/deps/librdkafka/tests/0109-auto_create_topics.cpp +86 -26
  207. package/deps/librdkafka/tests/0110-batch_size.cpp +1 -2
  208. package/deps/librdkafka/tests/0112-assign_unknown_part.c +3 -14
  209. package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +248 -104
  210. package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +3 -3
  211. package/deps/librdkafka/tests/0115-producer_auth.cpp +4 -1
  212. package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +7 -5
  213. package/deps/librdkafka/tests/0117-mock_errors.c +15 -5
  214. package/deps/librdkafka/tests/0118-commit_rebalance.c +41 -8
  215. package/deps/librdkafka/tests/0119-consumer_auth.cpp +20 -1
  216. package/deps/librdkafka/tests/0120-asymmetric_subscription.c +8 -3
  217. package/deps/librdkafka/tests/0125-immediate_flush.c +1 -1
  218. package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +323 -8
  219. package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +1 -0
  220. package/deps/librdkafka/tests/0132-strategy_ordering.c +12 -4
  221. package/deps/librdkafka/tests/0133-ssl_keys.c +28 -6
  222. package/deps/librdkafka/tests/0137-barrier_batch_consume.c +24 -14
  223. package/deps/librdkafka/tests/0139-offset_validation_mock.c +510 -2
  224. package/deps/librdkafka/tests/0140-commit_metadata.cpp +1 -1
  225. package/deps/librdkafka/tests/0142-reauthentication.c +37 -17
  226. package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +39 -40
  227. package/deps/librdkafka/tests/0146-metadata_mock.c +76 -15
  228. package/deps/librdkafka/tests/0147-consumer_group_consumer_mock.c +952 -0
  229. package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +563 -0
  230. package/deps/librdkafka/tests/0149-broker-same-host-port.c +140 -0
  231. package/deps/librdkafka/tests/0150-telemetry_mock.c +9 -6
  232. package/deps/librdkafka/tests/0151-purge-brokers.c +566 -0
  233. package/deps/librdkafka/tests/0152-rebootstrap.c +59 -0
  234. package/deps/librdkafka/tests/0153-memberid.c +128 -0
  235. package/deps/librdkafka/tests/CMakeLists.txt +6 -0
  236. package/deps/librdkafka/tests/LibrdkafkaTestApp.py +34 -9
  237. package/deps/librdkafka/tests/autotest.sh +0 -0
  238. package/deps/librdkafka/tests/broker_version_tests.py +0 -0
  239. package/deps/librdkafka/tests/buildbox.sh +0 -0
  240. package/deps/librdkafka/tests/cleanup-checker-tests.sh +0 -0
  241. package/deps/librdkafka/tests/cluster_testing.py +0 -0
  242. package/deps/librdkafka/tests/delete-test-topics.sh +0 -0
  243. package/deps/librdkafka/tests/fixtures/oauthbearer/jwt_assertion_template.json +10 -0
  244. package/deps/librdkafka/tests/fixtures/ssl/client.keystore.intermediate.p12 +0 -0
  245. package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
  246. package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.intermediate.pem +72 -0
  247. package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +42 -101
  248. package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
  249. package/deps/librdkafka/tests/fixtures/ssl/client2.key +41 -29
  250. package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +112 -37
  251. package/deps/librdkafka/tests/gen-ssl-certs.sh +0 -0
  252. package/deps/librdkafka/tests/interactive_broker_version.py +0 -0
  253. package/deps/librdkafka/tests/java/Makefile +2 -1
  254. package/deps/librdkafka/tests/java/run-class.sh +0 -0
  255. package/deps/librdkafka/tests/lz4_manual_test.sh +0 -0
  256. package/deps/librdkafka/tests/multi-broker-version-test.sh +0 -0
  257. package/deps/librdkafka/tests/parse-refcnt.sh +0 -0
  258. package/deps/librdkafka/tests/performance_plot.py +0 -0
  259. package/deps/librdkafka/tests/requirements.txt +1 -1
  260. package/deps/librdkafka/tests/run-all-tests.sh +79 -0
  261. package/deps/librdkafka/tests/run-consumer-tests.sh +0 -0
  262. package/deps/librdkafka/tests/run-producer-tests.sh +0 -0
  263. package/deps/librdkafka/tests/run-test-batches.py +157 -0
  264. package/deps/librdkafka/tests/run-test.sh +0 -0
  265. package/deps/librdkafka/tests/sasl_test.py +0 -0
  266. package/deps/librdkafka/tests/test.c +478 -18
  267. package/deps/librdkafka/tests/test.h +62 -13
  268. package/deps/librdkafka/tests/testcpp.cpp +6 -1
  269. package/deps/librdkafka/tests/testcpp.h +30 -2
  270. package/deps/librdkafka/tests/testshared.h +16 -2
  271. package/deps/librdkafka/tests/tools/stats/graph.py +0 -0
  272. package/deps/librdkafka/tests/tools/stats/to_csv.py +1 -1
  273. package/deps/librdkafka/tests/trivup/trivup-0.14.0.tar.gz +0 -0
  274. package/deps/librdkafka/tests/until-fail.sh +0 -0
  275. package/deps/librdkafka/tests/xxxx-metadata.cpp +1 -1
  276. package/deps/librdkafka/vcpkg.json +1 -1
  277. package/deps/librdkafka/win32/setup-msys2.ps1 +24 -8
  278. package/deps/librdkafka/win32/setup-vcpkg.ps1 +28 -6
  279. package/deps/librdkafka/win32/tests/tests.vcxproj +6 -0
  280. package/deps/librdkafka/win32/wingetopt.h +5 -4
  281. package/errors.d.ts +27 -1
  282. package/lib/error.js +29 -3
  283. package/make_docs.sh +0 -0
  284. package/package.json +10 -11
  285. package/run_docker.sh +0 -0
  286. package/src/callbacks.cc +6 -9
  287. package/src/callbacks.h +1 -5
  288. package/test/kafka-consumer-worker.js +10 -7
  289. package/test/kafka-consumer.spec.js +32 -21
  290. package/deps/librdkafka/.semaphore/project.yml +0 -43
  291. package/deps/librdkafka/.semaphore/project_public.yml +0 -20
  292. package/deps/librdkafka/win32/install-openssl.ps1 +0 -33
@@ -1,35 +1,99 @@
1
1
  #!/bin/sh
2
2
  set -e
3
3
  CA_PASSWORD="${CA_PASSWORD:-use_strong_password_ca}"
4
+ CA_INTERMEDIATE_PASSWORD="${CA_INTERMEDIATE_PASSWORD:-use_strong_password_intermediate_ca}"
4
5
  KEYSTORE_PASSWORD="${KEYSTORE_PASSWORD:-use_strong_password_keystore}"
5
6
  TRUSTSTORE_PASSWORD="${TRUSTSTORE_PASSWORD:-use_strong_password_truststore}"
6
7
  OUTPUT_FOLDER=${OUTPUT_FOLDER:-$( dirname "$0" )}
7
8
  CNS=${@:-client}
8
9
 
9
10
  cd ${OUTPUT_FOLDER}
10
- CA_ROOT_KEY=caroot.key
11
- CA_ROOT_CRT=caroot.crt
11
+ CA_ROOT_KEY=${CA_ROOT_KEY:-caroot.key}
12
+ CA_ROOT_CRT=${CA_ROOT_CRT:-caroot.crt}
13
+ CA_INTERMEDIATE_KEY=intermediate.key
14
+ CA_INTERMEDIATE_CSR=intermediate.csr
15
+ CA_INTERMEDIATE_CRT=intermediate.crt
12
16
 
13
- echo "# Generate CA"
14
- openssl req -new -x509 -keyout $CA_ROOT_KEY \
15
- -out $CA_ROOT_CRT -days 3650 -subj \
16
- '/CN=caroot/OU=/O=/L=/ST=/C=' -passin "pass:${CA_PASSWORD}" \
17
- -passout "pass:${CA_PASSWORD}"
17
+ generate_ca_extfile() {
18
+ echo "# $1: Generate extfile"
19
+ cat << EOF > extfile
20
+ [req]
21
+ distinguished_name=dn
22
+ [ dn ]
23
+ CN=$1
24
+ [ ext ]
25
+ basicConstraints=CA:TRUE,pathlen:0
26
+ subjectKeyIdentifier = hash
27
+ authorityKeyIdentifier = keyid:always, issuer:always
28
+ keyUsage = critical, cRLSign, digitalSignature, keyCertSign
29
+ extendedKeyUsage = clientAuth
30
+ EOF
31
+ }
32
+
33
+ generate_client_certificate_extfile() {
34
+ local CN=$1
35
+ echo "# $CN: Generate extfile"
36
+ cat << EOF > extfile
37
+ [req]
38
+ distinguished_name = req_distinguished_name
39
+ x509_extensions = v3_req
40
+ prompt = no
41
+ [req_distinguished_name]
42
+ CN = $CN
43
+ [v3_req]
44
+ subjectAltName = @alt_names
45
+ [alt_names]
46
+ DNS.1 = $CN
47
+ DNS.2 = localhost
48
+ EOF
49
+ }
50
+
51
+ if [ ! -f $CA_ROOT_KEY -o ! -f $CA_ROOT_CRT ]; then
52
+ echo "# Generate CA"
53
+ generate_ca_extfile caroot
54
+ openssl req -new -x509 -config extfile -keyout $CA_ROOT_KEY \
55
+ -out $CA_ROOT_CRT -subj \
56
+ '/CN=caroot/OU=/O=/L=/ST=/C=' -passin "pass:${CA_PASSWORD}" \
57
+ -passout "pass:${CA_PASSWORD}"
58
+ fi
59
+
60
+ echo "# caintermediate: Generate CSR"
61
+ openssl req -new -keyout $CA_INTERMEDIATE_KEY \
62
+ -out $CA_INTERMEDIATE_CSR -subj \
63
+ '/CN=caintermediate/OU=/O=/L=/ST=/C=' \
64
+ -passin "pass:${CA_INTERMEDIATE_PASSWORD}" \
65
+ -passout "pass:${CA_INTERMEDIATE_PASSWORD}"
66
+
67
+ generate_ca_extfile caintermediate
68
+
69
+ echo "# caintermediate: Sign request"
70
+ openssl x509 -req -extfile extfile \
71
+ -passin "pass:${CA_PASSWORD}" \
72
+ -in "${CA_INTERMEDIATE_CSR}" \
73
+ -CA "${CA_ROOT_CRT}" \
74
+ -CAkey "${CA_ROOT_KEY}" \
75
+ -days 3650 \
76
+ -out "${CA_INTERMEDIATE_CRT}"
18
77
 
19
78
  for CN in $CNS; do
20
- KEYSTORE=$CN.keystore.p12
21
- TRUSTSTORE=$CN.truststore.p12
22
- SIGNED_CRT=$CN-ca-signed.crt
23
- CERTIFICATE=$CN.certificate.pem
24
- KEY=$CN.key
79
+ for INTERMEDIATE in true false; do
80
+ INTERMEDIATE_PREFIX=""
81
+ if [ $INTERMEDIATE = "true" ]; then
82
+ INTERMEDIATE_PREFIX=".intermediate"
83
+ fi
84
+
85
+ KEYSTORE=${CN}.keystore${INTERMEDIATE_PREFIX}.p12
86
+ TRUSTSTORE=${CN}.truststore${INTERMEDIATE_PREFIX}.p12
87
+ CSR=${CN}${INTERMEDIATE_PREFIX}.csr
88
+ SIGNED_CRT=${CN}-ca-signed${INTERMEDIATE_PREFIX}.crt
89
+ CERTIFICATE=${CN}.certificate${INTERMEDIATE_PREFIX}.pem
90
+ KEY=${CN}${INTERMEDIATE_PREFIX}.key
25
91
  # Get specific password for this CN
26
92
  CN_KEYSTORE_PASSWORD="$(eval echo \$${CN}_KEYSTORE_PASSWORD)"
27
93
  if [ -z "$CN_KEYSTORE_PASSWORD" ]; then
28
94
  CN_KEYSTORE_PASSWORD=${KEYSTORE_PASSWORD}_$CN
29
95
  fi
30
96
 
31
- echo ${CN_KEYSTORE_PASSWORD}
32
-
33
97
  echo "# $CN: Generate Keystore"
34
98
  keytool -genkey -noprompt \
35
99
  -alias $CN \
@@ -47,47 +111,58 @@ for CN in $CNS; do
47
111
 
48
112
  echo "# $CN: Generate CSR"
49
113
  keytool -keystore $KEYSTORE -alias $CN \
50
- -certreq -file $CN.csr -storepass "${CN_KEYSTORE_PASSWORD}" \
114
+ -certreq -file $CSR -storepass "${CN_KEYSTORE_PASSWORD}" \
51
115
  -keypass "${CN_KEYSTORE_PASSWORD}" \
52
116
  -ext "SAN=dns:$CN,dns:localhost"
53
117
 
54
- echo "# $CN: Generate extfile"
55
- cat << EOF > extfile
56
- [req]
57
- distinguished_name = req_distinguished_name
58
- x509_extensions = v3_req
59
- prompt = no
60
- [req_distinguished_name]
61
- CN = $CN
62
- [v3_req]
63
- subjectAltName = @alt_names
64
- [alt_names]
65
- DNS.1 = $CN
66
- DNS.2 = localhost
67
- EOF
68
-
69
- echo "# $CN: Sign the certificate with the CA"
70
- openssl x509 -req -CA $CA_ROOT_CRT -CAkey $CA_ROOT_KEY \
71
- -in $CN.csr \
72
- -out $CN-ca-signed.crt -days 9999 \
73
- -CAcreateserial -passin "pass:${CA_PASSWORD}" \
74
- -extensions v3_req -extfile extfile
118
+ generate_client_certificate_extfile $CN
75
119
 
76
120
  echo "# $CN: Import root certificate"
77
121
  keytool -noprompt -keystore $KEYSTORE \
78
122
  -alias caroot -import -file $CA_ROOT_CRT -storepass "${CN_KEYSTORE_PASSWORD}"
79
123
 
124
+ if [ $INTERMEDIATE = "true" ]; then
125
+ echo "# $CN: Sign the certificate with the intermediate CA"
126
+ openssl x509 -req -CA $CA_INTERMEDIATE_CRT -CAkey $CA_INTERMEDIATE_KEY \
127
+ -in $CSR \
128
+ -out $SIGNED_CRT -days 9999 \
129
+ -CAcreateserial -passin "pass:${CA_INTERMEDIATE_PASSWORD}" \
130
+ -extensions v3_req -extfile extfile
131
+
132
+ echo "# $CN: Import intermediate CA certificate"
133
+ keytool -noprompt -keystore $KEYSTORE \
134
+ -alias caintermediate -import -file $CA_INTERMEDIATE_CRT \
135
+ -storepass "${CN_KEYSTORE_PASSWORD}"
136
+ else
137
+ echo "# $CN: Sign the certificate with the CA"
138
+ openssl x509 -req -CA $CA_ROOT_CRT -CAkey $CA_ROOT_KEY \
139
+ -in $CSR \
140
+ -out $SIGNED_CRT -days 9999 \
141
+ -CAcreateserial -passin "pass:${CA_PASSWORD}" \
142
+ -extensions v3_req -extfile extfile
143
+ fi
144
+
80
145
  echo "# $CN: Import signed certificate"
81
146
  keytool -noprompt -keystore $KEYSTORE -alias $CN \
82
147
  -import -file $SIGNED_CRT -storepass "${CN_KEYSTORE_PASSWORD}" \
83
148
  -ext "SAN=dns:$CN,dns:localhost"
84
149
 
150
+ # Delete imported certificates as they were only used to import the
151
+ # signed certificate.
152
+ keytool -delete -alias caroot -keystore $KEYSTORE \
153
+ -storepass "${CN_KEYSTORE_PASSWORD}"
154
+ if [ $INTERMEDIATE = "true" ]; then
155
+ keytool -delete -alias caintermediate -keystore $KEYSTORE \
156
+ -storepass "${CN_KEYSTORE_PASSWORD}"
157
+ fi
158
+
85
159
  echo "# $CN: Export PEM certificate"
86
160
  openssl pkcs12 -in "$KEYSTORE" -out "$CERTIFICATE" \
87
- -nodes -passin "pass:${CN_KEYSTORE_PASSWORD}"
161
+ -nokeys -passin "pass:${CN_KEYSTORE_PASSWORD}"
88
162
 
89
163
  echo "# $CN: Export PEM key"
90
164
  openssl pkcs12 -in "$KEYSTORE" -out "$KEY" \
91
165
  -nocerts -passin "pass:${CN_KEYSTORE_PASSWORD}" \
92
166
  -passout "pass:${CN_KEYSTORE_PASSWORD}"
93
167
  done
168
+ done
File without changes
@@ -6,7 +6,8 @@ CLASSES=Murmur2Cli.class TransactionProducerCli.class IncrementalRebalanceCli.cl
6
6
  all: $(CLASSES)
7
7
 
8
8
  %.class: %.java
9
- javac -classpath $(KAFKA_JARS)/kafka-clients-*.jar $^
9
+ CLIENTS_JAR=$$(ls $(KAFKA_JARS)/kafka-clients-*.jar); \
10
+ javac -classpath $$CLIENTS_JAR:$(KAFKA_PATH)/clients/build/classes/java/main $^
10
11
 
11
12
  clean:
12
13
  rm -f *.class
File without changes
File without changes
File without changes
File without changes
@@ -1,2 +1,2 @@
1
- trivup/trivup-0.12.4.tar.gz
1
+ trivup/trivup-0.14.0.tar.gz
2
2
  jsoncomment
@@ -0,0 +1,79 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+
5
+ # Helper script to run all tests through the CI
6
+ # Converts the environment variables to the test arguments
7
+ # with the following defaults:
8
+ #
9
+ # - plaintext connection
10
+ # - no authentication
11
+ # - KRaft enabled
12
+ # - all tests
13
+ # - default parallelism
14
+ # - no assertions
15
+ # - following AK and CP versions
16
+
17
+ export TEST_KAFKA_GIT_REF=${TEST_KAFKA_GIT_REF:-4.0.0}
18
+ export TEST_CP_VERSION=${TEST_CP_VERSION:-8.0.0}
19
+
20
+ TEST_SSL_ARG=""
21
+ TEST_SSL_INTERMEDIATE_CA_ARG=""
22
+ TEST_SASL_ARG=""
23
+ TEST_KRAFT_ARG="--kraft"
24
+ TEST_LOCAL_ARG=""
25
+ TEST_CONF_ARG=""
26
+ TEST_QUICK_ARG=""
27
+ TEST_ASSERT_ARG=""
28
+ TEST_PARALLEL_ARG=""
29
+ if [ "$TEST_SSL" = "True" ]; then
30
+ TEST_SSL_ARG="--ssl"
31
+ fi
32
+ if [ "$TEST_SSL" = "True" -a "$TEST_SSL_INTERMEDIATE_CA" = "True" ]; then
33
+ TEST_SSL_ARG="$TEST_SSL_ARG --ssl-intermediate-ca"
34
+ fi
35
+ if [ ! -z $TEST_SASL ]; then
36
+ TEST_SASL_ARG="--sasl $TEST_SASL"
37
+ fi
38
+ if [ "$TEST_KRAFT" = "False" ]; then
39
+ TEST_KRAFT_ARG=""
40
+ fi
41
+ if [ "$TEST_LOCAL" = "Local" ]; then
42
+ TEST_LOCAL_ARG="-l"
43
+ fi
44
+ if [ "$TEST_LOCAL" = "Non-local" ]; then
45
+ TEST_LOCAL_ARG="-L"
46
+ fi
47
+ if [ "$TEST_QUICK" = "True" ]; then
48
+ TEST_QUICK_ARG="-Q"
49
+ fi
50
+ if [ "$TEST_ASSERT" = "True" ]; then
51
+ TEST_ASSERT_ARG="-a"
52
+ fi
53
+ if [ ! -z $TEST_PARALLEL ]; then
54
+ TEST_PARALLEL_ARG="-p$TEST_PARALLEL"
55
+ fi
56
+ if [ ! -z $TEST_CONF ]; then
57
+ TEST_CONF_ARG="--conf '$TEST_CONF'"
58
+ fi
59
+ if [ ! -z $TEST_ENV_VARIABLES ]; then
60
+ IFS=',' read -ra TEST_ENV_VARIABLES_ARRAY <<< "$TEST_ENV_VARIABLES"
61
+ for TEST_ENV_VARIABLE in "${TEST_ENV_VARIABLES_ARRAY[@]}"; do
62
+ export "$TEST_ENV_VARIABLE"
63
+ done
64
+ unset TEST_ENV_VARIABLES_ARRAY
65
+ fi
66
+
67
+ TEST_ARGS="$TEST_PARALLEL_ARG $TEST_ASSERT_ARG $TEST_QUICK_ARG $TEST_LOCAL_ARG $TEST_RUNNER_PARAMETERS $TEST_MODE"
68
+ TEST_CONFIGURATION="$TEST_SSL_ARG $TEST_SASL_ARG $TEST_KRAFT_ARG $TEST_CONF_ARG $TEST_TRIVUP_PARAMETERS"
69
+
70
+ echo "Running tests with:"
71
+ echo "kafka branch: $TEST_KAFKA_GIT_REF"
72
+ echo "kafka version: $TEST_KAFKA_VERSION"
73
+ echo "CP version: $TEST_CP_VERSION"
74
+ echo "configuration: $TEST_CONFIGURATION"
75
+ echo "arguments: $TEST_ARGS"
76
+ (cd tests && python3 -m trivup.clusters.KafkaCluster $TEST_CONFIGURATION \
77
+ --version "$TEST_KAFKA_GIT_REF" \
78
+ --cpversion "$TEST_CP_VERSION" \
79
+ --cmd "python run-test-batches.py $TEST_ARGS")
File without changes
File without changes
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env python3
2
+ import os
3
+ import sys
4
+ import re
5
+ import subprocess
6
+ import signal
7
+ curr_dir = os.path.dirname(os.path.realpath(__file__))
8
+ os.chdir(curr_dir)
9
+
10
+ # This test script accepts the same arguments as run-test.sh, and
11
+ # the same environment variables as well. Additionally, it reads the following
12
+ # environment variables and can run tests in batches and for a certain
13
+ # number of iterations, especially useful when running tests with valgrind or
14
+ # to debug infrequent errors.
15
+ #
16
+ # TESTS: A comma-separated list of test numbers or test names. In case
17
+ # they're numeric there's no need to pad them with zeros. There can be
18
+ # ranges of tests, open ranges and they're sorted and deduplicated.
19
+ # If not set, it defaults to all tests in the current directory.
20
+ # Example: TESTS=1,2,3-5,2-,11
21
+ #
22
+ # TESTS_BATCH_SIZE: The number of tests to run in each batch. If not set, it
23
+ # defaults to the number of tests in TESTS.
24
+ #
25
+ # TEST_ITERATIONS: The number of iterations to run the tests. If not set, it
26
+ # defaults to 1. It continues iterating only if there are no
27
+ # errors. When "-a" is set it stops after the first error
28
+ # in any batch, when it isn't set it stops after the
29
+ # first error in any iteration.
30
+
31
+ # Max number of tests
32
+ max_automatic_tests = 1000
33
+ # Higher test number
34
+ max_test = 0
35
+ tests = set()
36
+ for f in os.listdir(curr_dir):
37
+ m = re.match(r'^(\d{4}).*\.c$', f)
38
+ if m:
39
+ test_num = int(m.group(1))
40
+ if test_num < max_automatic_tests:
41
+ tests.add(test_num)
42
+ max_test = max(tests)
43
+ # Tests batch size, defaults to len(TESTS).
44
+ batch_size = os.environ.get('TESTS_BATCH_SIZE', None)
45
+ if batch_size and batch_size.isnumeric():
46
+ batch_size = int(batch_size)
47
+
48
+ # Number of iterations for each batch, it continues iterating only
49
+ # if there are no errors, even when "-a" isn't set
50
+ test_iterations = os.environ.get('TEST_ITERATIONS', "1")
51
+ test_iterations = test_iterations.isnumeric() and int(test_iterations) or 1
52
+
53
+
54
+ def valid_test_number(test_number):
55
+ return test_number >= 0 and test_number <= max_test
56
+
57
+
58
+ def test_number_to_str(test_number):
59
+ return str(test_number).rjust(4, '0')
60
+
61
+
62
+ def test_numbers_to_str(test_numbers):
63
+ return list(map(test_number_to_str, test_numbers))
64
+
65
+
66
+ def extract_tests(tests):
67
+ test_ranges = [test_range for test_range in tests.strip().split(',')
68
+ if len(test_range.strip()) > 0]
69
+ all_tests = []
70
+ for test_range in test_ranges:
71
+
72
+ if '-' in test_range:
73
+ # 13-15 or 13- or -13
74
+ start, end = test_range.split('-')
75
+ start, end = start.strip(), end.strip()
76
+
77
+ if start.isnumeric() and end.isnumeric():
78
+ start, end = int(start), int(end)
79
+ if valid_test_number(start) and valid_test_number(
80
+ end) and start <= end:
81
+ all_tests.extend(
82
+ test_numbers_to_str(range(start, end + 1)))
83
+
84
+ elif start.isnumeric() and end == '':
85
+ start = int(start)
86
+ if valid_test_number(start):
87
+ all_tests.extend(
88
+ test_numbers_to_str(range(start, max_test + 1)))
89
+ elif start == '' and end.isnumeric():
90
+ end = int(end)
91
+ if valid_test_number(end):
92
+ all_tests.extend(
93
+ test_numbers_to_str(range(0, end + 1)))
94
+
95
+ elif test_range.isnumeric():
96
+ # 13 or 0013
97
+ all_tests.append(test_number_to_str(test_range))
98
+ else:
99
+ # A specific test like 0045_subscribe_update_racks_mock
100
+ all_tests.append(test_range)
101
+
102
+ return list(sorted(set(all_tests)))
103
+
104
+
105
+ if 'TESTS' in os.environ:
106
+ TESTS = extract_tests(os.environ['TESTS'])
107
+ else:
108
+ TESTS = test_numbers_to_str(range(0, max_test + 1))
109
+
110
+ if batch_size is None:
111
+ batch_size = len(TESTS)
112
+
113
+ args = sys.argv[1:]
114
+
115
+ exit_on_first_error = '-a' in args
116
+
117
+
118
+ def run_tests():
119
+ first_error = None
120
+ for i in range(test_iterations):
121
+ for j in range(0, len(TESTS), batch_size):
122
+ interrupted = False
123
+ TESTS_BATCH = ','.join(TESTS[j:j + batch_size])
124
+ print(f"Running tests: {TESTS_BATCH}, iteration: {i + 1}",
125
+ file=sys.stderr)
126
+ p = subprocess.Popen(['./run-test.sh', '-D'] + args,
127
+ env={**os.environ, 'TESTS': TESTS_BATCH},
128
+ start_new_session=True)
129
+ try:
130
+ p.communicate()
131
+ if p.returncode != 0 and first_error is None:
132
+ first_error = p.returncode
133
+ if exit_on_first_error:
134
+ return first_error
135
+ except BaseException:
136
+ first_error = 1
137
+ interrupted = True
138
+ return first_error
139
+ finally:
140
+ if interrupted:
141
+ print('Terminating process group...', file=sys.stderr)
142
+ os.killpg(p.pid, signal.SIGTERM)
143
+ try:
144
+ p.wait(10)
145
+ except subprocess.TimeoutExpired:
146
+ os.killpg(p.pid, signal.SIGKILL)
147
+ p.wait(10)
148
+ if first_error is not None:
149
+ # Stop running more iterations if there was an error
150
+ return first_error
151
+ return first_error
152
+
153
+
154
+ first_error = run_tests()
155
+ print('End of run-test-batches', file=sys.stderr)
156
+ if first_error:
157
+ sys.exit(first_error)
File without changes
File without changes