diff --git a/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala b/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala index 74df3b9297c99..eadbdb8aefc53 100644 --- a/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala +++ b/core/src/main/scala/kafka/docker/KafkaDockerWrapper.scala @@ -16,6 +16,7 @@ */ package kafka.docker +import kafka.Kafka import kafka.tools.StorageTool import kafka.utils.Exit import net.sourceforge.argparse4j.ArgumentParsers @@ -45,6 +46,9 @@ object KafkaDockerWrapper { val formatCmd = formatStorageCmd(finalConfigsPath, envVars) StorageTool.main(formatCmd) + case "start" => + val configFile = namespace.getString("config") + Kafka.main(Array(configFile)) case _ => throw new RuntimeException(s"Unknown operation $command. " + s"Please provide a valid operation: 'setup'.") @@ -60,7 +64,13 @@ object KafkaDockerWrapper { val subparsers = parser.addSubparsers().dest("command") - val setupParser = subparsers.addParser("setup") + val kafkaStartParser = subparsers.addParser("start").help("Start kafka server.") + kafkaStartParser.addArgument("--config", "-C") + .action(store()) + .required(true) + .help("The kafka server configuration file") + + val setupParser = subparsers.addParser("setup").help("Setup property files and format storage.") setupParser.addArgument("--default-configs-dir", "-D"). action(store()). diff --git a/docker/common.py b/docker/common.py index 1c94e173eec19..aaab1eae1ff18 100644 --- a/docker/common.py +++ b/docker/common.py @@ -31,13 +31,13 @@ def get_input(message): raise ValueError("This field cannot be empty") return value -def jvm_image(command): +def build_docker_image_runner(command, image_type): temp_dir_path = tempfile.mkdtemp() current_dir = os.path.dirname(os.path.realpath(__file__)) - copy_tree(f"{current_dir}/jvm", f"{temp_dir_path}/jvm") - copy_tree(f"{current_dir}/resources", f"{temp_dir_path}/jvm/resources") - command = command.replace("$DOCKER_FILE", f"{temp_dir_path}/jvm/Dockerfile") - command = command.replace("$DOCKER_DIR", f"{temp_dir_path}/jvm") + copy_tree(f"{current_dir}/{image_type}", f"{temp_dir_path}/{image_type}") + copy_tree(f"{current_dir}/resources", f"{temp_dir_path}/{image_type}/resources") + command = command.replace("$DOCKER_FILE", f"{temp_dir_path}/{image_type}/Dockerfile") + command = command.replace("$DOCKER_DIR", f"{temp_dir_path}/{image_type}") try: execute(command.split()) except: diff --git a/docker/docker_build_test.py b/docker/docker_build_test.py index e63d8746ac1bc..793148573f395 100755 --- a/docker/docker_build_test.py +++ b/docker/docker_build_test.py @@ -37,15 +37,15 @@ from distutils.dir_util import copy_tree import shutil from test.docker_sanity_test import run_tests -from common import execute, jvm_image +from common import execute, build_docker_image_runner import tempfile import os -def build_jvm(image, tag, kafka_url): +def build_docker_image(image, tag, kafka_url, image_type): image = f'{image}:{tag}' - jvm_image(f"docker build -f $DOCKER_FILE -t {image} --build-arg kafka_url={kafka_url} --build-arg build_date={date.today()} $DOCKER_DIR") + build_docker_image_runner(f"docker build -f $DOCKER_FILE -t {image} --build-arg kafka_url={kafka_url} --build-arg build_date={date.today()} $DOCKER_DIR", image_type) -def run_jvm_tests(image, tag, kafka_url): +def run_docker_tests(image, tag, kafka_url, image_type): temp_dir_path = tempfile.mkdtemp() try: current_dir = os.path.dirname(os.path.realpath(__file__)) @@ -53,12 +53,12 @@ def run_jvm_tests(image, tag, kafka_url): execute(["wget", "-nv", "-O", f"{temp_dir_path}/kafka.tgz", kafka_url]) execute(["mkdir", f"{temp_dir_path}/fixtures/kafka"]) execute(["tar", "xfz", f"{temp_dir_path}/kafka.tgz", "-C", f"{temp_dir_path}/fixtures/kafka", "--strip-components", "1"]) - failure_count = run_tests(f"{image}:{tag}", "jvm", temp_dir_path) + failure_count = run_tests(f"{image}:{tag}", image_type, temp_dir_path) except: raise SystemError("Failed to run the tests") finally: shutil.rmtree(temp_dir_path) - test_report_location_text = f"To view test report please check {current_dir}/test/report_jvm.html" + test_report_location_text = f"To view test report please check {current_dir}/test/report_{image_type}.html" if failure_count != 0: raise SystemError(f"{failure_count} tests have failed. {test_report_location_text}") else: @@ -68,17 +68,17 @@ def run_jvm_tests(image, tag, kafka_url): parser = argparse.ArgumentParser() parser.add_argument("image", help="Image name that you want to keep for the Docker image") parser.add_argument("--image-tag", "-tag", default="latest", dest="tag", help="Image tag that you want to add to the image") - parser.add_argument("--image-type", "-type", choices=["jvm"], default="jvm", dest="image_type", help="Image type you want to build") + parser.add_argument("--image-type", "-type", choices=["jvm", "native"], default="jvm", dest="image_type", help="Image type you want to build") parser.add_argument("--kafka-url", "-u", dest="kafka_url", help="Kafka url to be used to download kafka binary tarball in the docker image") parser.add_argument("--build", "-b", action="store_true", dest="build_only", default=False, help="Only build the image, don't run tests") parser.add_argument("--test", "-t", action="store_true", dest="test_only", default=False, help="Only run the tests, don't build the image") args = parser.parse_args() - if args.image_type == "jvm" and (args.build_only or not (args.build_only or args.test_only)): + if args.build_only or not (args.build_only or args.test_only): if args.kafka_url: - build_jvm(args.image, args.tag, args.kafka_url) + build_docker_image(args.image, args.tag, args.kafka_url, args.image_type) else: - raise ValueError("--kafka-url is a required argument for jvm image") + raise ValueError("--kafka-url is a required argument for docker image") - if args.image_type == "jvm" and (args.test_only or not (args.build_only or args.test_only)): - run_jvm_tests(args.image, args.tag, args.kafka_url) + if args.test_only or not (args.build_only or args.test_only): + run_docker_tests(args.image, args.tag, args.kafka_url, args.image_type) diff --git a/docker/docker_release.py b/docker/docker_release.py index 50eee56a490a1..c92459a86eb17 100755 --- a/docker/docker_release.py +++ b/docker/docker_release.py @@ -38,13 +38,13 @@ from datetime import date import argparse -from common import execute, jvm_image +from common import execute, build_docker_image_runner -def build_push_jvm(image, kafka_url): +def build_push(image, kafka_url, image_type): try: create_builder() - jvm_image(f"docker buildx build -f $DOCKER_FILE --build-arg kafka_url={kafka_url} --build-arg build_date={date.today()} --push \ - --platform linux/amd64,linux/arm64 --tag {image} $DOCKER_DIR") + build_docker_image_runner(f"docker buildx build -f $DOCKER_FILE --build-arg kafka_url={kafka_url} --build-arg build_date={date.today()} --push \ + --platform linux/amd64,linux/arm64 --tag {image} $DOCKER_DIR", image_type) except: raise SystemError("Docker image push failed") finally: @@ -63,13 +63,12 @@ def remove_builder(): Please ensure you are logged in the docker registry that you are trying to push to.") parser = argparse.ArgumentParser() parser.add_argument("image", help="Dockerhub image that you want to push to (in the format //:)") - parser.add_argument("--image-type", "-type", choices=["jvm"], default="jvm", dest="image_type", help="Image type you want to build") + parser.add_argument("--image-type", "-type", choices=["jvm", "native"], default="jvm", dest="image_type", help="Image type you want to build") parser.add_argument("--kafka-url", "-u", dest="kafka_url", help="Kafka url to be used to download kafka binary tarball in the docker image") args = parser.parse_args() print(f"Docker image of type {args.image_type} containing kafka downloaded from {args.kafka_url} will be pushed to {args.image}") print("Building and pushing the image") - if args.image_type == "jvm": - build_push_jvm(args.image, args.kafka_url) + build_push(args.image, args.kafka_url, args.image_type) print(f"Image has been pushed to {args.image}") diff --git a/docker/native/Dockerfile b/docker/native/Dockerfile new file mode 100644 index 0000000000000..54db837170bc1 --- /dev/null +++ b/docker/native/Dockerfile @@ -0,0 +1,90 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM ghcr.io/graalvm/graalvm-community:21 AS build-native-image + +ARG kafka_url + +WORKDIR /app + +ENV KAFKA_URL=$kafka_url +COPY native-image-configs native-image-configs + +RUN mkdir kafka; \ + microdnf install wget; \ + wget -nv -O kafka.tgz "$KAFKA_URL"; \ + wget -nv -O kafka.tgz.asc "$kafka_url.asc"; \ + tar xfz kafka.tgz -C kafka --strip-components 1; \ + wget -nv -O KEYS https://downloads.apache.org/kafka/KEYS; \ + gpg --import KEYS; \ + gpg --batch --verify kafka.tgz.asc kafka.tgz; \ + rm kafka.tgz ; \ + cd kafka ; \ +# Build the native-binary of the apache kafka using graalVM native-image. + native-image --no-fallback \ + --enable-http \ + --enable-https \ + --allow-incomplete-classpath \ + --report-unsupported-elements-at-runtime \ + --install-exit-handlers \ + --enable-monitoring=jmxserver,jmxclient,heapdump,jvmstat \ + -H:+ReportExceptionStackTraces \ + -H:+EnableAllSecurityServices \ + -H:EnableURLProtocols=http,https \ + -H:AdditionalSecurityProviders=sun.security.jgss.SunProvider \ + -H:ReflectionConfigurationFiles=/app/native-image-configs/reflect-config.json \ + -H:JNIConfigurationFiles=/app/native-image-configs/jni-config.json \ + -H:ResourceConfigurationFiles=/app/native-image-configs/resource-config.json \ + -H:SerializationConfigurationFiles=/app/native-image-configs/serialization-config.json \ + -H:PredefinedClassesConfigurationFiles=/app/native-image-configs/predefined-classes-config.json \ + -H:DynamicProxyConfigurationFiles=/app/native-image-configs/proxy-config.json \ + --verbose \ + -march=compatibility \ + -cp "libs/*" kafka.docker.KafkaDockerWrapper \ + -o kafka.Kafka + + +FROM alpine:latest + +EXPOSE 9092 + +ARG build_date + +LABEL org.label-schema.name="kafka" \ + org.label-schema.description="Apache Kafka" \ + org.label-schema.build-date="${build_date}" \ + org.label-schema.vcs-url="https://github.com/apache/kafka" \ + maintainer="Apache Kafka" + +RUN apk update ; \ + apk add --no-cache gcompat ; \ + apk add --no-cache bash ; \ + mkdir -p /etc/kafka/docker /mnt/shared/config /opt/kafka/config /etc/kafka/secrets ; \ + adduser -h /home/appuser -D --shell /bin/bash appuser ; \ + chown appuser:root -R /etc/kafka /opt/kafka /mnt/shared/config ; \ + chmod -R ug+w /etc/kafka /opt/kafka /mnt/shared/config ; + +COPY --chown=appuser:root --from=build-native-image /app/kafka/kafka.Kafka /opt/kafka/ +COPY --chown=appuser:root --from=build-native-image /app/kafka/config/kraft/server.properties /etc/kafka/docker/ +COPY --chown=appuser:root --from=build-native-image /app/kafka/config/log4j.properties /etc/kafka/docker/ +COPY --chown=appuser:root --from=build-native-image /app/kafka/config/tools-log4j.properties /etc/kafka/docker/ +COPY --chown=appuser:root resources/common-scripts /etc/kafka/docker/ +COPY --chown=appuser:root launch /etc/kafka/docker/ + +USER appuser + +VOLUME ["/etc/kafka/secrets", "/mnt/shared/config"] + +CMD ["/etc/kafka/docker/run"] diff --git a/docker/native/launch b/docker/native/launch new file mode 100755 index 0000000000000..05fa4132cb1f9 --- /dev/null +++ b/docker/native/launch @@ -0,0 +1,50 @@ +#!/bin/sh +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Override this section from the script to include the com.sun.management.jmxremote.rmi.port property. +if [ -z "${KAFKA_JMX_OPTS-}" ]; then + export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true \ + -Dcom.sun.management.jmxremote.authenticate=false \ + -Dcom.sun.management.jmxremote.ssl=false " +fi + +# The JMX client needs to be able to connect to java.rmi.server.hostname. +# The default for bridged n/w is the bridged IP so you will only be able to connect from another docker container. +# For host n/w, this is the IP that the hostname on the host resolves to. + +# If you have more than one n/w configured, hostname -i gives you all the IPs, +# the default is to pick the first IP (or network). +export KAFKA_JMX_HOSTNAME=${KAFKA_JMX_HOSTNAME:-$(hostname -i | cut -d" " -f1)} + +if [ "${KAFKA_JMX_PORT-}" ]; then + export JMX_PORT=$KAFKA_JMX_PORT + export KAFKA_JMX_OPTS="${KAFKA_JMX_OPTS-} -Djava.rmi.server.hostname=$KAFKA_JMX_HOSTNAME \ + -Dcom.sun.management.jmxremote.local.only=false \ + -Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT \ + -Dcom.sun.management.jmxremote.port=$JMX_PORT" +fi + +# Invoke the docker wrapper to setup property files and format storage +result=$(/opt/kafka/kafka.Kafka setup \ + --default-configs-dir /etc/kafka/docker \ + --mounted-configs-dir /mnt/shared/config \ + --final-configs-dir /opt/kafka/config \ + -Dlog4j.configuration=file:/opt/kafka/config/tools-log4j.properties 2>&1) || \ + echo $result | grep -i "already formatted" || \ + { echo $result && (exit 1) } + +KAFKA_LOG4J_CMD_OPTS="-Dkafka.logs.dir=/opt/kafka/logs/ -Dlog4j.configuration=file:/opt/kafka/config/log4j.properties" +exec /opt/kafka/kafka.Kafka start --config /opt/kafka/config/server.properties $KAFKA_LOG4J_CMD_OPTS $KAFKA_JMX_OPTS ${KAFKA_OPTS-} diff --git a/docker/native/native-image-configs/jni-config.json b/docker/native/native-image-configs/jni-config.json new file mode 100644 index 0000000000000..50b6bf1fd6dbb --- /dev/null +++ b/docker/native/native-image-configs/jni-config.json @@ -0,0 +1,35 @@ +[ +{ + "name":"[Lcom.sun.management.internal.DiagnosticCommandArgumentInfo;" +}, +{ + "name":"[Lcom.sun.management.internal.DiagnosticCommandInfo;" +}, +{ + "name":"com.github.luben.zstd.ZstdInputStreamNoFinalizer", + "fields":[{"name":"dstPos"}, {"name":"srcPos"}] +}, +{ + "name":"com.sun.management.internal.DiagnosticCommandArgumentInfo", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","java.lang.String","java.lang.String","boolean","boolean","boolean","int"] }] +}, +{ + "name":"com.sun.management.internal.DiagnosticCommandInfo", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","java.lang.String","boolean","java.util.List"] }] +}, +{ + "name":"java.lang.Boolean", + "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.OutOfMemoryError" +}, +{ + "name":"java.util.Arrays", + "methods":[{"name":"asList","parameterTypes":["java.lang.Object[]"] }] +}, +{ + "name":"sun.management.VMManagementImpl", + "fields":[{"name":"compTimeMonitoringSupport"}, {"name":"currentThreadCpuTimeSupport"}, {"name":"objectMonitorUsageSupport"}, {"name":"otherThreadCpuTimeSupport"}, {"name":"remoteDiagnosticCommandsSupport"}, {"name":"synchronizerUsageSupport"}, {"name":"threadAllocatedMemorySupport"}, {"name":"threadContentionMonitoringSupport"}] +} +] \ No newline at end of file diff --git a/docker/native/native-image-configs/predefined-classes-config.json b/docker/native/native-image-configs/predefined-classes-config.json new file mode 100644 index 0000000000000..847895071fbcb --- /dev/null +++ b/docker/native/native-image-configs/predefined-classes-config.json @@ -0,0 +1,7 @@ +[ + { + "type":"agent-extracted", + "classes":[ + ] + } +] diff --git a/docker/native/native-image-configs/proxy-config.json b/docker/native/native-image-configs/proxy-config.json new file mode 100644 index 0000000000000..2a8e3c8a13689 --- /dev/null +++ b/docker/native/native-image-configs/proxy-config.json @@ -0,0 +1,5 @@ +[ + { + "interfaces":["sun.misc.SignalHandler"] + } +] \ No newline at end of file diff --git a/docker/native/native-image-configs/reflect-config.json b/docker/native/native-image-configs/reflect-config.json new file mode 100644 index 0000000000000..838e35d6f9b1b --- /dev/null +++ b/docker/native/native-image-configs/reflect-config.json @@ -0,0 +1,1275 @@ +[ +{ + "name":"[B" +}, +{ + "name":"[C" +}, +{ + "name":"[D" +}, +{ + "name":"[F" +}, +{ + "name":"[I" +}, +{ + "name":"[J" +}, +{ + "name":"[Ljava.io.File;" +}, +{ + "name":"[Ljava.lang.Class;" +}, +{ + "name":"[Ljava.lang.Integer;" +}, +{ + "name":"[Ljava.lang.Runnable;" +}, +{ + "name":"[Ljava.lang.String;" +}, +{ + "name":"[Ljava.rmi.server.ObjID;" +}, +{ + "name":"[Ljava.util.concurrent.CompletableFuture;" +}, +{ + "name":"[Ljava.util.concurrent.Future;" +}, +{ + "name":"[Ljavax.management.openmbean.CompositeData;" +}, +{ + "name":"[Lkafka.server.DelayedOperationPurgatory$WatcherList;" +}, +{ + "name":"[Lorg.apache.kafka.common.resource.PatternType;" +}, +{ + "name":"[Lorg.apache.kafka.common.security.auth.KafkaPrincipal;" +}, +{ + "name":"[Lscala.Option;" +}, +{ + "name":"[Lscala.Tuple2;" +}, +{ + "name":"[Lsun.security.pkcs.SignerInfo;" +}, +{ + "name":"[S" +}, +{ + "name":"[Z" +}, +{ + "name":"[[Ljava.lang.String;" +}, +{ + "name":"com.fasterxml.jackson.databind.ext.Java7HandlersImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.fasterxml.jackson.databind.ext.Java7SupportImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.AESCipher$General", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.AESKeyGenerator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.ARCFOURCipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DESCipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DESedeCipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DHParameters", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.GaloisCounterMode$AESGCM", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.HmacCore$HmacSHA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.HmacCore$HmacSHA384", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.HmacCore$HmacSHA512", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.HmacSHA1", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsKeyMaterialGenerator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsMasterSecretGenerator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsPrfGenerator$V12", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.management.GarbageCollectorMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.GcInfo", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.HotSpotDiagnosticMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.ThreadMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.UnixOperatingSystemMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.VMOption", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.internal.GarbageCollectorExtImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.management.internal.HotSpotDiagnostic", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.management.internal.HotSpotThreadImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.management.internal.OperatingSystemImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.security.jgss.Extender" +}, +{ + "name":"com.yammer.metrics.reporting.JmxReporter$Gauge", + "queryAllPublicConstructors":true +}, +{ + "name":"com.yammer.metrics.reporting.JmxReporter$GaugeMBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.yammer.metrics.reporting.JmxReporter$Histogram", + "queryAllPublicConstructors":true +}, +{ + "name":"com.yammer.metrics.reporting.JmxReporter$HistogramMBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.yammer.metrics.reporting.JmxReporter$Meter", + "queryAllPublicConstructors":true +}, +{ + "name":"com.yammer.metrics.reporting.JmxReporter$MeterMBean", + "queryAllPublicMethods":true, + "methods":[{"name":"getCount","parameterTypes":[] }, {"name":"getEventType","parameterTypes":[] }, {"name":"getFifteenMinuteRate","parameterTypes":[] }, {"name":"getFiveMinuteRate","parameterTypes":[] }, {"name":"getMeanRate","parameterTypes":[] }, {"name":"getOneMinuteRate","parameterTypes":[] }, {"name":"getRateUnit","parameterTypes":[] }] +}, +{ + "name":"com.yammer.metrics.reporting.JmxReporter$Timer", + "queryAllPublicConstructors":true +}, +{ + "name":"com.yammer.metrics.reporting.JmxReporter$TimerMBean", + "queryAllPublicMethods":true +}, +{ + "name":"io.netty.buffer.AbstractByteBufAllocator", + "queryAllDeclaredMethods":true +}, +{ + "name":"io.netty.buffer.AbstractReferenceCountedByteBuf", + "fields":[{"name":"refCnt"}] +}, +{ + "name":"io.netty.channel.AbstractChannelHandlerContext", + "fields":[{"name":"handlerState"}] +}, +{ + "name":"io.netty.channel.ChannelInboundHandlerAdapter", + "methods":[{"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }] +}, +{ + "name":"io.netty.channel.ChannelInitializer", + "methods":[{"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }] +}, +{ + "name":"io.netty.channel.ChannelOutboundBuffer", + "fields":[{"name":"totalPendingSize"}, {"name":"unwritable"}] +}, +{ + "name":"io.netty.channel.DefaultChannelConfig", + "fields":[{"name":"autoRead"}, {"name":"writeBufferWaterMark"}] +}, +{ + "name":"io.netty.channel.DefaultChannelPipeline", + "fields":[{"name":"estimatorHandle"}] +}, +{ + "name":"io.netty.channel.DefaultChannelPipeline$HeadContext", + "methods":[{"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }] +}, +{ + "name":"io.netty.channel.DefaultChannelPipeline$TailContext", + "methods":[{"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelRegistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelUnregistered","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelWritabilityChanged","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }] +}, +{ + "name":"io.netty.channel.DefaultFileRegion" +}, +{ + "name":"io.netty.channel.SimpleChannelInboundHandler", + "methods":[{"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }] +}, +{ + "name":"io.netty.channel.epoll.NativeDatagramPacketArray$NativeDatagramPacket" +}, +{ + "name":"io.netty.channel.socket.nio.NioSocketChannel", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"io.netty.channel.unix.PeerCredentials" +}, +{ + "name":"io.netty.handler.codec.ByteToMessageDecoder", + "methods":[{"name":"channelRead","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }, {"name":"userEventTriggered","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object"] }] +}, +{ + "name":"io.netty.handler.ssl.SslHandler", + "methods":[{"name":"bind","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, {"name":"channelActive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"channelReadComplete","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"close","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"connect","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.net.SocketAddress","java.net.SocketAddress","io.netty.channel.ChannelPromise"] }, {"name":"deregister","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"disconnect","parameterTypes":["io.netty.channel.ChannelHandlerContext","io.netty.channel.ChannelPromise"] }, {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }, {"name":"flush","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"read","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"write","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Object","io.netty.channel.ChannelPromise"] }] +}, +{ + "name":"io.netty.util.AbstractReferenceCounted", + "fields":[{"name":"refCnt"}] +}, +{ + "name":"io.netty.util.DefaultAttributeMap", + "fields":[{"name":"attributes"}] +}, +{ + "name":"io.netty.util.Recycler$DefaultHandle", + "fields":[{"name":"state"}] +}, +{ + "name":"io.netty.util.ReferenceCountUtil", + "queryAllDeclaredMethods":true +}, +{ + "name":"io.netty.util.ResourceLeakDetector$DefaultResourceLeak", + "fields":[{"name":"droppedRecords"}, {"name":"head"}] +}, +{ + "name":"io.netty.util.concurrent.DefaultPromise", + "fields":[{"name":"result"}] +}, +{ + "name":"io.netty.util.concurrent.SingleThreadEventExecutor", + "fields":[{"name":"state"}, {"name":"threadProperties"}] +}, +{ + "name":"io.netty.util.internal.NativeLibraryUtil", + "methods":[{"name":"loadLibrary","parameterTypes":["java.lang.String","boolean"] }] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields", + "fields":[{"name":"producerLimit"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields", + "fields":[{"name":"consumerIndex"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields", + "fields":[{"name":"producerIndex"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField", + "fields":[{"name":"consumerIndex"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField", + "fields":[{"name":"producerIndex"}] +}, +{ + "name":"io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField", + "fields":[{"name":"producerLimit"}] +}, +{ + "name":"java.beans.PropertyVetoException" +}, +{ + "name":"java.io.FileDescriptor" +}, +{ + "name":"java.io.Serializable", + "queryAllDeclaredMethods":true +}, +{ + "name":"java.lang.AutoCloseable", + "methods":[{"name":"close","parameterTypes":[] }] +}, +{ + "name":"java.lang.Boolean", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Byte", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Character", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.ClassLoader" +}, +{ + "name":"java.lang.ClassValue" +}, +{ + "name":"java.lang.Deprecated", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.Double", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Float", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Integer", + "fields":[{"name":"TYPE"}], + "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Iterable", + "queryAllDeclaredMethods":true +}, +{ + "name":"java.lang.Long", + "fields":[{"name":"TYPE"}], + "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Object", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.ObjectBeanInfo" +}, +{ + "name":"java.lang.ObjectCustomizer" +}, +{ + "name":"java.lang.ProcessHandle", + "methods":[{"name":"current","parameterTypes":[] }, {"name":"pid","parameterTypes":[] }] +}, +{ + "name":"java.lang.Short", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.StackTraceElement", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.String", + "fields":[{"name":"TYPE"}], + "methods":[{"name":"","parameterTypes":["java.lang.String"] }, {"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.Thread", + "fields":[{"name":"threadLocalRandomProbe"}] +}, +{ + "name":"java.lang.Void", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.invoke.VarHandle", + "methods":[{"name":"releaseFence","parameterTypes":[] }] +}, +{ + "name":"java.lang.management.BufferPoolMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.ClassLoadingMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.CompilationMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.LockInfo", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.ManagementFactory", + "methods":[{"name":"getRuntimeMXBean","parameterTypes":[] }] +}, +{ + "name":"java.lang.management.ManagementPermission", + "methods":[{"name":"","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.management.MemoryMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MemoryManagerMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MemoryPoolMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MemoryUsage", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MonitorInfo", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.PlatformLoggingMXBean", + "queryAllPublicMethods":true, + "methods":[{"name":"getLoggerLevel","parameterTypes":["java.lang.String"] }, {"name":"getLoggerNames","parameterTypes":[] }, {"name":"getParentLoggerName","parameterTypes":["java.lang.String"] }, {"name":"setLoggerLevel","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.lang.management.RuntimeMXBean", + "queryAllPublicMethods":true, + "methods":[{"name":"getInputArguments","parameterTypes":[] }] +}, +{ + "name":"java.lang.management.ThreadInfo", + "queryAllPublicMethods":true +}, +{ + "name":"java.math.BigDecimal" +}, +{ + "name":"java.math.BigInteger" +}, +{ + "name":"java.nio.Bits", + "fields":[{"name":"MAX_MEMORY"}, {"name":"UNALIGNED"}] +}, +{ + "name":"java.nio.Buffer", + "fields":[{"name":"address"}] +}, +{ + "name":"java.nio.ByteBuffer", + "methods":[{"name":"alignedSlice","parameterTypes":["int"] }] +}, +{ + "name":"java.nio.DirectByteBuffer", + "methods":[{"name":"","parameterTypes":["long","long"] }] +}, +{ + "name":"java.nio.channels.FileChannel" +}, +{ + "name":"java.nio.channels.spi.SelectorProvider", + "methods":[{"name":"openSocketChannel","parameterTypes":["java.net.ProtocolFamily"] }] +}, +{ + "name":"java.rmi.MarshalledObject" +}, +{ + "name":"java.rmi.Remote", + "queryAllPublicMethods":true +}, +{ + "name":"java.rmi.dgc.Lease" +}, +{ + "name":"java.rmi.dgc.VMID" +}, +{ + "name":"java.rmi.registry.Registry", + "queryAllPublicMethods":true +}, +{ + "name":"java.rmi.server.ObjID" +}, +{ + "name":"java.rmi.server.UID" +}, +{ + "name":"java.security.AlgorithmParametersSpi" +}, +{ + "name":"java.security.KeyStoreSpi" +}, +{ + "name":"java.security.SecureRandomParameters" +}, +{ + "name":"java.security.interfaces.RSAPrivateKey" +}, +{ + "name":"java.security.interfaces.RSAPublicKey" +}, +{ + "name":"java.util.AbstractCollection", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"java.util.AbstractList", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"java.util.AbstractMap", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true +}, +{ + "name":"java.util.Collection", + "queryAllDeclaredMethods":true +}, +{ + "name":"java.util.Date" +}, +{ + "name":"java.util.List", + "queryAllDeclaredMethods":true +}, +{ + "name":"java.util.Map", + "queryAllDeclaredMethods":true +}, +{ + "name":"java.util.PropertyPermission", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.util.concurrent.ForkJoinTask", + "fields":[{"name":"aux"}, {"name":"status"}] +}, +{ + "name":"java.util.concurrent.atomic.AtomicBoolean", + "fields":[{"name":"value"}] +}, +{ + "name":"java.util.concurrent.atomic.AtomicReference", + "fields":[{"name":"value"}] +}, +{ + "name":"java.util.concurrent.atomic.Striped64", + "fields":[{"name":"base"}, {"name":"cellsBusy"}] +}, +{ + "name":"java.util.concurrent.atomic.Striped64$Cell", + "fields":[{"name":"value"}] +}, +{ + "name":"java.util.logging.LogManager", + "methods":[{"name":"getLoggingMXBean","parameterTypes":[] }] +}, +{ + "name":"java.util.logging.LoggingMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.util.zip.CRC32C", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"java.util.zip.Checksum", + "methods":[{"name":"update","parameterTypes":["java.nio.ByteBuffer"] }] +}, +{ + "name":"javax.management.MBeanOperationInfo", + "queryAllPublicMethods":true, + "methods":[{"name":"getSignature","parameterTypes":[] }] +}, +{ + "name":"javax.management.MBeanServerBuilder", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"javax.management.ObjectName" +}, +{ + "name":"javax.management.StandardEmitterMBean", + "methods":[{"name":"cacheMBeanInfo","parameterTypes":["javax.management.MBeanInfo"] }, {"name":"getCachedMBeanInfo","parameterTypes":[] }, {"name":"getMBeanInfo","parameterTypes":[] }] +}, +{ + "name":"javax.management.openmbean.CompositeData" +}, +{ + "name":"javax.management.openmbean.OpenMBeanOperationInfoSupport" +}, +{ + "name":"javax.management.openmbean.TabularData" +}, +{ + "name":"javax.management.remote.rmi.RMIConnection", + "queryAllPublicMethods":true, + "methods":[{"name":"addNotificationListener","parameterTypes":["javax.management.ObjectName","javax.management.ObjectName","java.rmi.MarshalledObject","java.rmi.MarshalledObject","javax.security.auth.Subject"] }, {"name":"addNotificationListeners","parameterTypes":["javax.management.ObjectName[]","java.rmi.MarshalledObject[]","javax.security.auth.Subject[]"] }, {"name":"createMBean","parameterTypes":["java.lang.String","javax.management.ObjectName","java.rmi.MarshalledObject","java.lang.String[]","javax.security.auth.Subject"] }, {"name":"createMBean","parameterTypes":["java.lang.String","javax.management.ObjectName","javax.management.ObjectName","java.rmi.MarshalledObject","java.lang.String[]","javax.security.auth.Subject"] }, {"name":"createMBean","parameterTypes":["java.lang.String","javax.management.ObjectName","javax.management.ObjectName","javax.security.auth.Subject"] }, {"name":"createMBean","parameterTypes":["java.lang.String","javax.management.ObjectName","javax.security.auth.Subject"] }, {"name":"fetchNotifications","parameterTypes":["long","int","long"] }, {"name":"getAttribute","parameterTypes":["javax.management.ObjectName","java.lang.String","javax.security.auth.Subject"] }, {"name":"getAttributes","parameterTypes":["javax.management.ObjectName","java.lang.String[]","javax.security.auth.Subject"] }, {"name":"getConnectionId","parameterTypes":[] }, {"name":"getDefaultDomain","parameterTypes":["javax.security.auth.Subject"] }, {"name":"getDomains","parameterTypes":["javax.security.auth.Subject"] }, {"name":"getMBeanCount","parameterTypes":["javax.security.auth.Subject"] }, {"name":"getMBeanInfo","parameterTypes":["javax.management.ObjectName","javax.security.auth.Subject"] }, {"name":"getObjectInstance","parameterTypes":["javax.management.ObjectName","javax.security.auth.Subject"] }, {"name":"invoke","parameterTypes":["javax.management.ObjectName","java.lang.String","java.rmi.MarshalledObject","java.lang.String[]","javax.security.auth.Subject"] }, {"name":"isInstanceOf","parameterTypes":["javax.management.ObjectName","java.lang.String","javax.security.auth.Subject"] }, {"name":"isRegistered","parameterTypes":["javax.management.ObjectName","javax.security.auth.Subject"] }, {"name":"queryMBeans","parameterTypes":["javax.management.ObjectName","java.rmi.MarshalledObject","javax.security.auth.Subject"] }, {"name":"queryNames","parameterTypes":["javax.management.ObjectName","java.rmi.MarshalledObject","javax.security.auth.Subject"] }, {"name":"removeNotificationListener","parameterTypes":["javax.management.ObjectName","javax.management.ObjectName","java.rmi.MarshalledObject","java.rmi.MarshalledObject","javax.security.auth.Subject"] }, {"name":"removeNotificationListener","parameterTypes":["javax.management.ObjectName","javax.management.ObjectName","javax.security.auth.Subject"] }, {"name":"removeNotificationListeners","parameterTypes":["javax.management.ObjectName","java.lang.Integer[]","javax.security.auth.Subject"] }, {"name":"setAttribute","parameterTypes":["javax.management.ObjectName","java.rmi.MarshalledObject","javax.security.auth.Subject"] }, {"name":"setAttributes","parameterTypes":["javax.management.ObjectName","java.rmi.MarshalledObject","javax.security.auth.Subject"] }, {"name":"unregisterMBean","parameterTypes":["javax.management.ObjectName","javax.security.auth.Subject"] }] +}, +{ + "name":"javax.management.remote.rmi.RMIConnectionImpl_Skel" +}, +{ + "name":"javax.management.remote.rmi.RMIConnectionImpl_Stub", + "methods":[{"name":"","parameterTypes":["java.rmi.server.RemoteRef"] }] +}, +{ + "name":"javax.management.remote.rmi.RMIServer", + "queryAllPublicMethods":true, + "methods":[{"name":"getVersion","parameterTypes":[] }, {"name":"newClient","parameterTypes":["java.lang.Object"] }] +}, +{ + "name":"javax.management.remote.rmi.RMIServerImpl_Skel" +}, +{ + "name":"javax.management.remote.rmi.RMIServerImpl_Stub", + "methods":[{"name":"","parameterTypes":["java.rmi.server.RemoteRef"] }] +}, +{ + "name":"javax.security.auth.x500.X500Principal", + "fields":[{"name":"thisX500Name"}], + "methods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }] +}, +{ + "name":"jdk.internal.misc.Unsafe", + "methods":[{"name":"getUnsafe","parameterTypes":[] }] +}, +{ + "name":"jdk.management.jfr.ConfigurationInfo", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.EventTypeInfo", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.FlightRecorderMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.FlightRecorderMXBeanImpl", + "queryAllPublicConstructors":true, + "methods":[{"name":"cacheMBeanInfo","parameterTypes":["javax.management.MBeanInfo"] }, {"name":"getCachedMBeanInfo","parameterTypes":[] }, {"name":"getMBeanInfo","parameterTypes":[] }, {"name":"getNotificationInfo","parameterTypes":[] }] +}, +{ + "name":"jdk.management.jfr.RecordingInfo", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.SettingDescriptorInfo", + "queryAllPublicMethods":true +}, +{ + "name":"kafka.security.authorizer.AclAuthorizer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"kafka.tools.ConsoleProducer$LineMessageReader", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"kafka.tools.DefaultMessageFormatter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"kafka.utils.Log4jController", + "queryAllPublicConstructors":true, + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"kafka.utils.Log4jControllerMBean", + "queryAllPublicMethods":true +}, +{ + "name":"net.jpountz.lz4.LZ4HCJNICompressor", + "fields":[{"name":"INSTANCE"}], + "methods":[{"name":"","parameterTypes":["int"] }] +}, +{ + "name":"net.jpountz.lz4.LZ4HCJavaSafeCompressor", + "fields":[{"name":"INSTANCE"}], + "methods":[{"name":"","parameterTypes":["int"] }] +}, +{ + "name":"net.jpountz.lz4.LZ4JNICompressor", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.lz4.LZ4JNIFastDecompressor", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.lz4.LZ4JNISafeDecompressor", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.lz4.LZ4JavaSafeCompressor", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.lz4.LZ4JavaSafeFastDecompressor", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.lz4.LZ4JavaSafeSafeDecompressor", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.xxhash.StreamingXXHash32JNI$Factory", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.xxhash.StreamingXXHash32JavaSafe$Factory", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.xxhash.StreamingXXHash64JNI$Factory", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.xxhash.StreamingXXHash64JavaSafe$Factory", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.xxhash.XXHash32JNI", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.xxhash.XXHash32JavaSafe", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.xxhash.XXHash64JNI", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"net.jpountz.xxhash.XXHash64JavaSafe", + "fields":[{"name":"INSTANCE"}] +}, +{ + "name":"org.apache.kafka.clients.consumer.CooperativeStickyAssignor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.clients.consumer.RangeAssignor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.metrics.JmxReporter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.replica.RackAwareReplicaSelector", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.authenticator.AbstractLogin$DefaultLoginCallbackHandler", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.authenticator.DefaultLogin", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.authenticator.SaslClientCallbackHandler", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.kerberos.KerberosClientCallbackHandler", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.kerberos.KerberosLogin", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.plain.PlainLoginModule", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.plain.internals.PlainSaslServer$PlainSaslServerFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.scram.ScramLoginModule", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.scram.internals.ScramSaslClient$ScramSaslClientFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.security.scram.internals.ScramSaslServer$ScramSaslServerFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.serialization.ByteArraySerializer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.common.utils.AppInfoParser$AppInfo", + "queryAllPublicConstructors":true +}, +{ + "name":"org.apache.kafka.common.utils.AppInfoParser$AppInfoMBean", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.kafka.coordinator.group.assignor.RangeAssignor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.coordinator.group.assignor.UniformAssignor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.metadata.authorizer.StandardAuthorizer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.kafka.storage.internals.checkpoint.CleanShutdownFileHandler$Content", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.log4j.Appender", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.log4j.AppenderSkeleton", + "queryAllPublicMethods":true, + "methods":[{"name":"setThreshold","parameterTypes":["org.apache.log4j.Priority"] }] +}, +{ + "name":"org.apache.log4j.AppenderSkeletonBeanInfo" +}, +{ + "name":"org.apache.log4j.AppenderSkeletonCustomizer" +}, +{ + "name":"org.apache.log4j.ConsoleAppender", + "queryAllPublicMethods":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"setTarget","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"org.apache.log4j.ConsoleAppenderBeanInfo" +}, +{ + "name":"org.apache.log4j.ConsoleAppenderCustomizer" +}, +{ + "name":"org.apache.log4j.DailyRollingFileAppender", + "queryAllPublicMethods":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"setDatePattern","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"org.apache.log4j.DailyRollingFileAppenderBeanInfo" +}, +{ + "name":"org.apache.log4j.DailyRollingFileAppenderCustomizer" +}, +{ + "name":"org.apache.log4j.FileAppender", + "queryAllPublicMethods":true, + "methods":[{"name":"setFile","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"org.apache.log4j.FileAppenderBeanInfo" +}, +{ + "name":"org.apache.log4j.FileAppenderCustomizer" +}, +{ + "name":"org.apache.log4j.Layout", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.log4j.LayoutBeanInfo" +}, +{ + "name":"org.apache.log4j.LayoutCustomizer" +}, +{ + "name":"org.apache.log4j.Log4jLoggerFactory" +}, +{ + "name":"org.apache.log4j.PatternLayout", + "queryAllPublicMethods":true, + "methods":[{"name":"","parameterTypes":[] }, {"name":"setConversionPattern","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"org.apache.log4j.PatternLayoutBeanInfo" +}, +{ + "name":"org.apache.log4j.PatternLayoutCustomizer" +}, +{ + "name":"org.apache.log4j.WriterAppender", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.log4j.WriterAppenderBeanInfo" +}, +{ + "name":"org.apache.log4j.WriterAppenderCustomizer" +}, +{ + "name":"org.apache.log4j.spi.OptionHandler", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.zookeeper.ClientCnxnSocketNIO", + "methods":[{"name":"","parameterTypes":["org.apache.zookeeper.client.ZKClientConfig"] }] +}, +{ + "name":"org.apache.zookeeper.ClientCnxnSocketNetty", + "methods":[{"name":"","parameterTypes":["org.apache.zookeeper.client.ZKClientConfig"] }] +}, +{ + "name":"org.apache.zookeeper.ClientCnxnSocketNetty$ZKClientHandler", + "methods":[{"name":"channelInactive","parameterTypes":["io.netty.channel.ChannelHandlerContext"] }, {"name":"exceptionCaught","parameterTypes":["io.netty.channel.ChannelHandlerContext","java.lang.Throwable"] }] +}, +{ + "name":"org.apache.zookeeper.ClientCnxnSocketNetty$ZKClientPipelineFactory" +}, +{ + "name":"org.osgi.framework.BundleEvent" +}, +{ + "name":"scala.collection.convert.JavaCollectionWrappers$IterableWrapper", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "name":"scala.collection.convert.JavaCollectionWrappers$IterableWrapperTrait", + "queryAllDeclaredMethods":true +}, +{ + "name":"scala.collection.convert.JavaCollectionWrappers$MapWrapper", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "name":"scala.collection.convert.JavaCollectionWrappers$MutableBufferWrapper", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "name":"scala.collection.convert.JavaCollectionWrappers$MutableMapWrapper", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "name":"scala.collection.convert.JavaCollectionWrappers$SeqWrapper", + "allDeclaredFields":true, + "queryAllDeclaredMethods":true, + "queryAllDeclaredConstructors":true +}, +{ + "name":"scala.reflect.ScalaSignature", + "queryAllPublicMethods":true +}, +{ + "name":"sun.management.ClassLoadingImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.CompilationImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.ManagementFactoryHelper$1", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.ManagementFactoryHelper$PlatformLoggingImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.MemoryImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.MemoryManagerImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.MemoryPoolImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.RuntimeImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.misc.Signal", + "methods":[{"name":"","parameterTypes":["java.lang.String"] }, {"name":"getName","parameterTypes":[] }, {"name":"handle","parameterTypes":["sun.misc.Signal","sun.misc.SignalHandler"] }] +}, +{ + "name":"sun.misc.SignalHandler", + "methods":[{"name":"handle","parameterTypes":["sun.misc.Signal"] }] +}, +{ + "name":"sun.misc.Unsafe", + "fields":[{"name":"theUnsafe"}], + "methods":[{"name":"copyMemory","parameterTypes":["java.lang.Object","long","java.lang.Object","long","long"] }, {"name":"getAndAddLong","parameterTypes":["java.lang.Object","long","long"] }, {"name":"getAndSetObject","parameterTypes":["java.lang.Object","long","java.lang.Object"] }, {"name":"invokeCleaner","parameterTypes":["java.nio.ByteBuffer"] }, {"name":"storeFence","parameterTypes":[] }] +}, +{ + "name":"sun.misc.VM" +}, +{ + "name":"sun.nio.ch.SelectorImpl", + "fields":[{"name":"publicSelectedKeys"}, {"name":"selectedKeys"}] +}, +{ + "name":"sun.rmi.registry.RegistryImpl_Skel", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.rmi.registry.RegistryImpl_Stub", + "methods":[{"name":"","parameterTypes":["java.rmi.server.RemoteRef"] }] +}, +{ + "name":"sun.rmi.transport.DGCImpl_Skel", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.rmi.transport.DGCImpl_Stub", + "methods":[{"name":"","parameterTypes":["java.rmi.server.RemoteRef"] }] +}, +{ + "name":"sun.security.jgss.GSSContextImpl", + "allDeclaredFields":true +}, +{ + "name":"sun.security.jgss.krb5.Krb5MechFactory", + "methods":[{"name":"","parameterTypes":["sun.security.jgss.GSSCaller"] }] +}, +{ + "name":"sun.security.jgss.spi.MechanismFactory" +}, +{ + "name":"sun.security.krb5.KrbException", + "methods":[{"name":"returnCode","parameterTypes":[] }] +}, +{ + "name":"sun.security.krb5.PrincipalName", + "fields":[{"name":"nameStrings"}] +}, +{ + "name":"sun.security.pkcs12.PKCS12KeyStore", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.ConfigFile", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.DSA$SHA224withDSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.DSA$SHA256withDSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.JavaKeyStore$DualFormatJKS", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.JavaKeyStore$JKS", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.MD5", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.NativePRNG", + "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.security.SecureRandomParameters"] }] +}, +{ + "name":"sun.security.provider.SHA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA2$SHA224", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA2$SHA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA5$SHA384", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA5$SHA512", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.X509Factory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.certpath.PKIXCertPathValidator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.PSSParameters", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAKeyFactory$Legacy", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAPSSSignature", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSASignature$SHA224withRSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSASignature$SHA256withRSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.KeyManagerFactoryImpl$X509", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.SSLContextImpl$TLS12Context", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.SSLContextImpl$TLS13Context", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.SSLContextImpl$TLSContext", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.util.ObjectIdentifier" +}, +{ + "name":"sun.security.x509.AuthorityInfoAccessExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.AuthorityKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.BasicConstraintsExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.CRLDistributionPointsExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.CertificateExtensions" +}, +{ + "name":"sun.security.x509.CertificatePoliciesExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.ExtendedKeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.IssuerAlternativeNameExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.KeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.NetscapeCertTypeExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.PrivateKeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.SubjectAlternativeNameExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.SubjectKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +} +] \ No newline at end of file diff --git a/docker/native/native-image-configs/resource-config.json b/docker/native/native-image-configs/resource-config.json new file mode 100644 index 0000000000000..d3fb2031ee6ec --- /dev/null +++ b/docker/native/native-image-configs/resource-config.json @@ -0,0 +1,69 @@ +{ + "resources":{ + "includes":[{ + "pattern":"\\QMETA-INF/maven/org.xerial.snappy/snappy-java/pom.properties\\E" + }, { + "pattern":"\\QMETA-INF/native/libnetty_transport_native_epoll.so\\E" + }, { + "pattern":"\\QMETA-INF/native/libnetty_transport_native_epoll_x86_64.so\\E" + }, { + "pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E" + }, { + "pattern":"\\QMETA-INF/services/java.net.spi.InetAddressResolverProvider\\E" + }, { + "pattern":"\\QMETA-INF/services/java.net.spi.URLStreamHandlerProvider\\E" + }, { + "pattern":"\\QMETA-INF/services/java.nio.channels.spi.SelectorProvider\\E" + }, { + "pattern":"\\QMETA-INF/services/java.rmi.server.RMIClassLoaderSpi\\E" + }, { + "pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E" + }, { + "pattern":"\\QMETA-INF/services/javax.management.remote.JMXConnectorServerProvider\\E" + }, { + "pattern":"\\QMETA-INF/services/javax.security.auth.spi.LoginModule\\E" + }, { + "pattern":"\\Qkafka/kafka-version.properties\\E" + }, { + "pattern":"\\Qlinux/amd64/libzstd-jni-1.5.5-6.so\\E" + }, { + "pattern":"\\Qlinux/aarch64/libzstd-jni-1.5.5-6.so\\E" + }, { + "pattern":"\\Qlinux/amd64/libzstd-jni-1.5.5-11.so\\E" + }, { + "pattern":"\\Qlinux/aarch64/libzstd-jni-1.5.5-11.so\\E" + }, { + "pattern":"\\Qnet/jpountz/util/linux/amd64/liblz4-java.so\\E" + }, { + "pattern":"\\Qnet/jpountz/util/linux/aarch64/liblz4-java.so\\E" + }, { + "pattern":"\\Qorg-xerial-snappy.properties\\E" + }, { + "pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E" + }, { + "pattern":"\\Qorg/xerial/snappy/VERSION\\E" + }, { + "pattern":"\\Qorg/xerial/snappy/native/Linux/x86_64/libsnappyjava.so\\E" + }, { + "pattern":"\\Qorg/xerial/snappy/native/Linux/aarch64/libsnappyjava.so\\E" + }, { + "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt67b/nfkc.nrm\\E" + }, { + "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt67b/uprops.icu\\E" + }, { + "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/nfkc.nrm\\E" + }, { + "pattern":"java.base:\\Qjdk/internal/icu/impl/data/icudt72b/uprops.icu\\E" + }, { + "pattern":"java.base:\\Qsun/net/idn/uidna.spp\\E" + }, { + "pattern":"jdk.jfr:\\Qjdk/jfr/internal/query/view.ini\\E" + }]}, + "bundles":[{ + "name":"net.sourceforge.argparse4j.internal.ArgumentParserImpl", + "locales":["und"] + }, { + "name":"sun.security.util.Resources", + "classNames":["sun.security.util.Resources"] + }] +} \ No newline at end of file diff --git a/docker/native/native-image-configs/serialization-config.json b/docker/native/native-image-configs/serialization-config.json new file mode 100644 index 0000000000000..66df4a5dbdde8 --- /dev/null +++ b/docker/native/native-image-configs/serialization-config.json @@ -0,0 +1,128 @@ +{ + "types":[ + { + "name":"byte[]" + }, + { + "name":"java.lang.Double" + }, + { + "name":"java.lang.Enum" + }, + { + "name":"java.lang.Exception" + }, + { + "name":"java.lang.Long" + }, + { + "name":"java.lang.Number" + }, + { + "name":"java.lang.Object[]" + }, + { + "name":"java.lang.StackTraceElement" + }, + { + "name":"java.lang.StackTraceElement[]" + }, + { + "name":"java.lang.String" + }, + { + "name":"java.lang.Throwable" + }, + { + "name":"java.rmi.MarshalledObject" + }, + { + "name":"java.rmi.dgc.Lease" + }, + { + "name":"java.rmi.dgc.VMID" + }, + { + "name":"java.rmi.server.ObjID" + }, + { + "name":"java.rmi.server.ObjID[]" + }, + { + "name":"java.rmi.server.RemoteObject" + }, + { + "name":"java.rmi.server.RemoteStub" + }, + { + "name":"java.rmi.server.UID" + }, + { + "name":"java.util.ArrayList" + }, + { + "name":"java.util.Collections$EmptyList" + }, + { + "name":"java.util.HashSet" + }, + { + "name":"java.util.concurrent.TimeUnit" + }, + { + "name":"javax.management.Attribute" + }, + { + "name":"javax.management.AttributeList" + }, + { + "name":"javax.management.InstanceNotFoundException" + }, + { + "name":"javax.management.JMException" + }, + { + "name":"javax.management.MBeanAttributeInfo" + }, + { + "name":"javax.management.MBeanAttributeInfo[]" + }, + { + "name":"javax.management.MBeanConstructorInfo[]" + }, + { + "name":"javax.management.MBeanFeatureInfo" + }, + { + "name":"javax.management.MBeanInfo" + }, + { + "name":"javax.management.MBeanNotificationInfo[]" + }, + { + "name":"javax.management.MBeanOperationInfo" + }, + { + "name":"javax.management.MBeanOperationInfo[]" + }, + { + "name":"javax.management.MBeanParameterInfo[]" + }, + { + "name":"javax.management.ObjectName" + }, + { + "name":"javax.management.OperationsException" + }, + { + "name":"javax.management.remote.rmi.RMIConnectionImpl_Stub" + }, + { + "name":"javax.management.remote.rmi.RMIServerImpl_Stub" + } + ], + "lambdaCapturingTypes":[ + ], + "proxies":[ + ] +} \ No newline at end of file diff --git a/docker/test/docker_sanity_test.py b/docker/test/docker_sanity_test.py index 60007b5ded49e..d2135fb029507 100644 --- a/docker/test/docker_sanity_test.py +++ b/docker/test/docker_sanity_test.py @@ -197,7 +197,7 @@ def execute(self): self.assertEqual(total_errors, []) -class DockerSanityTestJVMCombinedMode(DockerSanityTest): +class DockerSanityTestCombinedMode(DockerSanityTest): def setUp(self) -> None: self.start_compose(f"{self.FIXTURES_DIR}/{constants.COMBINED_MODE_COMPOSE}") def tearDown(self) -> None: @@ -205,7 +205,7 @@ def tearDown(self) -> None: def test_bed(self): self.execute() -class DockerSanityTestJVMIsolatedMode(DockerSanityTest): +class DockerSanityTestIsolatedMode(DockerSanityTest): def setUp(self) -> None: self.start_compose(f"{self.FIXTURES_DIR}/{constants.ISOLATED_MODE_COMPOSE}") def tearDown(self) -> None: @@ -218,8 +218,8 @@ def run_tests(image, mode, fixtures_dir): DockerSanityTest.FIXTURES_DIR = fixtures_dir test_classes_to_run = [] - if mode == "jvm": - test_classes_to_run = [DockerSanityTestJVMCombinedMode, DockerSanityTestJVMIsolatedMode] + if mode == "jvm" or mode == "native": + test_classes_to_run = [DockerSanityTestCombinedMode, DockerSanityTestIsolatedMode] loader = unittest.TestLoader() suites_list = [] @@ -231,7 +231,7 @@ def run_tests(image, mode, fixtures_dir): outfile = open(f"{cur_directory}/report_{mode}.html", "w") runner = HTMLTestRunner.HTMLTestRunner( stream=outfile, - title='Test Report', + title=f'Test Report: Apache Kafka {mode.capitalize()} Docker Image', description='This demonstrates the report output.' ) result = runner.run(combined_suite)