From 90730061437da5904817984ba39ba0fe595b4877 Mon Sep 17 00:00:00 2001 From: Kamlendra Date: Sun, 15 Mar 2026 15:26:14 -0700 Subject: [PATCH 1/3] SOLR-18123: Reduce test reliance on ALLOW_PATHS_SYSPROP --- .../admin/ShowFileRequestHandlerTest.java | 5 --- .../handler/admin/api/RenameCoreAPITest.java | 7 +--- .../DistributedDebugComponentTest.java | 5 --- .../TestPrometheusResponseWriter.java | 4 -- ...rentUpdateJettySolrClientBadInputTest.java | 5 --- .../HttpJettySolrClientCompatibilityTest.java | 10 ----- .../jetty/HttpJettySolrClientProxyTest.java | 7 ---- .../solr/client/solrj/SolrExampleTests.java | 4 -- .../solr/client/solrj/TestBatchUpdate.java | 6 --- .../client/solrj/TestSolrJErrorHandling.java | 6 --- .../ConcurrentUpdateSolrClientTestBase.java | 6 --- .../impl/HttpSolrClientBadInputTest.java | 6 --- .../solrj/impl/HttpSolrClientTestBase.java | 5 --- .../impl/LBHttpSolrClientBadInputTest.java | 6 --- .../InputStreamResponseParserTest.java | 5 --- .../solrj/response/TestSuggesterResponse.java | 5 --- .../java/org/apache/solr/SolrTestCase.java | 23 +++++++++++ .../solr/TestFrameworkAllowPathsTest.java | 41 +++++++++++++++++++ .../solrj/apache/BasicHttpSolrClientTest.java | 5 --- ...oncurrentUpdateSolrClientBadInputTest.java | 5 --- .../ConcurrentUpdateSolrClientTest.java | 6 --- .../apache/HttpSolrClientConPoolTest.java | 5 --- 22 files changed, 65 insertions(+), 112 deletions(-) create mode 100644 solr/test-framework/src/test/org/apache/solr/TestFrameworkAllowPathsTest.java diff --git a/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java index a22f78431373..6cf905e421e4 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java @@ -16,8 +16,6 @@ */ package org.apache.solr.handler.admin; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.io.IOException; import java.io.InputStream; import java.util.Set; @@ -34,7 +32,6 @@ import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.ContentStreamBase; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.NamedList; import org.apache.solr.core.SolrCore; import org.apache.solr.request.SolrQueryRequest; @@ -52,8 +49,6 @@ public class ShowFileRequestHandlerTest extends SolrTestCaseJ4 { @BeforeClass public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection("collection1") diff --git a/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java b/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java index b999e2b8cf58..fd9824c3f56c 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java @@ -16,7 +16,6 @@ */ package org.apache.solr.handler.admin.api; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; import static org.hamcrest.Matchers.containsString; import java.nio.charset.StandardCharsets; @@ -26,7 +25,6 @@ import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.request.CoresApi; import org.apache.solr.client.solrj.request.GenericV2SolrRequest; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; import org.junit.BeforeClass; @@ -47,10 +45,7 @@ public class RenameCoreAPITest extends SolrTestCaseJ4 { @ClassRule public static SolrJettyTestRule solrTestRule = new SolrJettyTestRule(); @BeforeClass - public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); - solrTestRule.startSolr(createTempDir()); + public static void beforeTest() throws Exception { solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection(DEFAULT_TEST_CORENAME) .withConfigSet(ExternalPaths.DEFAULT_CONFIGSET) diff --git a/solr/core/src/test/org/apache/solr/handler/component/DistributedDebugComponentTest.java b/solr/core/src/test/org/apache/solr/handler/component/DistributedDebugComponentTest.java index 0295bd6a5eb5..5384f9e88e5e 100644 --- a/solr/core/src/test/org/apache/solr/handler/component/DistributedDebugComponentTest.java +++ b/solr/core/src/test/org/apache/solr/handler/component/DistributedDebugComponentTest.java @@ -16,8 +16,6 @@ */ package org.apache.solr.handler.component; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -35,7 +33,6 @@ import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.ShardParams; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.NamedList; import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.util.ExternalPaths; @@ -57,8 +54,6 @@ public class DistributedDebugComponentTest extends SolrTestCaseJ4 { @BeforeClass public static void createThings() throws Exception { systemSetPropertyEnableUrlAllowList(false); - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir()); solrTestRule diff --git a/solr/core/src/test/org/apache/solr/response/TestPrometheusResponseWriter.java b/solr/core/src/test/org/apache/solr/response/TestPrometheusResponseWriter.java index a8250a1ba3a2..48c38429ccde 100644 --- a/solr/core/src/test/org/apache/solr/response/TestPrometheusResponseWriter.java +++ b/solr/core/src/test/org/apache/solr/response/TestPrometheusResponseWriter.java @@ -17,7 +17,6 @@ package org.apache.solr.response; import static org.apache.solr.client.solrj.response.InputStreamResponseParser.STREAM_KEY; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; import java.io.InputStream; import java.lang.invoke.MethodHandles; @@ -32,7 +31,6 @@ import org.apache.solr.client.solrj.request.MetricsRequest; import org.apache.solr.client.solrj.response.InputStreamResponseParser; import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.NamedList; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; @@ -49,8 +47,6 @@ public class TestPrometheusResponseWriter extends SolrTestCaseJ4 { @BeforeClass public static void beforeClass() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(LuceneTestCase.createTempDir()); solrTestRule.newCollection("core1").withConfigSet(ExternalPaths.DEFAULT_CONFIGSET).create(); solrTestRule.newCollection("core2").withConfigSet(ExternalPaths.DEFAULT_CONFIGSET).create(); diff --git a/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientBadInputTest.java b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientBadInputTest.java index 1c78cbc6463a..1dc7a65630e2 100644 --- a/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientBadInputTest.java +++ b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/ConcurrentUpdateJettySolrClientBadInputTest.java @@ -17,12 +17,9 @@ package org.apache.solr.client.solrj.jetty; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.util.ArrayList; import java.util.List; import org.apache.solr.SolrTestCaseJ4; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; import org.junit.BeforeClass; @@ -41,8 +38,6 @@ public class ConcurrentUpdateJettySolrClientBadInputTest extends SolrTestCaseJ4 @BeforeClass public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientCompatibilityTest.java b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientCompatibilityTest.java index b5aafdee9ba9..b7aacec46c75 100644 --- a/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientCompatibilityTest.java +++ b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientCompatibilityTest.java @@ -17,15 +17,12 @@ package org.apache.solr.client.solrj.jetty; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.util.Properties; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.client.solrj.RemoteSolrException; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.request.SolrQuery; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.embedded.JettyConfig; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.LogLevel; @@ -60,8 +57,6 @@ public void testConnectToOldNodesUsingHttp1() throws Exception { .withServlet(new ServletHolder(DebugServlet.class), "/debug/*") .useOnlyHttp1(true) .build(); - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir(), new Properties(), jettyConfig); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) @@ -89,8 +84,6 @@ public void testConnectToNewNodesUsingHttp1() throws Exception { .withServlet(new ServletHolder(DebugServlet.class), "/debug/*") .useOnlyHttp1(false) .build(); - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir(), new Properties(), jettyConfig); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) @@ -121,9 +114,6 @@ public void testConnectToOldNodesUsingHttp2() throws Exception { .withServlet(new ServletHolder(DebugServlet.class), "/debug/*") .useOnlyHttp1(true) .build(); - - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir(), new Properties(), jettyConfig); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientProxyTest.java b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientProxyTest.java index 20d44bc107da..bad25fe65e53 100644 --- a/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientProxyTest.java +++ b/solr/solrj-jetty/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientProxyTest.java @@ -16,8 +16,6 @@ */ package org.apache.solr.client.solrj.jetty; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import com.carrotsearch.randomizedtesting.RandomizedTest; import java.util.Arrays; import java.util.Objects; @@ -28,7 +26,6 @@ import org.apache.solr.client.solrj.impl.HttpSolrClientBase; import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SocketProxy; import org.apache.solr.util.SolrJettyTestRule; @@ -46,10 +43,6 @@ public class HttpJettySolrClientProxyTest extends SolrTestCaseJ4 { @BeforeClass public static void beforeTest() throws Exception { RandomizedTest.assumeFalse(sslConfig.isSSLMode()); - - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, - ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); // Needed for configset location solrTestRule.enableProxy(); solrTestRule.startSolr(createTempDir()); // Actually only need extremely minimal configSet but just use the default diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java index 4f7c4029e125..38c596e6d490 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java @@ -17,7 +17,6 @@ package org.apache.solr.client.solrj; import static org.apache.solr.common.params.UpdateParams.ASSUME_CONTENT_TYPE; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.core.StringContains.containsString; @@ -77,7 +76,6 @@ import org.apache.solr.common.params.FacetParams; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.util.ContentStreamBase; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.Pair; import org.apache.solr.util.ExternalPaths; @@ -101,8 +99,6 @@ public abstract class SolrExampleTests extends SolrExampleTestsBase { @BeforeClass public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java b/solr/solrj/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java index 85dd1c8266dc..32165843828f 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/TestBatchUpdate.java @@ -16,8 +16,6 @@ */ package org.apache.solr.client.solrj; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.io.IOException; import java.util.Iterator; import org.apache.solr.SolrTestCaseJ4; @@ -29,7 +27,6 @@ import org.apache.solr.client.solrj.request.XMLRequestWriter; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; import org.junit.BeforeClass; @@ -48,9 +45,6 @@ public class TestBatchUpdate extends SolrTestCaseJ4 { @BeforeClass public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, - ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); // Needed for configset location solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection("collection1") diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/TestSolrJErrorHandling.java b/solr/solrj/src/test/org/apache/solr/client/solrj/TestSolrJErrorHandling.java index 2a5ca071267c..7795057a1096 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/TestSolrJErrorHandling.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/TestSolrJErrorHandling.java @@ -16,8 +16,6 @@ */ package org.apache.solr.client.solrj; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.io.BufferedOutputStream; import java.io.IOException; import java.io.InputStream; @@ -44,7 +42,6 @@ import org.apache.solr.client.solrj.request.XMLRequestWriter; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; import org.junit.BeforeClass; @@ -63,9 +60,6 @@ public class TestSolrJErrorHandling extends SolrTestCaseJ4 { @BeforeClass public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, - ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); // Needed for configset location solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection("collection1") diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTestBase.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTestBase.java index 4c2eca633c94..a8ee4a401b96 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTestBase.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrClientTestBase.java @@ -17,8 +17,6 @@ package org.apache.solr.client.solrj.impl; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; @@ -46,7 +44,6 @@ import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.ExecutorUtil; import org.apache.solr.common.util.SolrNamedThreadFactory; import org.apache.solr.embedded.JettyConfig; @@ -195,9 +192,6 @@ public void run() { public static void beforeTest() throws Exception { JettyConfig jettyConfig = JettyConfig.builder().withServlet(new ServletHolder(TestServlet.class), "/cuss/*").build(); - - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir(), new Properties(), jettyConfig); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBadInputTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBadInputTest.java index 8eaa9feb82ae..37c1dc0211f8 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBadInputTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBadInputTest.java @@ -17,14 +17,11 @@ package org.apache.solr.client.solrj.impl; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.util.ArrayList; import java.util.List; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.apache.HttpSolrClient; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; import org.junit.BeforeClass; @@ -42,9 +39,6 @@ public class HttpSolrClientBadInputTest extends SolrTestCaseJ4 { @BeforeClass public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, - ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); // Needed for configset location solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection("collection1") diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java index 73d6d19ccfe2..0fe57ad5b5ac 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java @@ -17,7 +17,6 @@ package org.apache.solr.client.solrj.impl; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; import static org.hamcrest.CoreMatchers.instanceOf; import java.io.IOException; @@ -53,7 +52,6 @@ import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.MapSolrParams; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.IOUtils; import org.apache.solr.common.util.NamedList; import org.apache.solr.embedded.JettyConfig; @@ -93,9 +91,6 @@ public static void beforeTest() throws Exception { .withServlet(new ServletHolder(SlowStreamServlet.class), SLOW_STREAM_SERVLET_REGEX) .withSSLConfig(sslConfig.buildServerSSLConfig()) .build(); - - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir(), new Properties(), jettyConfig); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBadInputTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBadInputTest.java index 647f912b11d2..df69c1938d8d 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBadInputTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBadInputTest.java @@ -17,14 +17,11 @@ package org.apache.solr.client.solrj.impl; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.util.ArrayList; import java.util.List; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.apache.LBHttpSolrClient; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; import org.junit.BeforeClass; @@ -41,9 +38,6 @@ public class LBHttpSolrClientBadInputTest extends SolrTestCaseJ4 { @BeforeClass public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, - ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); // Needed for configset location solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection("collection1") diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/response/InputStreamResponseParserTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/response/InputStreamResponseParserTest.java index 3332e82aa1ce..2c9eb2b71e58 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/response/InputStreamResponseParserTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/response/InputStreamResponseParserTest.java @@ -16,8 +16,6 @@ */ package org.apache.solr.client.solrj.response; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -31,7 +29,6 @@ import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.NamedList; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; @@ -51,8 +48,6 @@ private static InputStream getResponse() { @BeforeClass public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/response/TestSuggesterResponse.java b/solr/solrj/src/test/org/apache/solr/client/solrj/response/TestSuggesterResponse.java index cf66ac7a63f7..5f35eace256b 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/response/TestSuggesterResponse.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/response/TestSuggesterResponse.java @@ -16,8 +16,6 @@ */ package org.apache.solr.client.solrj.response; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.io.IOException; import java.util.List; import java.util.Map; @@ -29,7 +27,6 @@ import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.CommonParams; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; import org.junit.BeforeClass; @@ -43,8 +40,6 @@ public class TestSuggesterResponse extends SolrTestCaseJ4 { @BeforeClass public static void beforeClass() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java index a29e3d0da43f..b88af001dc73 100644 --- a/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java +++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCase.java @@ -36,6 +36,7 @@ import org.apache.lucene.tests.util.VerifyTestClassNamingConvention; import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.ObjectReleaseTracker; +import org.apache.solr.core.CoreContainer; import org.apache.solr.servlet.SolrDispatchFilter; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.LogLevelTestRule; @@ -148,6 +149,28 @@ public static void beforeSolrTestCase() { ExternalPaths.DEFAULT_CONFIGSET); } + final String allowPaths = EnvUtils.getProperty(CoreContainer.ALLOW_PATHS_SYSPROP); + if (null != allowPaths) { + log.info( + "Test env includes allow-paths system property '{}'='{}'", + CoreContainer.ALLOW_PATHS_SYSPROP, + allowPaths); + } else if (Files.isReadable(ExternalPaths.SERVER_HOME) + && Files.isDirectory(ExternalPaths.SERVER_HOME)) { + log.info( + "Setting '{}' system property to test-framework derived value of '{}'", + CoreContainer.ALLOW_PATHS_SYSPROP, + ExternalPaths.SERVER_HOME); + System.setProperty(CoreContainer.ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toString()); + } else { + log.warn( + "System property '{}' is not already set, but test-framework derived value ('{}') either " + + "does not exist or is not a readable directory; tests may need to set the property " + + "explicitly when loading external configsets", + CoreContainer.ALLOW_PATHS_SYSPROP, + ExternalPaths.SERVER_HOME); + } + // set solr.install.dir needed by some test configs outside the test sandbox (!) if (ExternalPaths.SOURCE_HOME != null) { System.setProperty("solr.install.dir", ExternalPaths.SOURCE_HOME.toString()); diff --git a/solr/test-framework/src/test/org/apache/solr/TestFrameworkAllowPathsTest.java b/solr/test-framework/src/test/org/apache/solr/TestFrameworkAllowPathsTest.java new file mode 100644 index 000000000000..89b877aa30dc --- /dev/null +++ b/solr/test-framework/src/test/org/apache/solr/TestFrameworkAllowPathsTest.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF 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. + */ +package org.apache.solr; + +import org.apache.solr.util.ExternalPaths; +import org.apache.solr.util.SolrJettyTestRule; +import org.junit.BeforeClass; +import org.junit.ClassRule; +import org.junit.Test; + +public class TestFrameworkAllowPathsTest extends SolrTestCaseJ4 { + + @ClassRule public static final SolrJettyTestRule solrTestRule = new SolrJettyTestRule(); + + @BeforeClass + public static void beforeClass() throws Exception { + solrTestRule.startSolr(createTempDir()); + solrTestRule.newCollection().withConfigSet(ExternalPaths.TECHPRODUCTS_CONFIGSET).create(); + } + + @Test + public void testExternalConfigsetIsAllowedByDefault() { + var coreContainer = solrTestRule.getCoreContainer(); + coreContainer.assertPathAllowed(ExternalPaths.SERVER_HOME); + assertTrue(coreContainer.getAllowPaths().contains(ExternalPaths.SERVER_HOME.normalize())); + } +} diff --git a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/BasicHttpSolrClientTest.java b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/BasicHttpSolrClientTest.java index 6e5320ae7ae5..7855a676d58d 100644 --- a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/BasicHttpSolrClientTest.java +++ b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/BasicHttpSolrClientTest.java @@ -16,8 +16,6 @@ */ package org.apache.solr.client.solrj.apache; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import jakarta.servlet.http.Cookie; import java.io.IOException; import java.io.InputStream; @@ -68,7 +66,6 @@ import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.NamedList; import org.apache.solr.embedded.JettyConfig; import org.apache.solr.util.ExternalPaths; @@ -100,8 +97,6 @@ public static void beforeTest() throws Exception { .withServlet(new ServletHolder(DebugServlet.class), "/debug/*") .withServlet(new ServletHolder(SlowStreamServlet.class), "/slowStream/*") .build(); - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir(), new Properties(), jettyConfig); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/ConcurrentUpdateSolrClientBadInputTest.java b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/ConcurrentUpdateSolrClientBadInputTest.java index 8fec38bf3188..276249ae0a2e 100644 --- a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/ConcurrentUpdateSolrClientBadInputTest.java +++ b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/ConcurrentUpdateSolrClientBadInputTest.java @@ -17,13 +17,10 @@ package org.apache.solr.client.solrj.apache; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.util.ArrayList; import java.util.List; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.util.ExternalPaths; import org.apache.solr.util.SolrJettyTestRule; import org.junit.BeforeClass; @@ -42,8 +39,6 @@ public class ConcurrentUpdateSolrClientBadInputTest extends SolrTestCaseJ4 { @BeforeClass public static void beforeTest() throws Exception { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/ConcurrentUpdateSolrClientTest.java b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/ConcurrentUpdateSolrClientTest.java index 48dc85a8d034..7de8576770aa 100644 --- a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/ConcurrentUpdateSolrClientTest.java +++ b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/ConcurrentUpdateSolrClientTest.java @@ -16,8 +16,6 @@ */ package org.apache.solr.client.solrj.apache; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; @@ -41,7 +39,6 @@ import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.common.SolrInputDocument; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.ExecutorUtil; import org.apache.solr.common.util.SolrNamedThreadFactory; import org.apache.solr.embedded.JettyConfig; @@ -139,9 +136,6 @@ public void update( public static void beforeTest() throws Exception { JettyConfig jettyConfig = JettyConfig.builder().withServlet(new ServletHolder(TestServlet.class), "/cuss/*").build(); - - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir(), new Properties(), jettyConfig); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) diff --git a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/HttpSolrClientConPoolTest.java b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/HttpSolrClientConPoolTest.java index cbce7fe26cfb..52be3248596a 100644 --- a/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/HttpSolrClientConPoolTest.java +++ b/solr/test-framework/src/test/org/apache/solr/client/solrj/apache/HttpSolrClientConPoolTest.java @@ -16,8 +16,6 @@ */ package org.apache.solr.client.solrj.apache; -import static org.apache.solr.core.CoreContainer.ALLOW_PATHS_SYSPROP; - import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -34,7 +32,6 @@ import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.ModifiableSolrParams; -import org.apache.solr.common.util.EnvUtils; import org.apache.solr.common.util.ExecutorUtil; import org.apache.solr.common.util.SolrNamedThreadFactory; import org.apache.solr.util.ExternalPaths; @@ -51,8 +48,6 @@ public class HttpSolrClientConPoolTest extends SolrTestCaseJ4 { @BeforeClass public static void beforeTest() throws SolrServerException, IOException { - EnvUtils.setProperty( - ALLOW_PATHS_SYSPROP, ExternalPaths.SERVER_HOME.toAbsolutePath().toString()); solrTestRule.startSolr(createTempDir()); solrTestRule .newCollection(DEFAULT_TEST_COLLECTION_NAME) From c7814df459e71106cf5208e780e015daf6e20776 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Wed, 18 Mar 2026 07:47:31 -0400 Subject: [PATCH 2/3] tidy --- .../org/apache/solr/handler/admin/api/RenameCoreAPITest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java b/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java index 651c3bc2b4d7..5a3185400264 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java @@ -45,7 +45,8 @@ public class RenameCoreAPITest extends SolrTestCaseJ4 { @ClassRule public static SolrJettyTestRule solrTestRule = new SolrJettyTestRule(); @BeforeClass - public static void beforeTest() throws Exception { solrTestRule.startSolr(createTempDir()); + public static void beforeTest() throws Exception { + solrTestRule.startSolr(createTempDir()); solrTestRule.startSolr(); solrTestRule.newCollection().withConfigSet(ExternalPaths.DEFAULT_CONFIGSET).create(); } From ed3c3a36c473656c19a094a8a59b6d771435cbef Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Wed, 18 Mar 2026 08:13:43 -0400 Subject: [PATCH 3/3] Fix merge error --- .../org/apache/solr/handler/admin/api/RenameCoreAPITest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java b/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java index 5a3185400264..f3c2b82207a5 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/api/RenameCoreAPITest.java @@ -46,7 +46,6 @@ public class RenameCoreAPITest extends SolrTestCaseJ4 { @BeforeClass public static void beforeTest() throws Exception { - solrTestRule.startSolr(createTempDir()); solrTestRule.startSolr(); solrTestRule.newCollection().withConfigSet(ExternalPaths.DEFAULT_CONFIGSET).create(); }