227 lines
9.0 KiB
Groovy
227 lines
9.0 KiB
Groovy
/*
|
|
* 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
|
|
import org.elasticsearch.gradle.test.rest.JavaRestTestPlugin
|
|
import org.elasticsearch.gradle.test.InternalClusterTestPlugin
|
|
|
|
apply plugin: 'elasticsearch.yaml-rest-test'
|
|
apply plugin: 'elasticsearch.java-rest-test'
|
|
apply plugin: 'elasticsearch.internal-cluster-test'
|
|
|
|
/*
|
|
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
|
|
}
|
|
|
|
dependencies {
|
|
// network stack
|
|
api "io.netty:netty-buffer:${versions.netty}"
|
|
api "io.netty:netty-codec:${versions.netty}"
|
|
api "io.netty:netty-codec-http:${versions.netty}"
|
|
api "io.netty:netty-common:${versions.netty}"
|
|
api "io.netty:netty-handler:${versions.netty}"
|
|
api "io.netty:netty-resolver:${versions.netty}"
|
|
api "io.netty:netty-transport:${versions.netty}"
|
|
}
|
|
|
|
restResources {
|
|
restApi {
|
|
includeCore '_common', 'cluster', 'nodes'
|
|
}
|
|
}
|
|
|
|
tasks.named("dependencyLicenses").configure {
|
|
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'
|
|
}
|
|
|
|
internalClusterTest {
|
|
systemProperty 'es.set.netty.runtime.available.processors', 'false'
|
|
}
|
|
|
|
javaRestTestRunner {
|
|
systemProperty 'es.set.netty.runtime.available.processors', 'false'
|
|
}
|
|
|
|
TaskProvider<Test> pooledTest = tasks.register("pooledTest", Test) {
|
|
include '**/*Tests.class'
|
|
systemProperty 'es.set.netty.runtime.available.processors', 'false'
|
|
systemProperty 'es.use_unpooled_allocator', 'false'
|
|
}
|
|
|
|
TaskProvider<Test> pooledInternalClusterTest = tasks.register("pooledInternalClusterTest", Test) {
|
|
include '**/*IT.class'
|
|
systemProperty 'es.set.netty.runtime.available.processors', 'false'
|
|
systemProperty 'es.use_unpooled_allocator', 'false'
|
|
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
|
|
SourceSet internalTestSourceSet = sourceSets.getByName(InternalClusterTestPlugin.SOURCE_SET_NAME)
|
|
setTestClassesDirs(internalTestSourceSet.getOutput().getClassesDirs())
|
|
setClasspath(internalTestSourceSet.getRuntimeClasspath())
|
|
}
|
|
|
|
RestIntegTestTask pooledJavaRestTest = tasks.create("pooledJavaRestTest", RestIntegTestTask) {
|
|
runner {
|
|
systemProperty 'es.set.netty.runtime.available.processors', 'false'
|
|
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
|
|
SourceSet javaRestTestSourceSet = sourceSets.getByName(JavaRestTestPlugin.SOURCE_SET_NAME)
|
|
setTestClassesDirs(javaRestTestSourceSet.getOutput().getClassesDirs())
|
|
setClasspath(javaRestTestSourceSet.getRuntimeClasspath())
|
|
}
|
|
}
|
|
testClusters.pooledJavaRestTest {
|
|
systemProperty 'es.use_unpooled_allocator', 'false'
|
|
}
|
|
check.dependsOn(pooledTest, pooledJavaRestTest, pooledInternalClusterTest)
|
|
|
|
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.LZFChunk',
|
|
'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',
|
|
|
|
'reactor.blockhound.BlockHound$Builder',
|
|
'reactor.blockhound.integration.BlockHoundIntegration'
|
|
)
|
|
|
|
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'
|
|
)
|
|
}
|