@point3/node-rdkafka 3.6.0-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.
- package/LICENSE.txt +20 -0
- package/README.md +636 -0
- package/binding.gyp +154 -0
- package/deps/librdkafka/.clang-format +136 -0
- package/deps/librdkafka/.clang-format-cpp +103 -0
- package/deps/librdkafka/.dir-locals.el +10 -0
- package/deps/librdkafka/.formatignore +33 -0
- package/deps/librdkafka/.gdbmacros +19 -0
- package/deps/librdkafka/.github/CODEOWNERS +1 -0
- package/deps/librdkafka/.github/ISSUE_TEMPLATE +34 -0
- package/deps/librdkafka/.semaphore/run-all-tests.yml +77 -0
- package/deps/librdkafka/.semaphore/semaphore-integration.yml +250 -0
- package/deps/librdkafka/.semaphore/semaphore.yml +378 -0
- package/deps/librdkafka/.semaphore/verify-linux-packages.yml +41 -0
- package/deps/librdkafka/CHANGELOG.md +2208 -0
- package/deps/librdkafka/CMakeLists.txt +291 -0
- package/deps/librdkafka/CODE_OF_CONDUCT.md +46 -0
- package/deps/librdkafka/CONFIGURATION.md +209 -0
- package/deps/librdkafka/CONTRIBUTING.md +431 -0
- package/deps/librdkafka/Doxyfile +2375 -0
- package/deps/librdkafka/INTRODUCTION.md +2481 -0
- package/deps/librdkafka/LICENSE +26 -0
- package/deps/librdkafka/LICENSE.cjson +22 -0
- package/deps/librdkafka/LICENSE.crc32c +28 -0
- package/deps/librdkafka/LICENSE.fnv1a +18 -0
- package/deps/librdkafka/LICENSE.hdrhistogram +27 -0
- package/deps/librdkafka/LICENSE.lz4 +26 -0
- package/deps/librdkafka/LICENSE.murmur2 +25 -0
- package/deps/librdkafka/LICENSE.nanopb +22 -0
- package/deps/librdkafka/LICENSE.opentelemetry +203 -0
- package/deps/librdkafka/LICENSE.pycrc +23 -0
- package/deps/librdkafka/LICENSE.queue +31 -0
- package/deps/librdkafka/LICENSE.regexp +5 -0
- package/deps/librdkafka/LICENSE.snappy +36 -0
- package/deps/librdkafka/LICENSE.tinycthread +26 -0
- package/deps/librdkafka/LICENSE.wingetopt +49 -0
- package/deps/librdkafka/LICENSES.txt +625 -0
- package/deps/librdkafka/Makefile +125 -0
- package/deps/librdkafka/README.md +199 -0
- package/deps/librdkafka/README.win32 +26 -0
- package/deps/librdkafka/STATISTICS.md +624 -0
- package/deps/librdkafka/configure +214 -0
- package/deps/librdkafka/configure.self +331 -0
- package/deps/librdkafka/debian/changelog +111 -0
- package/deps/librdkafka/debian/compat +1 -0
- package/deps/librdkafka/debian/control +71 -0
- package/deps/librdkafka/debian/copyright +99 -0
- package/deps/librdkafka/debian/gbp.conf +9 -0
- package/deps/librdkafka/debian/librdkafka++1.install +1 -0
- package/deps/librdkafka/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/debian/librdkafka-dev.install +9 -0
- package/deps/librdkafka/debian/librdkafka1.docs +5 -0
- package/deps/librdkafka/debian/librdkafka1.install +1 -0
- package/deps/librdkafka/debian/librdkafka1.symbols +135 -0
- package/deps/librdkafka/debian/rules +19 -0
- package/deps/librdkafka/debian/source/format +1 -0
- package/deps/librdkafka/debian/watch +2 -0
- package/deps/librdkafka/dev-conf.sh +123 -0
- package/deps/librdkafka/examples/CMakeLists.txt +79 -0
- package/deps/librdkafka/examples/Makefile +167 -0
- package/deps/librdkafka/examples/README.md +42 -0
- package/deps/librdkafka/examples/alter_consumer_group_offsets.c +338 -0
- package/deps/librdkafka/examples/consumer.c +271 -0
- package/deps/librdkafka/examples/delete_records.c +233 -0
- package/deps/librdkafka/examples/describe_cluster.c +322 -0
- package/deps/librdkafka/examples/describe_consumer_groups.c +455 -0
- package/deps/librdkafka/examples/describe_topics.c +427 -0
- package/deps/librdkafka/examples/elect_leaders.c +317 -0
- package/deps/librdkafka/examples/globals.json +11 -0
- package/deps/librdkafka/examples/idempotent_producer.c +344 -0
- package/deps/librdkafka/examples/incremental_alter_configs.c +347 -0
- package/deps/librdkafka/examples/kafkatest_verifiable_client.cpp +945 -0
- package/deps/librdkafka/examples/list_consumer_group_offsets.c +359 -0
- package/deps/librdkafka/examples/list_consumer_groups.c +365 -0
- package/deps/librdkafka/examples/list_offsets.c +327 -0
- package/deps/librdkafka/examples/misc.c +287 -0
- package/deps/librdkafka/examples/openssl_engine_example.cpp +248 -0
- package/deps/librdkafka/examples/producer.c +251 -0
- package/deps/librdkafka/examples/producer.cpp +228 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.c +617 -0
- package/deps/librdkafka/examples/rdkafka_complex_consumer_example.cpp +467 -0
- package/deps/librdkafka/examples/rdkafka_consume_batch.cpp +264 -0
- package/deps/librdkafka/examples/rdkafka_example.c +853 -0
- package/deps/librdkafka/examples/rdkafka_example.cpp +679 -0
- package/deps/librdkafka/examples/rdkafka_performance.c +1781 -0
- package/deps/librdkafka/examples/transactions-older-broker.c +668 -0
- package/deps/librdkafka/examples/transactions.c +665 -0
- package/deps/librdkafka/examples/user_scram.c +491 -0
- package/deps/librdkafka/examples/win_ssl_cert_store.cpp +396 -0
- package/deps/librdkafka/lds-gen.py +73 -0
- package/deps/librdkafka/mainpage.doxy +40 -0
- package/deps/librdkafka/mklove/Makefile.base +329 -0
- package/deps/librdkafka/mklove/modules/configure.atomics +144 -0
- package/deps/librdkafka/mklove/modules/configure.base +2484 -0
- package/deps/librdkafka/mklove/modules/configure.builtin +70 -0
- package/deps/librdkafka/mklove/modules/configure.cc +186 -0
- package/deps/librdkafka/mklove/modules/configure.cxx +8 -0
- package/deps/librdkafka/mklove/modules/configure.fileversion +65 -0
- package/deps/librdkafka/mklove/modules/configure.gitversion +29 -0
- package/deps/librdkafka/mklove/modules/configure.good_cflags +18 -0
- package/deps/librdkafka/mklove/modules/configure.host +132 -0
- package/deps/librdkafka/mklove/modules/configure.lib +49 -0
- package/deps/librdkafka/mklove/modules/configure.libcurl +99 -0
- package/deps/librdkafka/mklove/modules/configure.libsasl2 +36 -0
- package/deps/librdkafka/mklove/modules/configure.libssl +147 -0
- package/deps/librdkafka/mklove/modules/configure.libzstd +58 -0
- package/deps/librdkafka/mklove/modules/configure.parseversion +95 -0
- package/deps/librdkafka/mklove/modules/configure.pic +16 -0
- package/deps/librdkafka/mklove/modules/configure.socket +20 -0
- package/deps/librdkafka/mklove/modules/configure.zlib +61 -0
- package/deps/librdkafka/mklove/modules/patches/README.md +8 -0
- package/deps/librdkafka/mklove/modules/patches/libcurl.0000-no-runtime-linking-check.patch +11 -0
- package/deps/librdkafka/mklove/modules/patches/libssl.0000-osx-rand-include-fix-OpenSSL-PR16409.patch +56 -0
- package/deps/librdkafka/packaging/RELEASE.md +319 -0
- package/deps/librdkafka/packaging/alpine/build-alpine.sh +38 -0
- package/deps/librdkafka/packaging/archlinux/PKGBUILD +30 -0
- package/deps/librdkafka/packaging/cmake/Config.cmake.in +37 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindLZ4.cmake +38 -0
- package/deps/librdkafka/packaging/cmake/Modules/FindZSTD.cmake +27 -0
- package/deps/librdkafka/packaging/cmake/Modules/LICENSE.FindZstd +178 -0
- package/deps/librdkafka/packaging/cmake/README.md +38 -0
- package/deps/librdkafka/packaging/cmake/config.h.in +52 -0
- package/deps/librdkafka/packaging/cmake/parseversion.cmake +60 -0
- package/deps/librdkafka/packaging/cmake/rdkafka.pc.in +12 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/atomic_64_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/c11threads_test.c +14 -0
- package/deps/librdkafka/packaging/cmake/try_compile/crc32c_hw_test.c +27 -0
- package/deps/librdkafka/packaging/cmake/try_compile/dlopen_test.c +11 -0
- package/deps/librdkafka/packaging/cmake/try_compile/libsasl2_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_darwin_test.c +6 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_freebsd_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/pthread_setname_gnu_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rand_r_test.c +7 -0
- package/deps/librdkafka/packaging/cmake/try_compile/rdkafka_setup.cmake +122 -0
- package/deps/librdkafka/packaging/cmake/try_compile/regex_test.c +10 -0
- package/deps/librdkafka/packaging/cmake/try_compile/strndup_test.c +5 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_32_test.c +8 -0
- package/deps/librdkafka/packaging/cmake/try_compile/sync_64_test.c +8 -0
- package/deps/librdkafka/packaging/cp/README.md +16 -0
- package/deps/librdkafka/packaging/cp/check_features.c +72 -0
- package/deps/librdkafka/packaging/cp/verify-deb.sh +33 -0
- package/deps/librdkafka/packaging/cp/verify-packages.sh +69 -0
- package/deps/librdkafka/packaging/cp/verify-rpm.sh +32 -0
- package/deps/librdkafka/packaging/debian/changelog +66 -0
- package/deps/librdkafka/packaging/debian/compat +1 -0
- package/deps/librdkafka/packaging/debian/control +49 -0
- package/deps/librdkafka/packaging/debian/copyright +84 -0
- package/deps/librdkafka/packaging/debian/docs +5 -0
- package/deps/librdkafka/packaging/debian/gbp.conf +9 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.dirs +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.examples +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.install +6 -0
- package/deps/librdkafka/packaging/debian/librdkafka-dev.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka.dsc +16 -0
- package/deps/librdkafka/packaging/debian/librdkafka1-dbg.substvars +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.dirs +1 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.install +2 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postinst.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.postrm.debhelper +5 -0
- package/deps/librdkafka/packaging/debian/librdkafka1.symbols +64 -0
- package/deps/librdkafka/packaging/debian/rules +19 -0
- package/deps/librdkafka/packaging/debian/source/format +1 -0
- package/deps/librdkafka/packaging/debian/watch +2 -0
- package/deps/librdkafka/packaging/get_version.py +21 -0
- package/deps/librdkafka/packaging/homebrew/README.md +15 -0
- package/deps/librdkafka/packaging/homebrew/brew-update-pr.sh +31 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw-static.sh +52 -0
- package/deps/librdkafka/packaging/mingw-w64/configure-build-msys2-mingw.sh +21 -0
- package/deps/librdkafka/packaging/mingw-w64/export-variables.sh +13 -0
- package/deps/librdkafka/packaging/mingw-w64/run-tests.sh +6 -0
- package/deps/librdkafka/packaging/mingw-w64/semaphoreci-build.sh +38 -0
- package/deps/librdkafka/packaging/nuget/README.md +84 -0
- package/deps/librdkafka/packaging/nuget/artifact.py +177 -0
- package/deps/librdkafka/packaging/nuget/cleanup-s3.py +143 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-win32__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr120.zip +0 -0
- package/deps/librdkafka/packaging/nuget/common/p-common__plat-windows__arch-x64__bldtype-Release/msvcr140.zip +0 -0
- package/deps/librdkafka/packaging/nuget/nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/nugetpackage.py +278 -0
- package/deps/librdkafka/packaging/nuget/packaging.py +448 -0
- package/deps/librdkafka/packaging/nuget/push-to-nuget.sh +21 -0
- package/deps/librdkafka/packaging/nuget/release.py +167 -0
- package/deps/librdkafka/packaging/nuget/requirements.txt +3 -0
- package/deps/librdkafka/packaging/nuget/staticpackage.py +178 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.nuspec +21 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.props +18 -0
- package/deps/librdkafka/packaging/nuget/templates/librdkafka.redist.targets +19 -0
- package/deps/librdkafka/packaging/nuget/zfile/__init__.py +0 -0
- package/deps/librdkafka/packaging/nuget/zfile/zfile.py +98 -0
- package/deps/librdkafka/packaging/rpm/Makefile +92 -0
- package/deps/librdkafka/packaging/rpm/README.md +23 -0
- package/deps/librdkafka/packaging/rpm/el7-x86_64.cfg +40 -0
- package/deps/librdkafka/packaging/rpm/librdkafka.spec +118 -0
- package/deps/librdkafka/packaging/rpm/mock-on-docker.sh +96 -0
- package/deps/librdkafka/packaging/rpm/tests/Makefile +25 -0
- package/deps/librdkafka/packaging/rpm/tests/README.md +8 -0
- package/deps/librdkafka/packaging/rpm/tests/run-test.sh +42 -0
- package/deps/librdkafka/packaging/rpm/tests/test-on-docker.sh +56 -0
- package/deps/librdkafka/packaging/rpm/tests/test.c +77 -0
- package/deps/librdkafka/packaging/rpm/tests/test.cpp +34 -0
- package/deps/librdkafka/packaging/tools/Dockerfile +31 -0
- package/deps/librdkafka/packaging/tools/build-configurations-checks.sh +12 -0
- package/deps/librdkafka/packaging/tools/build-deb-package.sh +64 -0
- package/deps/librdkafka/packaging/tools/build-debian.sh +65 -0
- package/deps/librdkafka/packaging/tools/build-manylinux.sh +68 -0
- package/deps/librdkafka/packaging/tools/build-release-artifacts.sh +139 -0
- package/deps/librdkafka/packaging/tools/distro-build.sh +38 -0
- package/deps/librdkafka/packaging/tools/gh-release-checksums.py +39 -0
- package/deps/librdkafka/packaging/tools/rdutcoverage.sh +25 -0
- package/deps/librdkafka/packaging/tools/requirements.txt +2 -0
- package/deps/librdkafka/packaging/tools/run-in-docker.sh +28 -0
- package/deps/librdkafka/packaging/tools/run-integration-tests.sh +31 -0
- package/deps/librdkafka/packaging/tools/run-style-check.sh +4 -0
- package/deps/librdkafka/packaging/tools/style-format.sh +149 -0
- package/deps/librdkafka/packaging/tools/update_rpcs_max_versions.py +100 -0
- package/deps/librdkafka/service.yml +172 -0
- package/deps/librdkafka/src/CMakeLists.txt +374 -0
- package/deps/librdkafka/src/Makefile +103 -0
- package/deps/librdkafka/src/README.lz4.md +30 -0
- package/deps/librdkafka/src/cJSON.c +2834 -0
- package/deps/librdkafka/src/cJSON.h +398 -0
- package/deps/librdkafka/src/crc32c.c +430 -0
- package/deps/librdkafka/src/crc32c.h +38 -0
- package/deps/librdkafka/src/generate_proto.sh +66 -0
- package/deps/librdkafka/src/librdkafka_cgrp_synch.png +0 -0
- package/deps/librdkafka/src/lz4.c +2727 -0
- package/deps/librdkafka/src/lz4.h +842 -0
- package/deps/librdkafka/src/lz4frame.c +2078 -0
- package/deps/librdkafka/src/lz4frame.h +692 -0
- package/deps/librdkafka/src/lz4frame_static.h +47 -0
- package/deps/librdkafka/src/lz4hc.c +1631 -0
- package/deps/librdkafka/src/lz4hc.h +413 -0
- package/deps/librdkafka/src/nanopb/pb.h +917 -0
- package/deps/librdkafka/src/nanopb/pb_common.c +388 -0
- package/deps/librdkafka/src/nanopb/pb_common.h +49 -0
- package/deps/librdkafka/src/nanopb/pb_decode.c +1727 -0
- package/deps/librdkafka/src/nanopb/pb_decode.h +193 -0
- package/deps/librdkafka/src/nanopb/pb_encode.c +1000 -0
- package/deps/librdkafka/src/nanopb/pb_encode.h +185 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.c +32 -0
- package/deps/librdkafka/src/opentelemetry/common.pb.h +170 -0
- package/deps/librdkafka/src/opentelemetry/metrics.options +2 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.c +67 -0
- package/deps/librdkafka/src/opentelemetry/metrics.pb.h +966 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.c +12 -0
- package/deps/librdkafka/src/opentelemetry/resource.pb.h +58 -0
- package/deps/librdkafka/src/queue.h +850 -0
- package/deps/librdkafka/src/rd.h +584 -0
- package/deps/librdkafka/src/rdaddr.c +255 -0
- package/deps/librdkafka/src/rdaddr.h +202 -0
- package/deps/librdkafka/src/rdatomic.h +230 -0
- package/deps/librdkafka/src/rdavg.h +260 -0
- package/deps/librdkafka/src/rdavl.c +210 -0
- package/deps/librdkafka/src/rdavl.h +250 -0
- package/deps/librdkafka/src/rdbase64.c +200 -0
- package/deps/librdkafka/src/rdbase64.h +43 -0
- package/deps/librdkafka/src/rdbuf.c +1884 -0
- package/deps/librdkafka/src/rdbuf.h +375 -0
- package/deps/librdkafka/src/rdcrc32.c +114 -0
- package/deps/librdkafka/src/rdcrc32.h +170 -0
- package/deps/librdkafka/src/rddl.c +179 -0
- package/deps/librdkafka/src/rddl.h +43 -0
- package/deps/librdkafka/src/rdendian.h +175 -0
- package/deps/librdkafka/src/rdfloat.h +67 -0
- package/deps/librdkafka/src/rdfnv1a.c +113 -0
- package/deps/librdkafka/src/rdfnv1a.h +35 -0
- package/deps/librdkafka/src/rdgz.c +120 -0
- package/deps/librdkafka/src/rdgz.h +46 -0
- package/deps/librdkafka/src/rdhdrhistogram.c +721 -0
- package/deps/librdkafka/src/rdhdrhistogram.h +87 -0
- package/deps/librdkafka/src/rdhttp.c +830 -0
- package/deps/librdkafka/src/rdhttp.h +101 -0
- package/deps/librdkafka/src/rdinterval.h +177 -0
- package/deps/librdkafka/src/rdkafka.c +5505 -0
- package/deps/librdkafka/src/rdkafka.h +10686 -0
- package/deps/librdkafka/src/rdkafka_admin.c +9794 -0
- package/deps/librdkafka/src/rdkafka_admin.h +661 -0
- package/deps/librdkafka/src/rdkafka_assignment.c +1010 -0
- package/deps/librdkafka/src/rdkafka_assignment.h +73 -0
- package/deps/librdkafka/src/rdkafka_assignor.c +1786 -0
- package/deps/librdkafka/src/rdkafka_assignor.h +402 -0
- package/deps/librdkafka/src/rdkafka_aux.c +409 -0
- package/deps/librdkafka/src/rdkafka_aux.h +174 -0
- package/deps/librdkafka/src/rdkafka_background.c +221 -0
- package/deps/librdkafka/src/rdkafka_broker.c +6337 -0
- package/deps/librdkafka/src/rdkafka_broker.h +744 -0
- package/deps/librdkafka/src/rdkafka_buf.c +543 -0
- package/deps/librdkafka/src/rdkafka_buf.h +1525 -0
- package/deps/librdkafka/src/rdkafka_cert.c +576 -0
- package/deps/librdkafka/src/rdkafka_cert.h +62 -0
- package/deps/librdkafka/src/rdkafka_cgrp.c +7587 -0
- package/deps/librdkafka/src/rdkafka_cgrp.h +477 -0
- package/deps/librdkafka/src/rdkafka_conf.c +4880 -0
- package/deps/librdkafka/src/rdkafka_conf.h +732 -0
- package/deps/librdkafka/src/rdkafka_confval.h +97 -0
- package/deps/librdkafka/src/rdkafka_coord.c +623 -0
- package/deps/librdkafka/src/rdkafka_coord.h +132 -0
- package/deps/librdkafka/src/rdkafka_error.c +228 -0
- package/deps/librdkafka/src/rdkafka_error.h +80 -0
- package/deps/librdkafka/src/rdkafka_event.c +502 -0
- package/deps/librdkafka/src/rdkafka_event.h +126 -0
- package/deps/librdkafka/src/rdkafka_feature.c +898 -0
- package/deps/librdkafka/src/rdkafka_feature.h +104 -0
- package/deps/librdkafka/src/rdkafka_fetcher.c +1422 -0
- package/deps/librdkafka/src/rdkafka_fetcher.h +44 -0
- package/deps/librdkafka/src/rdkafka_header.c +220 -0
- package/deps/librdkafka/src/rdkafka_header.h +76 -0
- package/deps/librdkafka/src/rdkafka_idempotence.c +807 -0
- package/deps/librdkafka/src/rdkafka_idempotence.h +144 -0
- package/deps/librdkafka/src/rdkafka_int.h +1260 -0
- package/deps/librdkafka/src/rdkafka_interceptor.c +819 -0
- package/deps/librdkafka/src/rdkafka_interceptor.h +104 -0
- package/deps/librdkafka/src/rdkafka_lz4.c +450 -0
- package/deps/librdkafka/src/rdkafka_lz4.h +49 -0
- package/deps/librdkafka/src/rdkafka_metadata.c +2209 -0
- package/deps/librdkafka/src/rdkafka_metadata.h +345 -0
- package/deps/librdkafka/src/rdkafka_metadata_cache.c +1183 -0
- package/deps/librdkafka/src/rdkafka_mock.c +3661 -0
- package/deps/librdkafka/src/rdkafka_mock.h +610 -0
- package/deps/librdkafka/src/rdkafka_mock_cgrp.c +1876 -0
- package/deps/librdkafka/src/rdkafka_mock_handlers.c +3113 -0
- package/deps/librdkafka/src/rdkafka_mock_int.h +710 -0
- package/deps/librdkafka/src/rdkafka_msg.c +2589 -0
- package/deps/librdkafka/src/rdkafka_msg.h +614 -0
- package/deps/librdkafka/src/rdkafka_msgbatch.h +62 -0
- package/deps/librdkafka/src/rdkafka_msgset.h +98 -0
- package/deps/librdkafka/src/rdkafka_msgset_reader.c +1806 -0
- package/deps/librdkafka/src/rdkafka_msgset_writer.c +1474 -0
- package/deps/librdkafka/src/rdkafka_offset.c +1565 -0
- package/deps/librdkafka/src/rdkafka_offset.h +150 -0
- package/deps/librdkafka/src/rdkafka_op.c +997 -0
- package/deps/librdkafka/src/rdkafka_op.h +858 -0
- package/deps/librdkafka/src/rdkafka_partition.c +4896 -0
- package/deps/librdkafka/src/rdkafka_partition.h +1182 -0
- package/deps/librdkafka/src/rdkafka_pattern.c +228 -0
- package/deps/librdkafka/src/rdkafka_pattern.h +70 -0
- package/deps/librdkafka/src/rdkafka_plugin.c +213 -0
- package/deps/librdkafka/src/rdkafka_plugin.h +41 -0
- package/deps/librdkafka/src/rdkafka_proto.h +736 -0
- package/deps/librdkafka/src/rdkafka_protocol.h +128 -0
- package/deps/librdkafka/src/rdkafka_queue.c +1230 -0
- package/deps/librdkafka/src/rdkafka_queue.h +1220 -0
- package/deps/librdkafka/src/rdkafka_range_assignor.c +1748 -0
- package/deps/librdkafka/src/rdkafka_request.c +7089 -0
- package/deps/librdkafka/src/rdkafka_request.h +732 -0
- package/deps/librdkafka/src/rdkafka_roundrobin_assignor.c +123 -0
- package/deps/librdkafka/src/rdkafka_sasl.c +530 -0
- package/deps/librdkafka/src/rdkafka_sasl.h +63 -0
- package/deps/librdkafka/src/rdkafka_sasl_cyrus.c +722 -0
- package/deps/librdkafka/src/rdkafka_sasl_int.h +89 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.c +1833 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer.h +52 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.c +1666 -0
- package/deps/librdkafka/src/rdkafka_sasl_oauthbearer_oidc.h +47 -0
- package/deps/librdkafka/src/rdkafka_sasl_plain.c +142 -0
- package/deps/librdkafka/src/rdkafka_sasl_scram.c +858 -0
- package/deps/librdkafka/src/rdkafka_sasl_win32.c +550 -0
- package/deps/librdkafka/src/rdkafka_ssl.c +2129 -0
- package/deps/librdkafka/src/rdkafka_ssl.h +86 -0
- package/deps/librdkafka/src/rdkafka_sticky_assignor.c +4785 -0
- package/deps/librdkafka/src/rdkafka_subscription.c +278 -0
- package/deps/librdkafka/src/rdkafka_telemetry.c +760 -0
- package/deps/librdkafka/src/rdkafka_telemetry.h +52 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.c +1053 -0
- package/deps/librdkafka/src/rdkafka_telemetry_decode.h +59 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.c +997 -0
- package/deps/librdkafka/src/rdkafka_telemetry_encode.h +301 -0
- package/deps/librdkafka/src/rdkafka_timer.c +402 -0
- package/deps/librdkafka/src/rdkafka_timer.h +117 -0
- package/deps/librdkafka/src/rdkafka_topic.c +2161 -0
- package/deps/librdkafka/src/rdkafka_topic.h +334 -0
- package/deps/librdkafka/src/rdkafka_transport.c +1309 -0
- package/deps/librdkafka/src/rdkafka_transport.h +99 -0
- package/deps/librdkafka/src/rdkafka_transport_int.h +100 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.c +3256 -0
- package/deps/librdkafka/src/rdkafka_txnmgr.h +171 -0
- package/deps/librdkafka/src/rdkafka_zstd.c +226 -0
- package/deps/librdkafka/src/rdkafka_zstd.h +57 -0
- package/deps/librdkafka/src/rdlist.c +576 -0
- package/deps/librdkafka/src/rdlist.h +434 -0
- package/deps/librdkafka/src/rdlog.c +89 -0
- package/deps/librdkafka/src/rdlog.h +41 -0
- package/deps/librdkafka/src/rdmap.c +508 -0
- package/deps/librdkafka/src/rdmap.h +492 -0
- package/deps/librdkafka/src/rdmurmur2.c +167 -0
- package/deps/librdkafka/src/rdmurmur2.h +35 -0
- package/deps/librdkafka/src/rdports.c +61 -0
- package/deps/librdkafka/src/rdports.h +38 -0
- package/deps/librdkafka/src/rdposix.h +250 -0
- package/deps/librdkafka/src/rdrand.c +80 -0
- package/deps/librdkafka/src/rdrand.h +43 -0
- package/deps/librdkafka/src/rdregex.c +156 -0
- package/deps/librdkafka/src/rdregex.h +43 -0
- package/deps/librdkafka/src/rdsignal.h +57 -0
- package/deps/librdkafka/src/rdstring.c +645 -0
- package/deps/librdkafka/src/rdstring.h +98 -0
- package/deps/librdkafka/src/rdsysqueue.h +404 -0
- package/deps/librdkafka/src/rdtime.h +356 -0
- package/deps/librdkafka/src/rdtypes.h +86 -0
- package/deps/librdkafka/src/rdunittest.c +549 -0
- package/deps/librdkafka/src/rdunittest.h +232 -0
- package/deps/librdkafka/src/rdvarint.c +134 -0
- package/deps/librdkafka/src/rdvarint.h +165 -0
- package/deps/librdkafka/src/rdwin32.h +382 -0
- package/deps/librdkafka/src/rdxxhash.c +1030 -0
- package/deps/librdkafka/src/rdxxhash.h +328 -0
- package/deps/librdkafka/src/regexp.c +1352 -0
- package/deps/librdkafka/src/regexp.h +41 -0
- package/deps/librdkafka/src/snappy.c +1866 -0
- package/deps/librdkafka/src/snappy.h +62 -0
- package/deps/librdkafka/src/snappy_compat.h +138 -0
- package/deps/librdkafka/src/statistics_schema.json +444 -0
- package/deps/librdkafka/src/tinycthread.c +932 -0
- package/deps/librdkafka/src/tinycthread.h +503 -0
- package/deps/librdkafka/src/tinycthread_extra.c +199 -0
- package/deps/librdkafka/src/tinycthread_extra.h +212 -0
- package/deps/librdkafka/src/win32_config.h +58 -0
- package/deps/librdkafka/src-cpp/CMakeLists.txt +90 -0
- package/deps/librdkafka/src-cpp/ConfImpl.cpp +84 -0
- package/deps/librdkafka/src-cpp/ConsumerImpl.cpp +244 -0
- package/deps/librdkafka/src-cpp/HandleImpl.cpp +436 -0
- package/deps/librdkafka/src-cpp/HeadersImpl.cpp +48 -0
- package/deps/librdkafka/src-cpp/KafkaConsumerImpl.cpp +296 -0
- package/deps/librdkafka/src-cpp/Makefile +55 -0
- package/deps/librdkafka/src-cpp/MessageImpl.cpp +38 -0
- package/deps/librdkafka/src-cpp/MetadataImpl.cpp +170 -0
- package/deps/librdkafka/src-cpp/ProducerImpl.cpp +197 -0
- package/deps/librdkafka/src-cpp/QueueImpl.cpp +70 -0
- package/deps/librdkafka/src-cpp/README.md +16 -0
- package/deps/librdkafka/src-cpp/RdKafka.cpp +59 -0
- package/deps/librdkafka/src-cpp/TopicImpl.cpp +124 -0
- package/deps/librdkafka/src-cpp/TopicPartitionImpl.cpp +57 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp.h +3797 -0
- package/deps/librdkafka/src-cpp/rdkafkacpp_int.h +1641 -0
- package/deps/librdkafka/tests/0000-unittests.c +72 -0
- package/deps/librdkafka/tests/0001-multiobj.c +102 -0
- package/deps/librdkafka/tests/0002-unkpart.c +244 -0
- package/deps/librdkafka/tests/0003-msgmaxsize.c +173 -0
- package/deps/librdkafka/tests/0004-conf.c +934 -0
- package/deps/librdkafka/tests/0005-order.c +133 -0
- package/deps/librdkafka/tests/0006-symbols.c +163 -0
- package/deps/librdkafka/tests/0007-autotopic.c +136 -0
- package/deps/librdkafka/tests/0008-reqacks.c +179 -0
- package/deps/librdkafka/tests/0009-mock_cluster.c +97 -0
- package/deps/librdkafka/tests/0011-produce_batch.c +753 -0
- package/deps/librdkafka/tests/0012-produce_consume.c +537 -0
- package/deps/librdkafka/tests/0013-null-msgs.c +473 -0
- package/deps/librdkafka/tests/0014-reconsume-191.c +512 -0
- package/deps/librdkafka/tests/0015-offset_seeks.c +172 -0
- package/deps/librdkafka/tests/0016-client_swname.c +181 -0
- package/deps/librdkafka/tests/0017-compression.c +140 -0
- package/deps/librdkafka/tests/0018-cgrp_term.c +338 -0
- package/deps/librdkafka/tests/0019-list_groups.c +289 -0
- package/deps/librdkafka/tests/0020-destroy_hang.c +162 -0
- package/deps/librdkafka/tests/0021-rkt_destroy.c +72 -0
- package/deps/librdkafka/tests/0022-consume_batch.c +279 -0
- package/deps/librdkafka/tests/0025-timers.c +147 -0
- package/deps/librdkafka/tests/0026-consume_pause.c +547 -0
- package/deps/librdkafka/tests/0028-long_topicnames.c +79 -0
- package/deps/librdkafka/tests/0029-assign_offset.c +202 -0
- package/deps/librdkafka/tests/0030-offset_commit.c +589 -0
- package/deps/librdkafka/tests/0031-get_offsets.c +235 -0
- package/deps/librdkafka/tests/0033-regex_subscribe.c +536 -0
- package/deps/librdkafka/tests/0034-offset_reset.c +398 -0
- package/deps/librdkafka/tests/0035-api_version.c +73 -0
- package/deps/librdkafka/tests/0036-partial_fetch.c +87 -0
- package/deps/librdkafka/tests/0037-destroy_hang_local.c +85 -0
- package/deps/librdkafka/tests/0038-performance.c +121 -0
- package/deps/librdkafka/tests/0039-event.c +284 -0
- package/deps/librdkafka/tests/0040-io_event.c +257 -0
- package/deps/librdkafka/tests/0041-fetch_max_bytes.c +97 -0
- package/deps/librdkafka/tests/0042-many_topics.c +252 -0
- package/deps/librdkafka/tests/0043-no_connection.c +77 -0
- package/deps/librdkafka/tests/0044-partition_cnt.c +94 -0
- package/deps/librdkafka/tests/0045-subscribe_update.c +1010 -0
- package/deps/librdkafka/tests/0046-rkt_cache.c +65 -0
- package/deps/librdkafka/tests/0047-partial_buf_tmout.c +98 -0
- package/deps/librdkafka/tests/0048-partitioner.c +283 -0
- package/deps/librdkafka/tests/0049-consume_conn_close.c +162 -0
- package/deps/librdkafka/tests/0050-subscribe_adds.c +145 -0
- package/deps/librdkafka/tests/0051-assign_adds.c +126 -0
- package/deps/librdkafka/tests/0052-msg_timestamps.c +238 -0
- package/deps/librdkafka/tests/0053-stats_cb.cpp +527 -0
- package/deps/librdkafka/tests/0054-offset_time.cpp +236 -0
- package/deps/librdkafka/tests/0055-producer_latency.c +539 -0
- package/deps/librdkafka/tests/0056-balanced_group_mt.c +315 -0
- package/deps/librdkafka/tests/0057-invalid_topic.cpp +112 -0
- package/deps/librdkafka/tests/0058-log.cpp +123 -0
- package/deps/librdkafka/tests/0059-bsearch.cpp +241 -0
- package/deps/librdkafka/tests/0060-op_prio.cpp +163 -0
- package/deps/librdkafka/tests/0061-consumer_lag.cpp +295 -0
- package/deps/librdkafka/tests/0062-stats_event.c +126 -0
- package/deps/librdkafka/tests/0063-clusterid.cpp +180 -0
- package/deps/librdkafka/tests/0064-interceptors.c +481 -0
- package/deps/librdkafka/tests/0065-yield.cpp +140 -0
- package/deps/librdkafka/tests/0066-plugins.cpp +129 -0
- package/deps/librdkafka/tests/0067-empty_topic.cpp +151 -0
- package/deps/librdkafka/tests/0068-produce_timeout.c +136 -0
- package/deps/librdkafka/tests/0069-consumer_add_parts.c +119 -0
- package/deps/librdkafka/tests/0070-null_empty.cpp +197 -0
- package/deps/librdkafka/tests/0072-headers_ut.c +448 -0
- package/deps/librdkafka/tests/0073-headers.c +381 -0
- package/deps/librdkafka/tests/0074-producev.c +87 -0
- package/deps/librdkafka/tests/0075-retry.c +290 -0
- package/deps/librdkafka/tests/0076-produce_retry.c +452 -0
- package/deps/librdkafka/tests/0077-compaction.c +363 -0
- package/deps/librdkafka/tests/0078-c_from_cpp.cpp +96 -0
- package/deps/librdkafka/tests/0079-fork.c +93 -0
- package/deps/librdkafka/tests/0080-admin_ut.c +3095 -0
- package/deps/librdkafka/tests/0081-admin.c +5633 -0
- package/deps/librdkafka/tests/0082-fetch_max_bytes.cpp +137 -0
- package/deps/librdkafka/tests/0083-cb_event.c +233 -0
- package/deps/librdkafka/tests/0084-destroy_flags.c +208 -0
- package/deps/librdkafka/tests/0085-headers.cpp +392 -0
- package/deps/librdkafka/tests/0086-purge.c +368 -0
- package/deps/librdkafka/tests/0088-produce_metadata_timeout.c +162 -0
- package/deps/librdkafka/tests/0089-max_poll_interval.c +511 -0
- package/deps/librdkafka/tests/0090-idempotence.c +171 -0
- package/deps/librdkafka/tests/0091-max_poll_interval_timeout.c +295 -0
- package/deps/librdkafka/tests/0092-mixed_msgver.c +103 -0
- package/deps/librdkafka/tests/0093-holb.c +200 -0
- package/deps/librdkafka/tests/0094-idempotence_msg_timeout.c +231 -0
- package/deps/librdkafka/tests/0095-all_brokers_down.cpp +122 -0
- package/deps/librdkafka/tests/0097-ssl_verify.cpp +658 -0
- package/deps/librdkafka/tests/0098-consumer-txn.cpp +1218 -0
- package/deps/librdkafka/tests/0099-commit_metadata.c +194 -0
- package/deps/librdkafka/tests/0100-thread_interceptors.cpp +195 -0
- package/deps/librdkafka/tests/0101-fetch-from-follower.cpp +446 -0
- package/deps/librdkafka/tests/0102-static_group_rebalance.c +836 -0
- package/deps/librdkafka/tests/0103-transactions.c +1383 -0
- package/deps/librdkafka/tests/0104-fetch_from_follower_mock.c +625 -0
- package/deps/librdkafka/tests/0105-transactions_mock.c +3930 -0
- package/deps/librdkafka/tests/0106-cgrp_sess_timeout.c +318 -0
- package/deps/librdkafka/tests/0107-topic_recreate.c +259 -0
- package/deps/librdkafka/tests/0109-auto_create_topics.cpp +278 -0
- package/deps/librdkafka/tests/0110-batch_size.cpp +182 -0
- package/deps/librdkafka/tests/0111-delay_create_topics.cpp +127 -0
- package/deps/librdkafka/tests/0112-assign_unknown_part.c +87 -0
- package/deps/librdkafka/tests/0113-cooperative_rebalance.cpp +3473 -0
- package/deps/librdkafka/tests/0114-sticky_partitioning.cpp +176 -0
- package/deps/librdkafka/tests/0115-producer_auth.cpp +182 -0
- package/deps/librdkafka/tests/0116-kafkaconsumer_close.cpp +216 -0
- package/deps/librdkafka/tests/0117-mock_errors.c +331 -0
- package/deps/librdkafka/tests/0118-commit_rebalance.c +154 -0
- package/deps/librdkafka/tests/0119-consumer_auth.cpp +167 -0
- package/deps/librdkafka/tests/0120-asymmetric_subscription.c +185 -0
- package/deps/librdkafka/tests/0121-clusterid.c +115 -0
- package/deps/librdkafka/tests/0122-buffer_cleaning_after_rebalance.c +227 -0
- package/deps/librdkafka/tests/0123-connections_max_idle.c +98 -0
- package/deps/librdkafka/tests/0124-openssl_invalid_engine.c +69 -0
- package/deps/librdkafka/tests/0125-immediate_flush.c +144 -0
- package/deps/librdkafka/tests/0126-oauthbearer_oidc.c +528 -0
- package/deps/librdkafka/tests/0127-fetch_queue_backoff.cpp +165 -0
- package/deps/librdkafka/tests/0128-sasl_callback_queue.cpp +125 -0
- package/deps/librdkafka/tests/0129-fetch_aborted_msgs.c +79 -0
- package/deps/librdkafka/tests/0130-store_offsets.c +178 -0
- package/deps/librdkafka/tests/0131-connect_timeout.c +81 -0
- package/deps/librdkafka/tests/0132-strategy_ordering.c +179 -0
- package/deps/librdkafka/tests/0133-ssl_keys.c +150 -0
- package/deps/librdkafka/tests/0134-ssl_provider.c +92 -0
- package/deps/librdkafka/tests/0135-sasl_credentials.cpp +143 -0
- package/deps/librdkafka/tests/0136-resolve_cb.c +181 -0
- package/deps/librdkafka/tests/0137-barrier_batch_consume.c +619 -0
- package/deps/librdkafka/tests/0138-admin_mock.c +281 -0
- package/deps/librdkafka/tests/0139-offset_validation_mock.c +950 -0
- package/deps/librdkafka/tests/0140-commit_metadata.cpp +108 -0
- package/deps/librdkafka/tests/0142-reauthentication.c +515 -0
- package/deps/librdkafka/tests/0143-exponential_backoff_mock.c +552 -0
- package/deps/librdkafka/tests/0144-idempotence_mock.c +373 -0
- package/deps/librdkafka/tests/0145-pause_resume_mock.c +119 -0
- package/deps/librdkafka/tests/0146-metadata_mock.c +505 -0
- package/deps/librdkafka/tests/0147-consumer_group_consumer_mock.c +952 -0
- package/deps/librdkafka/tests/0148-offset_fetch_commit_error_mock.c +563 -0
- package/deps/librdkafka/tests/0149-broker-same-host-port.c +140 -0
- package/deps/librdkafka/tests/0150-telemetry_mock.c +651 -0
- package/deps/librdkafka/tests/0151-purge-brokers.c +566 -0
- package/deps/librdkafka/tests/0152-rebootstrap.c +59 -0
- package/deps/librdkafka/tests/0153-memberid.c +128 -0
- package/deps/librdkafka/tests/1000-unktopic.c +164 -0
- package/deps/librdkafka/tests/8000-idle.cpp +60 -0
- package/deps/librdkafka/tests/8001-fetch_from_follower_mock_manual.c +113 -0
- package/deps/librdkafka/tests/CMakeLists.txt +170 -0
- package/deps/librdkafka/tests/LibrdkafkaTestApp.py +291 -0
- package/deps/librdkafka/tests/Makefile +182 -0
- package/deps/librdkafka/tests/README.md +509 -0
- package/deps/librdkafka/tests/autotest.sh +33 -0
- package/deps/librdkafka/tests/backtrace.gdb +30 -0
- package/deps/librdkafka/tests/broker_version_tests.py +315 -0
- package/deps/librdkafka/tests/buildbox.sh +17 -0
- package/deps/librdkafka/tests/cleanup-checker-tests.sh +20 -0
- package/deps/librdkafka/tests/cluster_testing.py +191 -0
- package/deps/librdkafka/tests/delete-test-topics.sh +56 -0
- package/deps/librdkafka/tests/fixtures/oauthbearer/jwt_assertion_template.json +10 -0
- package/deps/librdkafka/tests/fixtures/ssl/Makefile +8 -0
- package/deps/librdkafka/tests/fixtures/ssl/README.md +13 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.intermediate.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client.keystore.p12 +0 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.intermediate.pem +72 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.certificate.pem +50 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.intermediate.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/client2.key +46 -0
- package/deps/librdkafka/tests/fixtures/ssl/create_keys.sh +168 -0
- package/deps/librdkafka/tests/fuzzers/Makefile +12 -0
- package/deps/librdkafka/tests/fuzzers/README.md +31 -0
- package/deps/librdkafka/tests/fuzzers/fuzz_regex.c +74 -0
- package/deps/librdkafka/tests/fuzzers/helpers.h +90 -0
- package/deps/librdkafka/tests/gen-ssl-certs.sh +165 -0
- package/deps/librdkafka/tests/interactive_broker_version.py +170 -0
- package/deps/librdkafka/tests/interceptor_test/CMakeLists.txt +16 -0
- package/deps/librdkafka/tests/interceptor_test/Makefile +22 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.c +314 -0
- package/deps/librdkafka/tests/interceptor_test/interceptor_test.h +54 -0
- package/deps/librdkafka/tests/java/IncrementalRebalanceCli.java +97 -0
- package/deps/librdkafka/tests/java/Makefile +13 -0
- package/deps/librdkafka/tests/java/Murmur2Cli.java +46 -0
- package/deps/librdkafka/tests/java/README.md +14 -0
- package/deps/librdkafka/tests/java/TransactionProducerCli.java +162 -0
- package/deps/librdkafka/tests/java/run-class.sh +11 -0
- package/deps/librdkafka/tests/librdkafka.suppressions +483 -0
- package/deps/librdkafka/tests/lz4_manual_test.sh +59 -0
- package/deps/librdkafka/tests/multi-broker-version-test.sh +50 -0
- package/deps/librdkafka/tests/parse-refcnt.sh +43 -0
- package/deps/librdkafka/tests/performance_plot.py +115 -0
- package/deps/librdkafka/tests/plugin_test/Makefile +19 -0
- package/deps/librdkafka/tests/plugin_test/plugin_test.c +58 -0
- package/deps/librdkafka/tests/requirements.txt +2 -0
- package/deps/librdkafka/tests/run-all-tests.sh +79 -0
- package/deps/librdkafka/tests/run-consumer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-producer-tests.sh +16 -0
- package/deps/librdkafka/tests/run-test-batches.py +157 -0
- package/deps/librdkafka/tests/run-test.sh +140 -0
- package/deps/librdkafka/tests/rusage.c +249 -0
- package/deps/librdkafka/tests/sasl_test.py +289 -0
- package/deps/librdkafka/tests/scenarios/README.md +6 -0
- package/deps/librdkafka/tests/scenarios/ak23.json +6 -0
- package/deps/librdkafka/tests/scenarios/default.json +5 -0
- package/deps/librdkafka/tests/scenarios/noautocreate.json +5 -0
- package/deps/librdkafka/tests/sockem.c +801 -0
- package/deps/librdkafka/tests/sockem.h +85 -0
- package/deps/librdkafka/tests/sockem_ctrl.c +145 -0
- package/deps/librdkafka/tests/sockem_ctrl.h +61 -0
- package/deps/librdkafka/tests/test.c +7778 -0
- package/deps/librdkafka/tests/test.conf.example +27 -0
- package/deps/librdkafka/tests/test.h +1028 -0
- package/deps/librdkafka/tests/testcpp.cpp +131 -0
- package/deps/librdkafka/tests/testcpp.h +388 -0
- package/deps/librdkafka/tests/testshared.h +416 -0
- package/deps/librdkafka/tests/tools/README.md +4 -0
- package/deps/librdkafka/tests/tools/stats/README.md +21 -0
- package/deps/librdkafka/tests/tools/stats/filter.jq +42 -0
- package/deps/librdkafka/tests/tools/stats/graph.py +150 -0
- package/deps/librdkafka/tests/tools/stats/requirements.txt +3 -0
- package/deps/librdkafka/tests/tools/stats/to_csv.py +124 -0
- package/deps/librdkafka/tests/trivup/trivup-0.14.0.tar.gz +0 -0
- package/deps/librdkafka/tests/until-fail.sh +87 -0
- package/deps/librdkafka/tests/xxxx-assign_partition.c +122 -0
- package/deps/librdkafka/tests/xxxx-metadata.cpp +159 -0
- package/deps/librdkafka/vcpkg.json +23 -0
- package/deps/librdkafka/win32/README.md +5 -0
- package/deps/librdkafka/win32/build-package.bat +3 -0
- package/deps/librdkafka/win32/build.bat +19 -0
- package/deps/librdkafka/win32/common.vcxproj +84 -0
- package/deps/librdkafka/win32/interceptor_test/interceptor_test.vcxproj +87 -0
- package/deps/librdkafka/win32/librdkafka.autopkg.template +54 -0
- package/deps/librdkafka/win32/librdkafka.master.testing.targets +13 -0
- package/deps/librdkafka/win32/librdkafka.sln +226 -0
- package/deps/librdkafka/win32/librdkafka.vcxproj +276 -0
- package/deps/librdkafka/win32/librdkafkacpp/librdkafkacpp.vcxproj +104 -0
- package/deps/librdkafka/win32/msbuild.ps1 +15 -0
- package/deps/librdkafka/win32/openssl_engine_example/openssl_engine_example.vcxproj +132 -0
- package/deps/librdkafka/win32/package-zip.ps1 +46 -0
- package/deps/librdkafka/win32/packages/repositories.config +4 -0
- package/deps/librdkafka/win32/push-package.bat +4 -0
- package/deps/librdkafka/win32/rdkafka_complex_consumer_example_cpp/rdkafka_complex_consumer_example_cpp.vcxproj +67 -0
- package/deps/librdkafka/win32/rdkafka_example/rdkafka_example.vcxproj +97 -0
- package/deps/librdkafka/win32/rdkafka_performance/rdkafka_performance.vcxproj +97 -0
- package/deps/librdkafka/win32/setup-msys2.ps1 +47 -0
- package/deps/librdkafka/win32/setup-vcpkg.ps1 +34 -0
- package/deps/librdkafka/win32/tests/test.conf.example +25 -0
- package/deps/librdkafka/win32/tests/tests.vcxproj +253 -0
- package/deps/librdkafka/win32/win_ssl_cert_store/win_ssl_cert_store.vcxproj +132 -0
- package/deps/librdkafka/win32/wingetopt.c +564 -0
- package/deps/librdkafka/win32/wingetopt.h +101 -0
- package/deps/librdkafka/win32/wintime.h +33 -0
- package/deps/librdkafka.gyp +62 -0
- package/lib/admin.js +233 -0
- package/lib/client.js +573 -0
- package/lib/error.js +500 -0
- package/lib/index.js +34 -0
- package/lib/kafka-consumer-stream.js +397 -0
- package/lib/kafka-consumer.js +698 -0
- package/lib/producer/high-level-producer.js +323 -0
- package/lib/producer-stream.js +307 -0
- package/lib/producer.js +375 -0
- package/lib/tools/ref-counter.js +52 -0
- package/lib/topic-partition.js +88 -0
- package/lib/topic.js +42 -0
- package/lib/util.js +29 -0
- package/package.json +61 -0
- package/prebuilds/darwin-arm64/@point3+node-rdkafka.node +0 -0
- package/prebuilds/linux-x64/@point3+node-rdkafka.node +0 -0
- package/util/configure.js +30 -0
- package/util/get-env.js +6 -0
- package/util/test-compile.js +11 -0
- package/util/test-producer-delivery.js +100 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2023, Confluent Inc.
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
#include "testcpp.h"
|
|
31
|
+
|
|
32
|
+
using namespace std;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @brief Committed metadata should be stored and received back when
|
|
36
|
+
* checking committed offsets.
|
|
37
|
+
*/
|
|
38
|
+
static void test_commit_metadata() {
|
|
39
|
+
SUB_TEST_QUICK();
|
|
40
|
+
|
|
41
|
+
std::string bootstraps;
|
|
42
|
+
std::string errstr;
|
|
43
|
+
RdKafka::ErrorCode err;
|
|
44
|
+
|
|
45
|
+
RdKafka::Conf *conf;
|
|
46
|
+
std::string topic = Test::mk_topic_name(__FUNCTION__, 1);
|
|
47
|
+
Test::conf_init(&conf, NULL, 3000);
|
|
48
|
+
Test::conf_set(conf, "group.id", topic);
|
|
49
|
+
|
|
50
|
+
RdKafka::KafkaConsumer *consumer =
|
|
51
|
+
RdKafka::KafkaConsumer::create(conf, errstr);
|
|
52
|
+
if (!consumer)
|
|
53
|
+
Test::Fail("Failed to create KafkaConsumer: " + errstr);
|
|
54
|
+
delete conf;
|
|
55
|
+
|
|
56
|
+
Test::Say("Create topic.\n");
|
|
57
|
+
Test::create_topic_wait_exists(consumer, topic.c_str(), 1, 1, 5000);
|
|
58
|
+
|
|
59
|
+
Test::Say("Commit offsets.\n");
|
|
60
|
+
std::vector<RdKafka::TopicPartition *> offsets;
|
|
61
|
+
RdKafka::TopicPartition *offset =
|
|
62
|
+
RdKafka::TopicPartition::create(topic, 0, 10);
|
|
63
|
+
|
|
64
|
+
std::string metadata = "some_metadata";
|
|
65
|
+
std::vector<unsigned char> metadata_vect(metadata.begin(), metadata.end());
|
|
66
|
+
|
|
67
|
+
offset->set_metadata(metadata_vect);
|
|
68
|
+
offsets.push_back(offset);
|
|
69
|
+
|
|
70
|
+
err = consumer->commitSync(offsets);
|
|
71
|
+
TEST_ASSERT(!err, "commit failed: %s", RdKafka::err2str(err).c_str());
|
|
72
|
+
RdKafka::TopicPartition::destroy(offsets);
|
|
73
|
+
|
|
74
|
+
Test::Say("Read committed offsets.\n");
|
|
75
|
+
offset = RdKafka::TopicPartition::create(topic, 0, 10);
|
|
76
|
+
offsets.push_back(offset);
|
|
77
|
+
err = consumer->committed(offsets, 5000);
|
|
78
|
+
TEST_ASSERT(!err, "committed offsets failed: %s",
|
|
79
|
+
RdKafka::err2str(err).c_str());
|
|
80
|
+
TEST_ASSERT(offsets.size() == 1, "expected offsets size 1, got %" PRIusz,
|
|
81
|
+
offsets.size());
|
|
82
|
+
|
|
83
|
+
Test::Say("Check committed metadata.\n");
|
|
84
|
+
std::vector<unsigned char> metadata_vect_committed =
|
|
85
|
+
offsets[0]->get_metadata();
|
|
86
|
+
std::string metadata_committed(metadata_vect_committed.begin(),
|
|
87
|
+
metadata_vect_committed.end());
|
|
88
|
+
|
|
89
|
+
if (metadata != metadata_committed) {
|
|
90
|
+
Test::Fail(tostr() << "Expecting metadata to be \"" << metadata
|
|
91
|
+
<< "\", got \"" << metadata_committed << "\"");
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
RdKafka::TopicPartition::destroy(offsets);
|
|
95
|
+
|
|
96
|
+
consumer->close();
|
|
97
|
+
|
|
98
|
+
delete consumer;
|
|
99
|
+
|
|
100
|
+
SUB_TEST_PASS();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
extern "C" {
|
|
104
|
+
int main_0140_commit_metadata(int argc, char **argv) {
|
|
105
|
+
test_commit_metadata();
|
|
106
|
+
return 0;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* librdkafka - Apache Kafka C library
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2023, Confluent Inc.
|
|
5
|
+
* All rights reserved.
|
|
6
|
+
*
|
|
7
|
+
* Redistribution and use in source and binary forms, with or without
|
|
8
|
+
* modification, are permitted provided that the following conditions are met:
|
|
9
|
+
*
|
|
10
|
+
* 1. Redistributions of source code must retain the above copyright notice,
|
|
11
|
+
* this list of conditions and the following disclaimer.
|
|
12
|
+
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
* this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
* and/or other materials provided with the distribution.
|
|
15
|
+
*
|
|
16
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
19
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
20
|
+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
21
|
+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
22
|
+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
23
|
+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
24
|
+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
25
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
26
|
+
* POSSIBILITY OF SUCH DAMAGE.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
#include "test.h"
|
|
30
|
+
/* Typical include path would be <librdkafka/rdkafka.h>, but this program
|
|
31
|
+
* is built from within the librdkafka source tree and thus differs. */
|
|
32
|
+
#include "rdkafka.h" /* for Kafka driver */
|
|
33
|
+
|
|
34
|
+
static int delivered_msg = 0;
|
|
35
|
+
static int expect_err = 0;
|
|
36
|
+
static int error_seen = 0;
|
|
37
|
+
|
|
38
|
+
static void
|
|
39
|
+
dr_msg_cb(rd_kafka_t *rk, const rd_kafka_message_t *rkmessage, void *opaque) {
|
|
40
|
+
if (rkmessage->err)
|
|
41
|
+
TEST_FAIL("Message delivery failed: %s\n",
|
|
42
|
+
rd_kafka_err2str(rkmessage->err));
|
|
43
|
+
else {
|
|
44
|
+
delivered_msg++;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
static void
|
|
49
|
+
auth_error_cb(rd_kafka_t *rk, int err, const char *reason, void *opaque) {
|
|
50
|
+
if (expect_err && (err == RD_KAFKA_RESP_ERR__AUTHENTICATION ||
|
|
51
|
+
err == RD_KAFKA_RESP_ERR__ALL_BROKERS_DOWN)) {
|
|
52
|
+
TEST_SAY("Expected error: %s: %s\n", rd_kafka_err2str(err),
|
|
53
|
+
reason);
|
|
54
|
+
error_seen = rd_true;
|
|
55
|
+
} else
|
|
56
|
+
TEST_FAIL("Unexpected error: %s: %s", rd_kafka_err2str(err),
|
|
57
|
+
reason);
|
|
58
|
+
rd_kafka_yield(rk);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
/* Test producer message loss while reauth happens between produce. */
|
|
63
|
+
void do_test_producer(int64_t reauth_time, const char *topic) {
|
|
64
|
+
rd_kafka_topic_t *rkt = NULL;
|
|
65
|
+
rd_kafka_conf_t *conf = NULL;
|
|
66
|
+
rd_kafka_t *rk = NULL;
|
|
67
|
+
uint64_t testid = test_id_generate();
|
|
68
|
+
rd_kafka_resp_err_t err;
|
|
69
|
+
int msgrate, msgcnt, sent_msg;
|
|
70
|
+
test_timing_t t_produce;
|
|
71
|
+
|
|
72
|
+
msgrate = 200; /* msg/sec */
|
|
73
|
+
/* Messages should be produced such that at least one reauth happens.
|
|
74
|
+
* The 1.2 is added as a buffer to avoid flakiness. */
|
|
75
|
+
msgcnt = msgrate * reauth_time / 1000 * 1.2;
|
|
76
|
+
delivered_msg = 0;
|
|
77
|
+
sent_msg = 0;
|
|
78
|
+
|
|
79
|
+
SUB_TEST("test producer message loss while reauthenticating");
|
|
80
|
+
|
|
81
|
+
test_conf_init(&conf, NULL, 30);
|
|
82
|
+
rd_kafka_conf_set_dr_msg_cb(conf, dr_msg_cb);
|
|
83
|
+
|
|
84
|
+
rk = test_create_handle(RD_KAFKA_PRODUCER, conf);
|
|
85
|
+
rkt = test_create_producer_topic(rk, topic, NULL);
|
|
86
|
+
test_wait_topic_exists(rk, topic, 5000);
|
|
87
|
+
|
|
88
|
+
/* Create the topic to make sure connections are up and ready. */
|
|
89
|
+
err = test_auto_create_topic_rkt(rk, rkt, tmout_multip(5000));
|
|
90
|
+
TEST_ASSERT(!err, "topic creation failed: %s", rd_kafka_err2str(err));
|
|
91
|
+
|
|
92
|
+
TIMING_START(&t_produce, "PRODUCE");
|
|
93
|
+
/* Produce enough messages such that we have time enough for at least
|
|
94
|
+
* one reauth. */
|
|
95
|
+
test_produce_msgs_nowait(rk, rkt, testid, 0, 0, msgcnt, NULL, 0,
|
|
96
|
+
msgrate, &sent_msg);
|
|
97
|
+
TIMING_STOP(&t_produce);
|
|
98
|
+
|
|
99
|
+
rd_kafka_flush(rk, 10 * 1000);
|
|
100
|
+
|
|
101
|
+
TEST_ASSERT(TIMING_DURATION(&t_produce) >= reauth_time * 1000,
|
|
102
|
+
"time enough for one reauth should pass (%ld vs %ld)",
|
|
103
|
+
TIMING_DURATION(&t_produce), reauth_time * 1000);
|
|
104
|
+
TEST_ASSERT(delivered_msg == sent_msg,
|
|
105
|
+
"did not deliver as many messages as sent (%d vs %d)",
|
|
106
|
+
delivered_msg, sent_msg);
|
|
107
|
+
|
|
108
|
+
rd_kafka_topic_destroy(rkt);
|
|
109
|
+
rd_kafka_destroy(rk);
|
|
110
|
+
|
|
111
|
+
SUB_TEST_PASS();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Test consumer message loss while reauth happens between consume. */
|
|
115
|
+
void do_test_consumer(int64_t reauth_time, const char *topic) {
|
|
116
|
+
uint64_t testid;
|
|
117
|
+
rd_kafka_t *p1;
|
|
118
|
+
rd_kafka_t *c1;
|
|
119
|
+
rd_kafka_conf_t *conf;
|
|
120
|
+
int64_t start_time = 0;
|
|
121
|
+
int64_t wait_time = reauth_time * 1.2 * 1000;
|
|
122
|
+
int recv_cnt = 0, sent_cnt = 0;
|
|
123
|
+
|
|
124
|
+
SUB_TEST("test consumer message loss while reauthenticating");
|
|
125
|
+
|
|
126
|
+
testid = test_id_generate();
|
|
127
|
+
|
|
128
|
+
test_conf_init(&conf, NULL, 30);
|
|
129
|
+
rd_kafka_conf_set_dr_msg_cb(conf, test_dr_msg_cb);
|
|
130
|
+
|
|
131
|
+
p1 = test_create_handle(RD_KAFKA_PRODUCER, rd_kafka_conf_dup(conf));
|
|
132
|
+
|
|
133
|
+
test_create_topic_wait_exists(p1, topic, 1, 3, 5000);
|
|
134
|
+
TEST_SAY("Topic: %s is created\n", topic);
|
|
135
|
+
|
|
136
|
+
test_conf_set(conf, "auto.offset.reset", "earliest");
|
|
137
|
+
c1 = test_create_consumer(topic, NULL, conf, NULL);
|
|
138
|
+
test_consumer_subscribe(c1, topic);
|
|
139
|
+
|
|
140
|
+
start_time = test_clock();
|
|
141
|
+
while ((test_clock() - start_time) <= wait_time) {
|
|
142
|
+
/* Produce one message. */
|
|
143
|
+
test_produce_msgs2(p1, topic, testid, 0, 0, 1, NULL, 0);
|
|
144
|
+
sent_cnt++;
|
|
145
|
+
|
|
146
|
+
rd_kafka_message_t *rkm = rd_kafka_consumer_poll(c1, 100);
|
|
147
|
+
if (!rkm || rkm->err) {
|
|
148
|
+
/* Ignore errors. Add a flush for good measure so maybe
|
|
149
|
+
* we'll have messages in the next iteration. */
|
|
150
|
+
rd_kafka_flush(p1, 50);
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
recv_cnt++;
|
|
154
|
+
rd_kafka_message_destroy(rkm);
|
|
155
|
+
|
|
156
|
+
/* An approximate way of maintaining the message rate as 200
|
|
157
|
+
* msg/s */
|
|
158
|
+
rd_usleep(1000 * 50, NULL);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/* Final flush and receive any remaining messages. */
|
|
162
|
+
rd_kafka_flush(p1, 10 * 1000);
|
|
163
|
+
recv_cnt +=
|
|
164
|
+
test_consumer_poll_timeout("timeout", c1, testid, -1, -1,
|
|
165
|
+
sent_cnt - recv_cnt, NULL, 10 * 1000);
|
|
166
|
+
|
|
167
|
+
test_consumer_close(c1);
|
|
168
|
+
|
|
169
|
+
TEST_ASSERT(sent_cnt == recv_cnt,
|
|
170
|
+
"did not receive as many messages as sent (%d vs %d)",
|
|
171
|
+
sent_cnt, recv_cnt);
|
|
172
|
+
|
|
173
|
+
rd_kafka_destroy(p1);
|
|
174
|
+
rd_kafka_destroy(c1);
|
|
175
|
+
SUB_TEST_PASS();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
/* Test produce from a transactional producer while there is a reauth, and check
|
|
181
|
+
* consumed messages for a committed or an aborted transaction. */
|
|
182
|
+
void do_test_txn_producer(int64_t reauth_time,
|
|
183
|
+
const char *topic,
|
|
184
|
+
rd_bool_t abort_txn) {
|
|
185
|
+
rd_kafka_topic_t *rkt = NULL;
|
|
186
|
+
rd_kafka_conf_t *conf = NULL;
|
|
187
|
+
rd_kafka_t *rk = NULL;
|
|
188
|
+
uint64_t testid = test_id_generate();
|
|
189
|
+
rd_kafka_resp_err_t err;
|
|
190
|
+
int msgrate, msgcnt, sent_msg;
|
|
191
|
+
test_timing_t t_produce;
|
|
192
|
+
|
|
193
|
+
delivered_msg = 0;
|
|
194
|
+
sent_msg = 0;
|
|
195
|
+
msgrate = 200; /* msg/sec */
|
|
196
|
+
/* Messages should be produced such that at least one reauth happens.
|
|
197
|
+
* The 1.2 is added as a buffer to avoid flakiness. */
|
|
198
|
+
msgcnt = msgrate * reauth_time / 1000 * 1.2;
|
|
199
|
+
|
|
200
|
+
SUB_TEST("test reauth in the middle of a txn, txn is %s",
|
|
201
|
+
abort_txn ? "aborted" : "committed");
|
|
202
|
+
|
|
203
|
+
test_conf_init(&conf, NULL, 30);
|
|
204
|
+
test_conf_set(conf, "transactional.id", topic);
|
|
205
|
+
test_conf_set(conf, "transaction.timeout.ms",
|
|
206
|
+
tsprintf("%ld", (int64_t)(reauth_time * 1.2 + 60000)));
|
|
207
|
+
rd_kafka_conf_set_dr_msg_cb(conf, dr_msg_cb);
|
|
208
|
+
|
|
209
|
+
rk = test_create_handle(RD_KAFKA_PRODUCER, conf);
|
|
210
|
+
rkt = test_create_producer_topic(rk, topic, NULL);
|
|
211
|
+
test_wait_topic_exists(rk, topic, 5000);
|
|
212
|
+
|
|
213
|
+
err = test_auto_create_topic_rkt(rk, rkt, tmout_multip(5000));
|
|
214
|
+
TEST_ASSERT(!err, "topic creation failed: %s", rd_kafka_err2str(err));
|
|
215
|
+
|
|
216
|
+
TEST_CALL_ERROR__(rd_kafka_init_transactions(rk, -1));
|
|
217
|
+
TEST_CALL_ERROR__(rd_kafka_begin_transaction(rk));
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
TIMING_START(&t_produce, "PRODUCE");
|
|
221
|
+
/* Produce enough messages such that we have time enough for at least
|
|
222
|
+
* one reauth. */
|
|
223
|
+
test_produce_msgs_nowait(rk, rkt, testid, 0, 0, msgcnt, NULL, 0,
|
|
224
|
+
msgrate, &sent_msg);
|
|
225
|
+
TIMING_STOP(&t_produce);
|
|
226
|
+
|
|
227
|
+
rd_kafka_flush(rk, 10 * 1000);
|
|
228
|
+
|
|
229
|
+
TEST_ASSERT(TIMING_DURATION(&t_produce) >= reauth_time * 1000,
|
|
230
|
+
"time enough for one reauth should pass (%ld vs %ld)",
|
|
231
|
+
TIMING_DURATION(&t_produce), reauth_time * 1000);
|
|
232
|
+
TEST_ASSERT(delivered_msg == sent_msg,
|
|
233
|
+
"did not deliver as many messages as sent (%d vs %d)",
|
|
234
|
+
delivered_msg, sent_msg);
|
|
235
|
+
|
|
236
|
+
if (abort_txn) {
|
|
237
|
+
rd_kafka_t *c = NULL;
|
|
238
|
+
|
|
239
|
+
TEST_CALL_ERROR__(rd_kafka_abort_transaction(rk, 30 * 1000));
|
|
240
|
+
|
|
241
|
+
/* We can reuse conf because the old one's been moved to rk
|
|
242
|
+
* already. */
|
|
243
|
+
test_conf_init(&conf, NULL, 30);
|
|
244
|
+
test_conf_set(conf, "isolation.level", "read_committed");
|
|
245
|
+
c = test_create_consumer("mygroup", NULL, conf, NULL);
|
|
246
|
+
test_consumer_poll_no_msgs("mygroup", c, testid, 10 * 1000);
|
|
247
|
+
|
|
248
|
+
rd_kafka_destroy(c);
|
|
249
|
+
} else {
|
|
250
|
+
TEST_CALL_ERROR__(rd_kafka_commit_transaction(rk, 30 * 1000));
|
|
251
|
+
test_consume_txn_msgs_easy("mygroup", topic, testid, -1,
|
|
252
|
+
sent_msg, NULL);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
rd_kafka_topic_destroy(rkt);
|
|
256
|
+
rd_kafka_destroy(rk);
|
|
257
|
+
|
|
258
|
+
SUB_TEST_PASS();
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
/* Check reauthentication in case of OAUTHBEARER mechanism, with different
|
|
263
|
+
* reauth times and token lifetimes. */
|
|
264
|
+
void do_test_oauthbearer(int64_t reauth_time,
|
|
265
|
+
const char *topic,
|
|
266
|
+
int64_t token_lifetime_ms,
|
|
267
|
+
rd_bool_t use_sasl_queue) {
|
|
268
|
+
rd_kafka_topic_t *rkt = NULL;
|
|
269
|
+
rd_kafka_conf_t *conf = NULL;
|
|
270
|
+
rd_kafka_t *rk = NULL;
|
|
271
|
+
uint64_t testid = test_id_generate();
|
|
272
|
+
rd_kafka_resp_err_t err;
|
|
273
|
+
char *mechanism, *oauthbearer_method;
|
|
274
|
+
int msgrate, msgcnt, sent_msg;
|
|
275
|
+
test_timing_t t_produce;
|
|
276
|
+
int token_lifetime_s = token_lifetime_ms / 1000;
|
|
277
|
+
|
|
278
|
+
SUB_TEST(
|
|
279
|
+
"test reauthentication with oauthbearer, reauth_time = %ld, "
|
|
280
|
+
"token_lifetime = %ld",
|
|
281
|
+
reauth_time, token_lifetime_ms);
|
|
282
|
+
|
|
283
|
+
test_conf_init(&conf, NULL, 30);
|
|
284
|
+
rd_kafka_conf_set_dr_msg_cb(conf, dr_msg_cb);
|
|
285
|
+
rd_kafka_conf_enable_sasl_queue(conf, use_sasl_queue);
|
|
286
|
+
|
|
287
|
+
mechanism = test_conf_get(conf, "sasl.mechanism");
|
|
288
|
+
if (rd_strcasecmp(mechanism, "oauthbearer")) {
|
|
289
|
+
rd_kafka_conf_destroy(conf);
|
|
290
|
+
SUB_TEST_SKIP(
|
|
291
|
+
"`sasl.mechanism=OAUTHBEARER` is required, have %s\n",
|
|
292
|
+
mechanism);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
oauthbearer_method = test_conf_get(conf, "sasl.oauthbearer.method");
|
|
296
|
+
if (rd_strcasecmp(oauthbearer_method, "oidc")) {
|
|
297
|
+
test_conf_set(
|
|
298
|
+
conf, "sasl.oauthbearer.config",
|
|
299
|
+
tsprintf(
|
|
300
|
+
"principal=admin scope=requiredScope lifeSeconds=%d",
|
|
301
|
+
token_lifetime_s));
|
|
302
|
+
test_conf_set(conf, "enable.sasl.oauthbearer.unsecure.jwt",
|
|
303
|
+
"true");
|
|
304
|
+
}
|
|
305
|
+
rk = test_create_handle(RD_KAFKA_PRODUCER, conf);
|
|
306
|
+
|
|
307
|
+
/* Enable to background queue since we don't want to poll the SASL
|
|
308
|
+
* queue. */
|
|
309
|
+
if (use_sasl_queue)
|
|
310
|
+
rd_kafka_sasl_background_callbacks_enable(rk);
|
|
311
|
+
|
|
312
|
+
rkt = test_create_producer_topic(rk, topic, NULL);
|
|
313
|
+
test_wait_topic_exists(rk, topic, 5000);
|
|
314
|
+
|
|
315
|
+
/* Create the topic to make sure connections are up and ready. */
|
|
316
|
+
err = test_auto_create_topic_rkt(rk, rkt, tmout_multip(5000));
|
|
317
|
+
TEST_ASSERT(!err, "topic creation failed: %s", rd_kafka_err2str(err));
|
|
318
|
+
|
|
319
|
+
msgrate = 200; /* msg/sec */
|
|
320
|
+
/* Messages should be produced such that at least one reauth happens.
|
|
321
|
+
* The 1.2 is added as a buffer to avoid flakiness. */
|
|
322
|
+
msgcnt = msgrate * reauth_time / 1000 * 1.2;
|
|
323
|
+
delivered_msg = 0;
|
|
324
|
+
sent_msg = 0;
|
|
325
|
+
|
|
326
|
+
TIMING_START(&t_produce, "PRODUCE");
|
|
327
|
+
test_produce_msgs_nowait(rk, rkt, testid, 0, 0, msgcnt, NULL, 0,
|
|
328
|
+
msgrate, &sent_msg);
|
|
329
|
+
TIMING_STOP(&t_produce);
|
|
330
|
+
|
|
331
|
+
rd_kafka_flush(rk, 10 * 1000);
|
|
332
|
+
|
|
333
|
+
TEST_ASSERT(TIMING_DURATION(&t_produce) >= reauth_time * 1000,
|
|
334
|
+
"time enough for one reauth should pass (%ld vs %ld)",
|
|
335
|
+
TIMING_DURATION(&t_produce), reauth_time * 1000);
|
|
336
|
+
TEST_ASSERT(delivered_msg == sent_msg,
|
|
337
|
+
"did not deliver as many messages as sent (%d vs %d)",
|
|
338
|
+
delivered_msg, sent_msg);
|
|
339
|
+
|
|
340
|
+
rd_kafka_topic_destroy(rkt);
|
|
341
|
+
rd_kafka_destroy(rk);
|
|
342
|
+
|
|
343
|
+
SUB_TEST_PASS();
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
/* Check that credentials changed into wrong ones cause authentication errors.
|
|
348
|
+
*/
|
|
349
|
+
void do_test_reauth_failure(int64_t reauth_time, const char *topic) {
|
|
350
|
+
rd_kafka_topic_t *rkt = NULL;
|
|
351
|
+
rd_kafka_conf_t *conf = NULL;
|
|
352
|
+
rd_kafka_t *rk = NULL;
|
|
353
|
+
uint64_t testid = test_id_generate();
|
|
354
|
+
char *mechanism;
|
|
355
|
+
rd_kafka_resp_err_t err;
|
|
356
|
+
int msgrate, msgcnt, sent_msg;
|
|
357
|
+
test_timing_t t_produce;
|
|
358
|
+
|
|
359
|
+
msgrate = 200; /* msg/sec */
|
|
360
|
+
/* Messages should be produced such that at least one reauth happens.
|
|
361
|
+
* The 1.2 is added as a buffer to avoid flakiness. */
|
|
362
|
+
msgcnt = msgrate * reauth_time / 1000 * 1.2;
|
|
363
|
+
error_seen = 0;
|
|
364
|
+
expect_err = 0;
|
|
365
|
+
|
|
366
|
+
SUB_TEST("test reauth failure with wrong credentials for reauth");
|
|
367
|
+
|
|
368
|
+
test_conf_init(&conf, NULL, 30);
|
|
369
|
+
rd_kafka_conf_set_dr_msg_cb(conf, dr_msg_cb);
|
|
370
|
+
rd_kafka_conf_set_error_cb(conf, auth_error_cb);
|
|
371
|
+
|
|
372
|
+
mechanism = test_conf_get(conf, "sasl.mechanism");
|
|
373
|
+
|
|
374
|
+
if (!rd_strcasecmp(mechanism, "oauthbearer")) {
|
|
375
|
+
rd_kafka_conf_destroy(conf);
|
|
376
|
+
SUB_TEST_SKIP(
|
|
377
|
+
"PLAIN or SCRAM mechanism is required is required, have "
|
|
378
|
+
"OAUTHBEARER");
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
rk = test_create_handle(RD_KAFKA_PRODUCER, conf);
|
|
382
|
+
rkt = test_create_producer_topic(rk, topic, NULL);
|
|
383
|
+
test_wait_topic_exists(rk, topic, 5000);
|
|
384
|
+
|
|
385
|
+
/* Create the topic to make sure connections are up and ready. */
|
|
386
|
+
err = test_auto_create_topic_rkt(rk, rkt, tmout_multip(5000));
|
|
387
|
+
TEST_ASSERT(!err, "topic creation failed: %s", rd_kafka_err2str(err));
|
|
388
|
+
|
|
389
|
+
rd_kafka_sasl_set_credentials(rk, "somethingwhich", "isnotright");
|
|
390
|
+
expect_err = 1;
|
|
391
|
+
|
|
392
|
+
TIMING_START(&t_produce, "PRODUCE");
|
|
393
|
+
/* Produce enough messages such that we have time enough for at least
|
|
394
|
+
* one reauth. */
|
|
395
|
+
test_produce_msgs_nowait(rk, rkt, testid, 0, 0, msgcnt, NULL, 0,
|
|
396
|
+
msgrate, &sent_msg);
|
|
397
|
+
TIMING_STOP(&t_produce);
|
|
398
|
+
|
|
399
|
+
TEST_ASSERT(TIMING_DURATION(&t_produce) >= reauth_time * 1000,
|
|
400
|
+
"time enough for one reauth should pass (%ld vs %ld)",
|
|
401
|
+
TIMING_DURATION(&t_produce), reauth_time * 1000);
|
|
402
|
+
TEST_ASSERT(error_seen, "should have had an authentication error");
|
|
403
|
+
|
|
404
|
+
rd_kafka_topic_destroy(rkt);
|
|
405
|
+
rd_kafka_destroy(rk);
|
|
406
|
+
|
|
407
|
+
SUB_TEST_PASS();
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
int main_0142_reauthentication(int argc, char **argv) {
|
|
412
|
+
size_t broker_id_cnt;
|
|
413
|
+
int32_t *broker_ids = NULL;
|
|
414
|
+
rd_kafka_conf_t *conf = NULL;
|
|
415
|
+
const char *security_protocol;
|
|
416
|
+
rd_bool_t sasl_mechanism_oauthbearer = rd_false;
|
|
417
|
+
rd_bool_t oauthbearer_method_default = rd_false;
|
|
418
|
+
|
|
419
|
+
size_t i;
|
|
420
|
+
int64_t reauth_time = INT64_MAX;
|
|
421
|
+
const char *topic = test_mk_topic_name(__FUNCTION__ + 5, 1);
|
|
422
|
+
|
|
423
|
+
test_conf_init(&conf, NULL, 30);
|
|
424
|
+
security_protocol = test_conf_get(NULL, "security.protocol");
|
|
425
|
+
|
|
426
|
+
if (strncmp(security_protocol, "sasl", 4)) {
|
|
427
|
+
rd_kafka_conf_destroy(conf);
|
|
428
|
+
TEST_SKIP("Test requires SASL_PLAINTEXT or SASL_SSL, got %s\n",
|
|
429
|
+
security_protocol);
|
|
430
|
+
return 0;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
sasl_mechanism_oauthbearer = !rd_strcasecmp(
|
|
434
|
+
test_conf_get(NULL, "sasl.mechanism"), "oauthbearer");
|
|
435
|
+
oauthbearer_method_default = !rd_strcasecmp(
|
|
436
|
+
test_conf_get(NULL, "sasl.oauthbearer.method"), "default");
|
|
437
|
+
if (sasl_mechanism_oauthbearer && oauthbearer_method_default)
|
|
438
|
+
test_conf_set(conf, "enable.sasl.oauthbearer.unsecure.jwt",
|
|
439
|
+
"true");
|
|
440
|
+
|
|
441
|
+
rd_kafka_t *rk = test_create_handle(RD_KAFKA_PRODUCER, conf);
|
|
442
|
+
|
|
443
|
+
TEST_SAY("Fetching broker IDs\n");
|
|
444
|
+
broker_ids = test_get_broker_ids(rk, &broker_id_cnt);
|
|
445
|
+
|
|
446
|
+
TEST_ASSERT(broker_id_cnt != 0);
|
|
447
|
+
|
|
448
|
+
for (i = 0; i < broker_id_cnt; i++) {
|
|
449
|
+
char *property_value = test_get_broker_config_entry(
|
|
450
|
+
rk, broker_ids[i], "connections.max.reauth.ms");
|
|
451
|
+
|
|
452
|
+
int64_t parsed_value;
|
|
453
|
+
|
|
454
|
+
if (!property_value)
|
|
455
|
+
continue;
|
|
456
|
+
|
|
457
|
+
parsed_value = strtoll(property_value, NULL, 0);
|
|
458
|
+
if (parsed_value < reauth_time)
|
|
459
|
+
reauth_time = parsed_value;
|
|
460
|
+
|
|
461
|
+
free(property_value);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
if (broker_ids)
|
|
465
|
+
free(broker_ids);
|
|
466
|
+
if (rk)
|
|
467
|
+
rd_kafka_destroy(rk);
|
|
468
|
+
|
|
469
|
+
if (reauth_time ==
|
|
470
|
+
INT64_MAX /* denotes property is unset on all brokers */
|
|
471
|
+
||
|
|
472
|
+
reauth_time == 0 /* denotes at least one broker without timeout */
|
|
473
|
+
) {
|
|
474
|
+
TEST_SKIP(
|
|
475
|
+
"Test requires all brokers to have non-zero "
|
|
476
|
+
"connections.max.reauth.ms\n");
|
|
477
|
+
return 0;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/* Each test (7 of them) will take slightly more than 1 reauth_time
|
|
481
|
+
* interval. Additional 30s provide a reasonable buffer. */
|
|
482
|
+
test_timeout_set(9 * reauth_time / 1000 + 30);
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
do_test_consumer(reauth_time, topic);
|
|
486
|
+
do_test_producer(reauth_time, topic);
|
|
487
|
+
do_test_txn_producer(reauth_time, topic, rd_false /* abort txn */);
|
|
488
|
+
do_test_txn_producer(reauth_time, topic, rd_true /* abort txn */);
|
|
489
|
+
|
|
490
|
+
/* Case when token_lifetime is shorter than the maximum reauth time
|
|
491
|
+
* configured on the broker.
|
|
492
|
+
* In this case, the broker returns the time to the next
|
|
493
|
+
* reauthentication based on the expiry provided in the token.
|
|
494
|
+
* We should recreate the token and reauthenticate before this
|
|
495
|
+
* reauth time. */
|
|
496
|
+
do_test_oauthbearer(reauth_time, topic, reauth_time / 2, rd_true);
|
|
497
|
+
do_test_oauthbearer(reauth_time, topic, reauth_time / 2, rd_false);
|
|
498
|
+
|
|
499
|
+
/* With OIDC the expiration time is fixed so do the testing only
|
|
500
|
+
* once. */
|
|
501
|
+
if (oauthbearer_method_default) {
|
|
502
|
+
/* Case when the token_lifetime is greater than the maximum
|
|
503
|
+
* reauth time configured. In this case, the broker returns the
|
|
504
|
+
* maximum reauth time configured. We don't need to recreate the
|
|
505
|
+
* token, but we need to reauthenticate using the same token. */
|
|
506
|
+
do_test_oauthbearer(reauth_time, topic, reauth_time * 2,
|
|
507
|
+
rd_true);
|
|
508
|
+
do_test_oauthbearer(reauth_time, topic, reauth_time * 2,
|
|
509
|
+
rd_false);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
do_test_reauth_failure(reauth_time, topic);
|
|
513
|
+
|
|
514
|
+
return 0;
|
|
515
|
+
}
|