From e699c6ef0f29d58b8546cb15408cd9ffba4e3d9f Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Tue, 27 Aug 2019 15:07:03 -0700 Subject: [PATCH 1/2] Add test tasks for unpooled and direct buffer pooling to netty Some netty behavior is controlled by system properties. While we want to test with the defaults for Elasticsearch for most tests, within netty we want to ensure these netty settings exhibit correct behavior. This commit adds variants of test and integTest tasks for netty which set the unpooled and direct buffer pooled allocators. relates #45881 --- modules/transport-netty4/build.gradle | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/modules/transport-netty4/build.gradle b/modules/transport-netty4/build.gradle index ff21cfa30d357..40ed27b067716 100644 --- a/modules/transport-netty4/build.gradle +++ b/modules/transport-netty4/build.gradle @@ -17,6 +17,8 @@ * under the License. */ +import org.elasticsearch.gradle.test.RestIntegTestTask + /* TODOs: * fix permissions such that only netty4 can open sockets etc? @@ -67,6 +69,35 @@ integTestRunner { systemProperty 'io.netty.allocator.numDirectArenas', '0' } +TaskProvider unpooledTest = tasks.register("unpooledTest", Test) { + include '**/*Tests.class' + systemProperty 'es.set.netty.runtime.available.processors', 'false' + systemProperty 'io.netty.allocator.type', 'unpooled' +} +TaskProvider directBufferPoolingTest = tasks.register("directBufferPoolingTest", Test) { + include '**/*Tests.class' + systemProperty 'es.set.netty.runtime.available.processors', 'false' + systemProperty 'io.netty.allocator.numDirectArenas', '2' +} +// TODO: we can't use task avoidance here because RestIntegTestTask does the testcluster creation +RestIntegTestTask unpooledIntegTest = tasks.create("unpooledIntegTest", RestIntegTestTask) { + runner { + systemProperty 'es.set.netty.runtime.available.processors', 'false' + } +} +testClusters.unpooledIntegTest { + systemProperty 'io.netty.allocator.type', 'unpooled' +} +RestIntegTestTask directBufferPoolingIntegTest = tasks.create("directBufferPoolingIntegTest", RestIntegTestTask) { + runner { + systemProperty 'es.set.netty.runtime.available.processors', 'false' + } +} +testClusters.directBufferPoolingIntegTest { + systemProperty 'io.netty.allocator.numDirectArenas', '2' +} +check.dependsOn(unpooledTest, directBufferPoolingTest, unpooledIntegTest, directBufferPoolingIntegTest) + thirdPartyAudit { ignoreMissingClasses ( // classes are missing From 7b369db0a212aaa7d340f3879fd297f1e5ecc12d Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Thu, 29 Aug 2019 11:20:03 -0700 Subject: [PATCH 2/2] update tests --- modules/transport-netty4/build.gradle | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/modules/transport-netty4/build.gradle b/modules/transport-netty4/build.gradle index 40ed27b067716..4bee6cfd4dfbd 100644 --- a/modules/transport-netty4/build.gradle +++ b/modules/transport-netty4/build.gradle @@ -69,34 +69,21 @@ integTestRunner { systemProperty 'io.netty.allocator.numDirectArenas', '0' } -TaskProvider unpooledTest = tasks.register("unpooledTest", Test) { +TaskProvider pooledTest = tasks.register("pooledTest", Test) { include '**/*Tests.class' systemProperty 'es.set.netty.runtime.available.processors', 'false' - systemProperty 'io.netty.allocator.type', 'unpooled' -} -TaskProvider directBufferPoolingTest = tasks.register("directBufferPoolingTest", Test) { - include '**/*Tests.class' - systemProperty 'es.set.netty.runtime.available.processors', 'false' - systemProperty 'io.netty.allocator.numDirectArenas', '2' + systemProperty 'io.netty.allocator.type', 'pooled' } // TODO: we can't use task avoidance here because RestIntegTestTask does the testcluster creation -RestIntegTestTask unpooledIntegTest = tasks.create("unpooledIntegTest", RestIntegTestTask) { - runner { - systemProperty 'es.set.netty.runtime.available.processors', 'false' - } -} -testClusters.unpooledIntegTest { - systemProperty 'io.netty.allocator.type', 'unpooled' -} -RestIntegTestTask directBufferPoolingIntegTest = tasks.create("directBufferPoolingIntegTest", RestIntegTestTask) { +RestIntegTestTask pooledIntegTest = tasks.create("pooledIntegTest", RestIntegTestTask) { runner { systemProperty 'es.set.netty.runtime.available.processors', 'false' } } -testClusters.directBufferPoolingIntegTest { - systemProperty 'io.netty.allocator.numDirectArenas', '2' +testClusters.pooledIntegTest { + systemProperty 'io.netty.allocator.type', 'pooled' } -check.dependsOn(unpooledTest, directBufferPoolingTest, unpooledIntegTest, directBufferPoolingIntegTest) +check.dependsOn(pooledTest, pooledIntegTest) thirdPartyAudit { ignoreMissingClasses (