Skip to content

Commit 2077135

Browse files
committed
Test: Fix forbidden uses in test framework (#32824)
This commit fixes existing uses of forbidden apis in the test framework and re-enables the forbidden apis check. It was previously completely disabled and had missed a rename of the forbidden apis signatures files. closes #32772
1 parent ff9c5dd commit 2077135

File tree

11 files changed

+42
-25
lines changed

11 files changed

+42
-25
lines changed

test/build.gradle

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,10 @@ subprojects {
2828
apply plugin: 'nebula.maven-base-publish'
2929
apply plugin: 'nebula.maven-scm'
3030

31-
32-
// the main files are actually test files, so use the appropriate forbidden api sigs
33-
forbiddenApisMain {
34-
signaturesURLs = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt'),
35-
PrecommitTasks.getResource('/forbidden/es-signatures.txt'),
36-
PrecommitTasks.getResource('/forbidden/es-test-signatures.txt')]
37-
}
38-
3931
// TODO: should we have licenses for our test deps?
4032
dependencyLicenses.enabled = false
4133
dependenciesInfo.enabled = false
4234

4335
// TODO: why is the test framework pulled in...
44-
forbiddenApisMain.enabled = false
4536
jarHell.enabled = false
4637
}

test/fixtures/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
subprojects {
3+
// fixtures are mostly external and by default we don't want to check forbidden apis
4+
forbiddenApisMain.enabled = false
5+
}

test/framework/build.gradle

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,9 @@ compileTestJava.options.compilerArgs << '-Xlint:-rawtypes'
4242

4343
// the main files are actually test files, so use the appropriate forbidden api sigs
4444
forbiddenApisMain {
45-
signaturesURLs = [PrecommitTasks.getResource('/forbidden/all-signatures.txt'),
46-
PrecommitTasks.getResource('/forbidden/test-signatures.txt')]
45+
signaturesURLs = [PrecommitTasks.getResource('/forbidden/jdk-signatures.txt'),
46+
PrecommitTasks.getResource('/forbidden/es-all-signatures.txt'),
47+
PrecommitTasks.getResource('/forbidden/es-test-signatures.txt')]
4748
}
4849

4950
// TODO: should we have licenses for our test deps?

test/framework/src/main/java/org/elasticsearch/indices/analysis/AnalysisFactoryTestCase.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ private static String toCamelCase(String s) {
6767
Matcher m = UNDERSCORE_THEN_ANYTHING.matcher(s);
6868
StringBuffer sb = new StringBuffer();
6969
while (m.find()) {
70-
m.appendReplacement(sb, m.group(1).toUpperCase());
70+
m.appendReplacement(sb, m.group(1).toUpperCase(Locale.ROOT));
7171
}
7272
m.appendTail(sb);
7373
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));

test/framework/src/main/java/org/elasticsearch/test/AbstractBuilderTestCase.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import com.carrotsearch.randomizedtesting.RandomizedTest;
2323
import com.carrotsearch.randomizedtesting.SeedUtils;
24-
2524
import org.apache.lucene.index.IndexReader;
2625
import org.apache.lucene.util.Accountable;
2726
import org.elasticsearch.Version;

test/framework/src/main/java/org/elasticsearch/test/ESTestCase.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import org.elasticsearch.cluster.metadata.IndexMetaData;
5454
import org.elasticsearch.common.CheckedBiFunction;
5555
import org.elasticsearch.common.CheckedRunnable;
56+
import org.elasticsearch.common.SuppressForbidden;
5657
import org.elasticsearch.common.bytes.BytesReference;
5758
import org.elasticsearch.common.io.PathUtils;
5859
import org.elasticsearch.common.io.PathUtilsForTesting;
@@ -197,13 +198,9 @@ public static void resetPortCounter() {
197198
}
198199

