Skip to content

Commit 0158b59

Browse files
authored
Test: Fix forbidden uses in test framework (elastic#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 elastic#32772
1 parent ab7e750 commit 0158b59

File tree

10 files changed

+44
-26
lines changed

10 files changed

+44
-26
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
@@ -41,8 +41,9 @@ compileTestJava.options.compilerArgs << '-Xlint:-rawtypes'
4141

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

4849
// 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: 3 additions & 3 deletions
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;
@@ -42,6 +41,7 @@
4241
import org.elasticsearch.common.settings.Settings;
4342
import org.elasticsearch.common.settings.SettingsModule;
4443
import org.elasticsearch.common.xcontent.NamedXContentRegistry;
44+
import org.elasticsearch.core.internal.io.IOUtils;
4545
import org.elasticsearch.env.Environment;
4646
import org.elasticsearch.env.TestEnvironment;
4747
import org.elasticsearch.index.Index;
@@ -194,8 +194,8 @@ protected static String expectedFieldName(String builderFieldName) {
194194

195195
@AfterClass
196196
public static void afterClass() throws Exception {
197-
org.apache.lucene.util.IOUtils.close(serviceHolder);
198-
org.apache.lucene.util.IOUtils.close(serviceHolderWithNoType);
197+
IOUtils.close(serviceHolder);
198+
IOUtils.close(serviceHolderWithNoType);
199199
serviceHolder = null;
200200
serviceHolderWithNoType = null;
201201
}

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

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

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

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

247252
protected final Logger logger = Loggers.getLogger(getClass());
248253
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.BytesStreamOutput;
3334
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
3435
import org.elasticsearch.common.io.stream.StreamInput;
@@ -64,6 +65,7 @@
6465
import java.net.InetSocketAddress;
6566
import java.net.ServerSocket;
6667
import java.net.Socket;
68+
import java.net.UnknownHostException;
6769
import java.util.ArrayList;
6870
import java.util.Arrays;
6971
import java.util.Collections;
@@ -1894,7 +1896,7 @@ public void testTimeoutPerConnection() throws IOException {
18941896
// 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
18951897
// into a connection timeout quickly. Yet other implementations can for instance can terminate the connection within the 3 way
18961898
// handshake which I haven't tested yet.
1897-
socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0), 1);
1899+
socket.bind(getLocalEphemeral(), 1);
18981900
socket.setReuseAddress(true);
18991901
DiscoveryNode first = new DiscoveryNode("TEST", new TransportAddress(socket.getInetAddress(),
19001902
socket.getLocalPort()), emptyMap(),
@@ -2008,7 +2010,7 @@ protected String handleRequest(TcpChannel mockChannel, String profileName, Strea
20082010

20092011
public void testTcpHandshakeTimeout() throws IOException {
20102012
try (ServerSocket socket = new MockServerSocket()) {
2011-
socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0), 1);
2013+
socket.bind(getLocalEphemeral(), 1);
20122014
socket.setReuseAddress(true);
20132015
DiscoveryNode dummy = new DiscoveryNode("TEST", new TransportAddress(socket.getInetAddress(),
20142016
socket.getLocalPort()), emptyMap(),
@@ -2029,7 +2031,7 @@ public void testTcpHandshakeTimeout() throws IOException {
20292031

20302032
public void testTcpHandshakeConnectionReset() throws IOException, InterruptedException {
20312033
try (ServerSocket socket = new MockServerSocket()) {
2032-
socket.bind(new InetSocketAddress(InetAddress.getLocalHost(), 0), 1);
2034+
socket.bind(getLocalEphemeral(), 1);
20332035
socket.setReuseAddress(true);
20342036
DiscoveryNode dummy = new DiscoveryNode("TEST", new TransportAddress(socket.getInetAddress(),
20352037
socket.getLocalPort()), emptyMap(),
@@ -2665,4 +2667,8 @@ public void onConnectionOpened(final Transport.Connection connection) {
26652667

26662668
protected abstract void closeConnectionChannel(Transport transport, Transport.Connection connection) throws IOException;
26672669

2670+
@SuppressForbidden(reason = "need local ephemeral port")
2671+
private InetSocketAddress getLocalEphemeral() throws UnknownHostException {
2672+
return new InetSocketAddress(InetAddress.getLocalHost(), 0);
2673+
}
26682674
}

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;
@@ -160,6 +161,7 @@ private void readMessage(MockChannel mockChannel, StreamInput input) throws IOEx
160161
}
161162

162163
@Override
164+
@SuppressForbidden(reason = "real socket for mocking remote connections")
163165
protected MockChannel initiateChannel(InetSocketAddress address, ActionListener<Void> connectListener) throws IOException {
164166
final MockSocket socket = new MockSocket();
165167
final MockChannel channel = new MockChannel(socket, address, "none");

0 commit comments

Comments
 (0)