From 08720cf5c0693f17d234feb248b1927ff57add90 Mon Sep 17 00:00:00 2001 From: Robert Muir Date: Tue, 3 Dec 2019 18:49:36 -0500 Subject: [PATCH] SOLR-14000: clean up more static field leaks in tests On windows, these objects can't be inspected due to security restrictions. So the test runner fails the tests since it does not know how big the leak is. --- .../solr/prometheus/scraper/SolrStandaloneScraperTest.java | 2 ++ .../cloud/OverseerCollectionConfigSetProcessorTest.java | 1 + solr/core/src/test/org/apache/solr/cloud/OverseerTest.java | 2 ++ .../src/test/org/apache/solr/cloud/TestWithCollection.java | 6 ++++++ .../solr/cloud/autoscaling/ComputePlanActionTest.java | 6 ++++++ .../cloud/autoscaling/NodeAddedTriggerIntegrationTest.java | 6 ++++++ .../cloud/autoscaling/NodeLostTriggerIntegrationTest.java | 6 ++++++ .../solr/cloud/autoscaling/TriggerIntegrationTest.java | 6 ++++++ .../cloud/autoscaling/sim/TestSimClusterStateProvider.java | 1 + .../cloud/autoscaling/sim/TestSnapshotCloudManager.java | 6 ++++++ .../src/test/org/apache/solr/core/TestJmxIntegration.java | 1 + .../solr/handler/admin/MetricsHistoryHandlerTest.java | 5 +++++ .../solr/handler/tagger/EmbeddedSolrNoSerializeTest.java | 6 ++++++ .../apache/solr/handler/tagger/XmlInterpolationTest.java | 6 ++++++ .../apache/solr/search/join/TestCloudNestedDocsSort.java | 6 ++++++ .../processor/CategoryRoutedAliasUpdateProcessorTest.java | 6 ++++++ .../DimensionalRoutedAliasUpdateProcessorTest.java | 1 + .../solr/client/solrj/impl/CloudHttp2SolrClientTest.java | 7 +++++++ .../apache/solr/client/solrj/impl/CloudSolrClientTest.java | 6 ++++++ 19 files changed, 86 insertions(+) diff --git a/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrStandaloneScraperTest.java b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrStandaloneScraperTest.java index 35211568820..4a3b7d76dae 100644 --- a/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrStandaloneScraperTest.java +++ b/solr/contrib/prometheus-exporter/src/test/org/apache/solr/prometheus/scraper/SolrStandaloneScraperTest.java @@ -91,6 +91,8 @@ public class SolrStandaloneScraperTest extends RestTestBase { jetty.stop(); jetty = null; } + solrScraper = null; + solrClient = null; } @Test diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java index a165030e137..6bb769368d4 100644 --- a/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/OverseerCollectionConfigSetProcessorTest.java @@ -204,6 +204,7 @@ public class OverseerCollectionConfigSetProcessorTest extends SolrTestCaseJ4 { zkControllerMock = null; cloudDataProviderMock = null; clusterStateProviderMock = null; + stateManagerMock = null;; cloudManagerMock = null; distribStateManagerMock = null; coreContainerMock = null; diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java index 9cffd81c4d4..1603490c5ec 100644 --- a/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/OverseerTest.java @@ -315,6 +315,8 @@ public class OverseerTest extends SolrTestCaseJ4 { if (null != server) { server.shutdown(); } + + server = null; } @After diff --git a/solr/core/src/test/org/apache/solr/cloud/TestWithCollection.java b/solr/core/src/test/org/apache/solr/cloud/TestWithCollection.java index 77baa69274b..dccfd3b0ba5 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestWithCollection.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestWithCollection.java @@ -48,6 +48,7 @@ import org.apache.solr.common.util.TimeSource; import org.apache.solr.util.LogLevel; import org.apache.solr.util.TimeOut; import org.junit.After; +import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; @@ -92,6 +93,11 @@ public class TestWithCollection extends SolrCloudTestCase { shutdownCluster(); } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + cloudManager = null; + } + private void deleteChildrenRecursively(String path) throws Exception { cloudManager.getDistribStateManager().removeRecursively(path, true, false); } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ComputePlanActionTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ComputePlanActionTest.java index 9b579ac0ce6..851308f13b5 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/ComputePlanActionTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/ComputePlanActionTest.java @@ -56,6 +56,7 @@ import org.apache.solr.common.util.Utils; import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.util.LogLevel; import org.junit.After; +import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -168,6 +169,11 @@ public class ComputePlanActionTest extends SolrCloudTestCase { state.forEachCollection(coll -> log.debug("* Collection " + coll.getName() + " state: " + coll)); } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + cloudManager = null; + } + @Test @LuceneTestCase.AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028") public void testNodeLost() throws Exception { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerIntegrationTest.java index cd4485eada6..4d30a92c933 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeAddedTriggerIntegrationTest.java @@ -41,6 +41,7 @@ import org.apache.solr.util.LogLevel; import org.apache.solr.util.TimeOut; import org.apache.zookeeper.data.Stat; import org.junit.After; +import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; @@ -68,6 +69,11 @@ public class NodeAddedTriggerIntegrationTest extends SolrCloudTestCase { shutdownCluster(); } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + cloudManager = null; + } + private static CountDownLatch getTriggerFiredLatch() { return triggerFiredLatch; } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java index f88c4485908..f1c1cb37377 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/NodeLostTriggerIntegrationTest.java @@ -43,6 +43,7 @@ import org.apache.solr.util.LogLevel; import org.apache.solr.util.TimeOut; import org.apache.zookeeper.data.Stat; import org.junit.After; +import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; @@ -116,6 +117,11 @@ public class NodeLostTriggerIntegrationTest extends SolrCloudTestCase { shutdownCluster(); } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + cloudManager = null; + } + private void deleteChildrenRecursively(String path) throws Exception { cloudManager.getDistribStateManager().removeRecursively(path, true, false); } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java index 756617e2870..bd2ee927abd 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/TriggerIntegrationTest.java @@ -50,6 +50,7 @@ import org.apache.solr.common.util.Utils; import org.apache.solr.core.SolrResourceLoader; import org.apache.solr.util.LogLevel; import org.apache.zookeeper.data.Stat; +import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -90,6 +91,11 @@ public class TriggerIntegrationTest extends SolrCloudTestCase { CloudTestUtils.suspendTrigger(cluster.getOpenOverseer().getSolrCloudManager(), ".scheduled_maintenance"); } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + cloudManager = null; + } + private static CountDownLatch getTriggerFiredLatch() { return triggerFiredLatch; } diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimClusterStateProvider.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimClusterStateProvider.java index 5f4fa002cb2..04882b67231 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimClusterStateProvider.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimClusterStateProvider.java @@ -88,6 +88,7 @@ public class TestSimClusterStateProvider extends SolrCloudTestCase { if (simulated && cloudManager != null) { cloudManager.close(); } + cloudManager = null; } private static void init() throws Exception { diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSnapshotCloudManager.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSnapshotCloudManager.java index 50fa634fad7..a50a37706b9 100644 --- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSnapshotCloudManager.java +++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSnapshotCloudManager.java @@ -51,6 +51,7 @@ import org.apache.solr.common.cloud.Replica; import org.apache.solr.common.params.CollectionAdminParams; import org.apache.solr.common.util.TimeSource; import org.apache.solr.common.util.Utils; +import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.slf4j.Logger; @@ -82,6 +83,11 @@ public class TestSnapshotCloudManager extends SolrCloudTestCase { .getZkController().getSolrCloudManager(); } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + realManager = null; + } + @Test public void testSnapshots() throws Exception { SnapshotCloudManager snapshotCloudManager = new SnapshotCloudManager(realManager, null); diff --git a/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java b/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java index 3509f39fb15..90ce4f948a0 100644 --- a/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java +++ b/solr/core/src/test/org/apache/solr/core/TestJmxIntegration.java @@ -100,6 +100,7 @@ public class TestJmxIntegration extends SolrTestCaseJ4 { MBeanServerFactory.releaseMBeanServer(newMbeanServer); } mbeanServer = null; + newMbeanServer = null; } @Before diff --git a/solr/core/src/test/org/apache/solr/handler/admin/MetricsHistoryHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/MetricsHistoryHandlerTest.java index 4c058e5ccaa..286af4a16cc 100644 --- a/solr/core/src/test/org/apache/solr/handler/admin/MetricsHistoryHandlerTest.java +++ b/solr/core/src/test/org/apache/solr/handler/admin/MetricsHistoryHandlerTest.java @@ -108,6 +108,11 @@ public class MetricsHistoryHandlerTest extends SolrCloudTestCase { if (simulated) { cloudManager.close(); } + handler = null; + metricsHandler = null; + cloudManager = null; + metricManager = null; + solrClient = null; } @Test diff --git a/solr/core/src/test/org/apache/solr/handler/tagger/EmbeddedSolrNoSerializeTest.java b/solr/core/src/test/org/apache/solr/handler/tagger/EmbeddedSolrNoSerializeTest.java index 37b8207b225..f82af9a9dca 100644 --- a/solr/core/src/test/org/apache/solr/handler/tagger/EmbeddedSolrNoSerializeTest.java +++ b/solr/core/src/test/org/apache/solr/handler/tagger/EmbeddedSolrNoSerializeTest.java @@ -42,6 +42,7 @@ import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.ContentStream; import org.apache.solr.common.util.ContentStreamBase; +import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; @@ -62,6 +63,11 @@ public class EmbeddedSolrNoSerializeTest extends SolrTestCaseJ4 { //we don't need to close the EmbeddedSolrServer because SolrTestCaseJ4 closes the core } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + solrServer = null; + } + @Before public void setUp() throws Exception { super.setUp(); diff --git a/solr/core/src/test/org/apache/solr/handler/tagger/XmlInterpolationTest.java b/solr/core/src/test/org/apache/solr/handler/tagger/XmlInterpolationTest.java index d7dd5dff213..e43212119bd 100644 --- a/solr/core/src/test/org/apache/solr/handler/tagger/XmlInterpolationTest.java +++ b/solr/core/src/test/org/apache/solr/handler/tagger/XmlInterpolationTest.java @@ -40,6 +40,7 @@ import org.apache.lucene.analysis.tokenattributes.OffsetAttribute; import org.apache.solr.common.SolrException; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.response.SolrQueryResponse; +import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.xml.sax.InputSource; @@ -59,6 +60,11 @@ public class XmlInterpolationTest extends TaggerTestCase { initCore("solrconfig-tagger.xml", "schema-tagger.xml"); } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + xmlDocBuilder = null; + } + @Override public void setUp() throws Exception { super.setUp(); diff --git a/solr/core/src/test/org/apache/solr/search/join/TestCloudNestedDocsSort.java b/solr/core/src/test/org/apache/solr/search/join/TestCloudNestedDocsSort.java index 968523ea63e..04b8ed5b632 100644 --- a/solr/core/src/test/org/apache/solr/search/join/TestCloudNestedDocsSort.java +++ b/solr/core/src/test/org/apache/solr/search/join/TestCloudNestedDocsSort.java @@ -36,6 +36,7 @@ import org.apache.solr.cloud.SolrCloudTestCase; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.cloud.ZkStateReader; +import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -120,6 +121,11 @@ public class TestCloudNestedDocsSort extends SolrCloudTestCase { } } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + client = null; + } + @Test public void test() throws SolrServerException, IOException { final boolean asc = random().nextBoolean(); diff --git a/solr/core/src/test/org/apache/solr/update/processor/CategoryRoutedAliasUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/update/processor/CategoryRoutedAliasUpdateProcessorTest.java index 15ab341ad5a..f6bb16705e0 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/CategoryRoutedAliasUpdateProcessorTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/CategoryRoutedAliasUpdateProcessorTest.java @@ -40,6 +40,7 @@ import org.apache.solr.response.SolrQueryResponse; import org.apache.solr.update.UpdateCommand; import org.apache.solr.util.LogLevel; import org.junit.After; +import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; @@ -81,6 +82,11 @@ public class CategoryRoutedAliasUpdateProcessorTest extends RoutedAliasUpdatePro } } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + solrClient = null; + } + public void testNonEnglish() throws Exception { // test to document the expected behavior with non-english text for categories // the present expectation is that non-latin text and many accented latin characters diff --git a/solr/core/src/test/org/apache/solr/update/processor/DimensionalRoutedAliasUpdateProcessorTest.java b/solr/core/src/test/org/apache/solr/update/processor/DimensionalRoutedAliasUpdateProcessorTest.java index 3d583aca6db..f48f1f5b40f 100644 --- a/solr/core/src/test/org/apache/solr/update/processor/DimensionalRoutedAliasUpdateProcessorTest.java +++ b/solr/core/src/test/org/apache/solr/update/processor/DimensionalRoutedAliasUpdateProcessorTest.java @@ -85,6 +85,7 @@ public class DimensionalRoutedAliasUpdateProcessorTest extends RoutedAliasUpdate @AfterClass public static void finish() throws Exception { IOUtils.close(solrClient); + solrClient = null; } @Test public void testTimeCat() throws Exception { diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java index 27fd172c385..793ee5fa9e5 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudHttp2SolrClientTest.java @@ -71,6 +71,7 @@ import org.apache.solr.handler.admin.CollectionsHandler; import org.apache.solr.handler.admin.ConfigSetsHandler; import org.apache.solr.handler.admin.CoreAdminHandler; import org.junit.After; +import org.junit.AfterClass; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -134,6 +135,12 @@ public class CloudHttp2SolrClientTest extends SolrCloudTestCase { super.tearDown(); } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + httpBasedCloudSolrClient = null; + zkBasedCloudSolrClient = null; + } + /** * Randomly return the cluster's ZK based CSC, or HttpClusterProvider based CSC. */ diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java index a505799c6e3..0025aced05b 100644 --- a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java +++ b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/CloudSolrClientTest.java @@ -72,6 +72,7 @@ import org.apache.solr.handler.admin.CollectionsHandler; import org.apache.solr.handler.admin.ConfigSetsHandler; import org.apache.solr.handler.admin.CoreAdminHandler; import org.junit.After; +import org.junit.AfterClass; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -124,6 +125,11 @@ public class CloudSolrClientTest extends SolrCloudTestCase { super.tearDown(); } + @AfterClass + public static void cleanUpAfterClass() throws Exception { + httpBasedCloudSolrClient = null; + } + /** * Randomly return the cluster's ZK based CSC, or HttpClusterProvider based CSC. */