199200
static {
200-
System.setProperty("log4j.shutdownHookEnabled", "false");
201-
System.setProperty("log4j2.disable.jmx", "true");
202-
201+
setTestSysProps();
203202
LogConfigurator.loadLog4jPlugins();
204203

205-
// Enable Netty leak detection and monitor logger for logged leak errors
206-
System.setProperty("io.netty.leakDetection.level", "paranoid");
207204
String leakLoggerName = "io.netty.util.ResourceLeakDetector";
208205
Logger leakLogger = LogManager.getLogger(leakLoggerName);
209206
Appender leakAppender = new AbstractAppender(leakLoggerName, null,
@@ -242,6 +239,14 @@ public void append(LogEvent event) {
242239
Collections.sort(javaZoneIds);
243240
JAVA_ZONE_IDS = Collections.unmodifiableList(javaZoneIds);
244241
}
242+
@SuppressForbidden(reason = "force log4j and netty sysprops")
243+
private static void setTestSysProps() {
244+
System.setProperty("log4j.shutdownHookEnabled", "false");
245+
System.setProperty("log4j2.disable.jmx", "true");
246+
247+
// Enable Netty leak detection and monitor logger for logged leak errors
248+
System.setProperty("io.netty.leakDetection.level", "paranoid");
249+
}
245250

246251
protected final Logger logger = Loggers.getLogger(getClass());
247252
protected final DeprecationLogger deprecationLogger = new DeprecationLogger(logger);

test/framework/src/main/java/org/elasticsearch/test/fixture/AbstractHttpFixture.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
package org.elasticsearch.test.fixture;
2121

2222
import com.sun.net.httpserver.HttpServer;
23+
import org.elasticsearch.common.SuppressForbidden;
24+
import org.elasticsearch.common.io.PathUtils;
2325

2426
import java.io.ByteArrayOutputStream;
2527
import java.io.IOException;
@@ -32,7 +34,6 @@
3234
import java.net.URI;
3335
import java.nio.file.Files;
3436
import java.nio.file.Path;
35-
import java.nio.file.Paths;
3637
import java.nio.file.StandardCopyOption;
3738
import java.util.HashMap;
3839
import java.util.List;
@@ -48,6 +49,7 @@
4849
/**
4950
* Base class for test fixtures that requires a {@link HttpServer} to work.
5051
*/
52+
@SuppressForbidden(reason = "uses httpserver by design")
5153
public abstract class AbstractHttpFixture {
5254

5355
protected static final Map<String, String> TEXT_PLAIN_CONTENT_TYPE = contentType("text/plain; charset=utf-8");
@@ -62,7 +64,7 @@ public abstract class AbstractHttpFixture {
6264
private final Path workingDirectory;
6365

6466
protected AbstractHttpFixture(final String workingDir) {
65-
this.workingDirectory = Paths.get(Objects.requireNonNull(workingDir));
67+
this.workingDirectory = PathUtils.get(Objects.requireNonNull(workingDir));
6668
}
6769

6870
/**

test/framework/src/main/java/org/elasticsearch/test/junit/listeners/ReproduceInfoPrinter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.logging.log4j.Logger;
2323
import org.apache.lucene.util.Constants;
2424
import org.elasticsearch.common.Strings;
25+
import org.elasticsearch.common.SuppressForbidden;
2526
import org.elasticsearch.common.logging.Loggers;
2627
import org.elasticsearch.test.ESIntegTestCase;
2728
import org.elasticsearch.test.ESTestCase;
@@ -86,7 +87,12 @@ public void testFailure(Failure failure) throws Exception {
8687
gradleMessageBuilder.appendClientYamlSuiteProperties();
8788
}
8889

89-
System.err.println(b.toString());
90+
printToErr(b.toString());
91+
}
92+
93+
@SuppressForbidden(reason = "printing repro info")
94+
private static void printToErr(String s) {
95+
System.err.println(s);
9096
}
9197

9298
protected static class GradleMessageBuilder extends ReproduceErrorMessageBuilder {

test/framework/src/main/java/org/elasticsearch/transport/AbstractSimpleTransportTestCase.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.elasticsearch.action.ActionListenerResponseHandler;
3030
import org.elasticsearch.action.support.PlainActionFuture;
3131
import org.elasticsearch.cluster.node.DiscoveryNode;
32+
import org.elasticsearch.common.SuppressForbidden;
3233
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
3334
import org.elasticsearch.common.io.stream.StreamInput;
3435
import org.elasticsearch.common.io.stream.StreamOutput;
@@ -62,6 +63,7 @@
6263
import java.net.InetSocketAddress;
6364
import java.net.ServerSocket;
6465
import java.net.Socket;
66+
import java.net.UnknownHostException;
6567
import java.util.ArrayList;
6668
import java.util.Arrays;
6769
import java.util.Collections;
@@ -1895,7 +1897,7 @@ public void testTimeoutPerConnection() throws IOException {
18951897
// means that once we received an ACK from the client we just drop the packet on the floor (which is what we want) and we run
18961898
// into a connection timeout quickly. Yet other implementations can for instance can terminate the connection within the 3 way
18971899
// handshake which I haven't tested yet.
1898-
socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0), 1);
1900+
socket.bind(getLocalEphemeral(), 1);
18991901
socket.setReuseAddress(true);
19001902
DiscoveryNode first = new DiscoveryNode("TEST", new TransportAddress(socket.getInetAddress(),
19011903
socket.getLocalPort()), emptyMap(),
@@ -2018,7 +2020,7 @@ protected String handleRequest(TcpChannel mockChannel, String profileName, Strea
20182020

20192021
public void testTcpHandshakeTimeout() throws IOException {
20202022
try (ServerSocket socket = new MockServerSocket()) {
2021-
socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0), 1);
2023+
socket.bind(getLocalEphemeral(), 1);
20222024
socket.setReuseAddress(true);
20232025
DiscoveryNode dummy = new DiscoveryNode("TEST", new TransportAddress(socket.getInetAddress(),
20242026
socket.getLocalPort()), emptyMap(),
@@ -2039,7 +2041,7 @@ public void testTcpHandshakeTimeout() throws IOException {
20392041

20402042
public void testTcpHandshakeConnectionReset() throws IOException, InterruptedException {
20412043
try (ServerSocket socket = new MockServerSocket()) {
2042-
socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0), 1);
2044+
socket.bind(getLocalEphemeral(), 1);
20432045
socket.setReuseAddress(true);
20442046
DiscoveryNode dummy = new DiscoveryNode("TEST", new TransportAddress(socket.getInetAddress(),
20452047
socket.getLocalPort()), emptyMap(),
@@ -2669,4 +2671,8 @@ public void onConnectionOpened(final Transport.Connection connection) {
26692671

26702672
protected abstract void closeConnectionChannel(Transport transport, Transport.Connection connection) throws IOException;
26712673

2674+
@SuppressForbidden(reason = "need local ephemeral port")
2675+
private InetSocketAddress getLocalEphemeral() throws UnknownHostException {
2676+
return new InetSocketAddress(InetAddress.getLocalHost(), 0);
2677+
}
26722678
}

test/framework/src/main/java/org/elasticsearch/transport/MockTcpTransport.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
package org.elasticsearch.transport;
2020

21+
import org.elasticsearch.cli.SuppressForbidden;
2122
import org.elasticsearch.core.internal.io.IOUtils;
2223
import org.elasticsearch.Version;
2324
import org.elasticsearch.action.ActionListener;
@@ -171,6 +172,7 @@ private void readMessage(MockChannel mockChannel, StreamInput input) throws IOEx
171172
}
172173

173174
@Override
175+
@SuppressForbidden(reason = "real socket for mocking remote connections")
174176
protected MockChannel initiateChannel(DiscoveryNode node, TimeValue connectTimeout, ActionListener<Void> connectListener)
175177
throws IOException {
176178
InetSocketAddress address = node.getAddress().address();

0 commit comments

Comments
 (0)