/* * Licensed to Elasticsearch under one or more contributor * license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright * ownership. Elasticsearch 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. */ import org.elasticsearch.gradle.info.BuildParams import org.elasticsearch.gradle.test.RestIntegTestTask /* TODOs: * fix permissions such that only netty4 can open sockets etc? * fix the hack in the build framework that copies transport-netty4 into the integ test cluster * maybe figure out a way to run all tests from core with netty4/network? */ esplugin { description 'Netty 4 based transport implementation' classname 'org.elasticsearch.transport.Netty4Plugin' hasClientJar = true } compileTestJava.options.compilerArgs << "-Xlint:-cast,-rawtypes,-unchecked" dependencies { // network stack compile "io.netty:netty-buffer:${versions.netty}" compile "io.netty:netty-codec:${versions.netty}" compile "io.netty:netty-codec-http:${versions.netty}" compile "io.netty:netty-common:${versions.netty}" compile "io.netty:netty-handler:${versions.netty}" compile "io.netty:netty-resolver:${versions.netty}" compile "io.netty:netty-transport:${versions.netty}" } dependencyLicenses { mapping from: /netty-.*/, to: 'netty' } test { /* * We have to disable setting the number of available processors as tests in the same JVM randomize processors and will step on each * other if we allow them to set the number of available processors as it's set-once in Netty. */ systemProperty 'es.set.netty.runtime.available.processors', 'false' } integTestRunner { /* * We have to disable setting the number of available processors as tests in the same JVM randomize processors and will step on each * other if we allow them to set the number of available processors as it's set-once in Netty. */ systemProperty 'es.set.netty.runtime.available.processors', 'false' } TaskProvider pooledTest = tasks.register("pooledTest", Test) { include '**/*Tests.class' systemProperty 'es.set.netty.runtime.available.processors', 'false' systemProperty 'es.use_unpooled_allocator', 'false' } RestIntegTestTask pooledIntegTest = tasks.create("pooledIntegTest", RestIntegTestTask) { runner { systemProperty 'es.set.netty.runtime.available.processors', 'false' } } testClusters.pooledIntegTest { systemProperty 'es.use_unpooled_allocator', 'false' } check.dependsOn(pooledTest, pooledIntegTest) thirdPartyAudit { ignoreMissingClasses( // classes are missing // from io.netty.handler.codec.protobuf.ProtobufDecoder (netty) 'com.google.protobuf.ExtensionRegistry', 'com.google.protobuf.MessageLite$Builder', 'com.google.protobuf.MessageLite', 'com.google.protobuf.Parser', // from io.netty.logging.CommonsLoggerFactory (netty) 'org.apache.commons.logging.Log', 'org.apache.commons.logging.LogFactory', // from Log4j (deliberate, Netty will fallback to Log4j 2) 'org.apache.log4j.Level', 'org.apache.log4j.Logger', // from io.netty.handler.ssl.OpenSslEngine (netty) 'io.netty.internal.tcnative.Buffer', 'io.netty.internal.tcnative.Library', 'io.netty.internal.tcnative.SSL', 'io.netty.internal.tcnative.SSLContext', 'io.netty.internal.tcnative.SSLPrivateKeyMethod', // from io.netty.handler.ssl.util.BouncyCastleSelfSignedCertGenerator (netty) 'org.bouncycastle.cert.X509v3CertificateBuilder', 'org.bouncycastle.cert.jcajce.JcaX509CertificateConverter', 'org.bouncycastle.cert.jcajce.JcaX509v3CertificateBuilder', 'org.bouncycastle.jce.provider.BouncyCastleProvider', 'org.bouncycastle.operator.jcajce.JcaContentSignerBuilder', 'org.bouncycastle.asn1.x500.X500Name', // from io.netty.handler.ssl.JettyNpnSslEngine (netty) 'org.eclipse.jetty.npn.NextProtoNego$ClientProvider', 'org.eclipse.jetty.npn.NextProtoNego$ServerProvider', 'org.eclipse.jetty.npn.NextProtoNego', // from io.netty.handler.codec.marshalling.ChannelBufferByteInput (netty) 'org.jboss.marshalling.ByteInput', // from io.netty.handler.codec.marshalling.ChannelBufferByteOutput (netty) 'org.jboss.marshalling.ByteOutput', // from io.netty.handler.codec.marshalling.CompatibleMarshallingEncoder (netty) 'org.jboss.marshalling.Marshaller', // from io.netty.handler.codec.marshalling.ContextBoundUnmarshallerProvider (netty) 'org.jboss.marshalling.MarshallerFactory', 'org.jboss.marshalling.MarshallingConfiguration', 'org.jboss.marshalling.Unmarshaller', // from io.netty.util.internal.logging.InternalLoggerFactory (netty) - it's optional 'org.slf4j.helpers.FormattingTuple', 'org.slf4j.helpers.MessageFormatter', 'org.slf4j.Logger', 'org.slf4j.LoggerFactory', 'org.slf4j.spi.LocationAwareLogger', 'com.google.protobuf.ExtensionRegistryLite', 'com.google.protobuf.MessageLiteOrBuilder', 'com.google.protobuf.nano.CodedOutputByteBufferNano', 'com.google.protobuf.nano.MessageNano', 'com.jcraft.jzlib.Deflater', 'com.jcraft.jzlib.Inflater', 'com.jcraft.jzlib.JZlib$WrapperType', 'com.jcraft.jzlib.JZlib', 'com.ning.compress.BufferRecycler', 'com.ning.compress.lzf.ChunkDecoder', 'com.ning.compress.lzf.ChunkEncoder', 'com.ning.compress.lzf.LZFEncoder', 'com.ning.compress.lzf.util.ChunkDecoderFactory', 'com.ning.compress.lzf.util.ChunkEncoderFactory', 'lzma.sdk.lzma.Encoder', 'net.jpountz.lz4.LZ4Compressor', 'net.jpountz.lz4.LZ4Factory', 'net.jpountz.lz4.LZ4FastDecompressor', 'net.jpountz.xxhash.XXHash32', 'net.jpountz.xxhash.XXHashFactory', 'io.netty.internal.tcnative.CertificateCallback', 'io.netty.internal.tcnative.CertificateVerifier', 'io.netty.internal.tcnative.SessionTicketKey', 'io.netty.internal.tcnative.SniHostNameMatcher', 'io.netty.internal.tcnative.SSL', 'org.eclipse.jetty.alpn.ALPN$ClientProvider', 'org.eclipse.jetty.alpn.ALPN$ServerProvider', 'org.eclipse.jetty.alpn.ALPN', 'org.conscrypt.AllocatedBuffer', 'org.conscrypt.BufferAllocator', 'org.conscrypt.Conscrypt', 'org.conscrypt.HandshakeListener' ) ignoreViolations( 'io.netty.util.internal.PlatformDependent0', 'io.netty.util.internal.PlatformDependent0$1', 'io.netty.util.internal.PlatformDependent0$2', 'io.netty.util.internal.PlatformDependent0$3', 'io.netty.util.internal.PlatformDependent0$5', 'io.netty.util.internal.shaded.org.jctools.queues.BaseLinkedQueueConsumerNodeRef', 'io.netty.util.internal.shaded.org.jctools.queues.BaseLinkedQueueProducerNodeRef', 'io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields', 'io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields', 'io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields', 'io.netty.util.internal.shaded.org.jctools.queues.LinkedQueueNode', 'io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField', 'io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField', 'io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField', 'io.netty.util.internal.shaded.org.jctools.util.UnsafeAccess', 'io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess', 'io.netty.handler.ssl.util.OpenJdkSelfSignedCertGenerator' ) } if (BuildParams.inFipsJvm == false) { // BouncyCastleFIPS provides this class, so the exclusion is invalid when running CI in // a FIPS JVM with BouncyCastleFIPS Provider thirdPartyAudit.ignoreMissingClasses( 'org.bouncycastle.asn1.x500.X500Name' ) }