Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 28A37200BA6 for ; Tue, 18 Oct 2016 13:40:19 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 255D0160ACC; Tue, 18 Oct 2016 11:40:19 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 7FB63160AF7 for ; Tue, 18 Oct 2016 13:40:16 +0200 (CEST) Received: (qmail 56956 invoked by uid 500); 18 Oct 2016 11:40:15 -0000 Mailing-List: contact commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@lucene.apache.org Delivered-To: mailing list commits@lucene.apache.org Received: (qmail 56780 invoked by uid 99); 18 Oct 2016 11:40:15 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 18 Oct 2016 11:40:15 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 44F3FE09DE; Tue, 18 Oct 2016 11:40:15 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: romseygeek@apache.org To: commits@lucene.apache.org Date: Tue, 18 Oct 2016 11:40:17 -0000 Message-Id: In-Reply-To: <6b4a3c9921cf4951bbc1b49f3bb38b06@git.apache.org> References: <6b4a3c9921cf4951bbc1b49f3bb38b06@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [3/7] lucene-solr:branch_6x: SOLR-9634: Deprecate create/deleteCollection methods on MiniSolrCloudCluster archived-at: Tue, 18 Oct 2016 11:40:19 -0000 SOLR-9634: Deprecate create/deleteCollection methods on MiniSolrCloudCluster Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/df09867c Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/df09867c Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/df09867c Branch: refs/heads/branch_6x Commit: df09867cccc3860fa8311f35577416d1b706d1fd Parents: d6dc132 Author: Alan Woodward Authored: Thu Oct 6 11:39:02 2016 +0100 Committer: Alan Woodward Committed: Tue Oct 18 12:32:42 2016 +0100 ---------------------------------------------------------------------- solr/CHANGES.txt | 7 ++ .../cdcr-source-disabled/conf/schema.xml | 29 ++++++++ .../cdcr-source-disabled/conf/solrconfig.xml | 60 ++++++++++++++++ .../configsets/cdcr-source-disabled/schema.xml | 29 -------- .../cdcr-source-disabled/solrconfig.xml | 60 ---------------- .../solr/configsets/cdcr-source/conf/schema.xml | 29 ++++++++ .../configsets/cdcr-source/conf/solrconfig.xml | 76 ++++++++++++++++++++ .../solr/configsets/cdcr-source/schema.xml | 29 -------- .../solr/configsets/cdcr-source/solrconfig.xml | 76 -------------------- .../solr/configsets/cdcr-target/conf/schema.xml | 29 ++++++++ .../configsets/cdcr-target/conf/solrconfig.xml | 63 ++++++++++++++++ .../solr/configsets/cdcr-target/schema.xml | 29 -------- .../solr/configsets/cdcr-target/solrconfig.xml | 63 ---------------- .../apache/solr/cloud/CdcrBootstrapTest.java | 76 +++++++------------- ...ConcurrentDeleteAndCreateCollectionTest.java | 12 ++-- .../cloud/DistribJoinFromCollectionTest.java | 25 +++---- .../solr/cloud/TestAuthenticationFramework.java | 45 ++++++------ .../solr/cloud/TestCloudDeleteByQuery.java | 15 ++-- .../solr/cloud/TestCloudPseudoReturnFields.java | 21 ++---- .../apache/solr/cloud/TestConfigSetsAPI.java | 13 ++-- .../cloud/TestConfigSetsAPIExclusivity.java | 10 +-- .../solr/cloud/TestConfigSetsAPIZkFailure.java | 2 +- .../solr/cloud/TestMiniSolrCloudCluster.java | 54 +++++--------- .../solr/cloud/TestMiniSolrCloudClusterSSL.java | 14 ++-- .../apache/solr/cloud/TestRandomFlRTGCloud.java | 40 ++++------- .../solr/cloud/TestRequestForwarding.java | 4 +- .../cloud/TestSolrCloudWithKerberosAlt.java | 3 +- .../TestStressCloudBlindAtomicUpdates.java | 35 ++++----- .../cloud/TestTolerantUpdateProcessorCloud.java | 23 +++--- .../TestTolerantUpdateProcessorRandomCloud.java | 46 ++++++------ .../solr/core/BlobRepositoryCloudTest.java | 12 ++-- .../solr/handler/PingRequestHandlerTest.java | 12 ++-- .../apache/solr/handler/TestReqParamsAPI.java | 4 +- .../handler/component/SearchHandlerTest.java | 15 ++-- .../TestSubQueryTransformerDistrib.java | 18 +++-- .../solr/schema/TestManagedSchemaAPI.java | 3 +- .../search/join/BlockJoinFacetDistribTest.java | 13 ++-- .../solr/search/stats/TestDistribIDF.java | 7 +- .../solrj/request/CollectionAdminRequest.java | 14 ++++ .../cloud/TestCollectionStateWatchers.java | 4 +- .../apache/solr/cloud/MiniSolrCloudCluster.java | 35 +++++++-- 41 files changed, 552 insertions(+), 602 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/CHANGES.txt ---------------------------------------------------------------------- diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index acd18b4..c6f307d 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -45,6 +45,11 @@ prefix, then you will now get an error as these options are incompatible with nu you may need to update the log configs to use the DEBUG level to get the same logging messages as before. +* The create/deleteCollection methods on MiniSolrCloudCluster have been + deprecated. Clients should instead use the CollectionAdminRequest API. In + addition, MiniSolrCloudCluster#uploadConfigSet(File, String) has been + deprecated in favour of #uploadConfigSet(Path, String) + New Features ---------------------- * SOLR-5725: facet.method=enum can bypass exact counts calculation with facet.exists=true, it just returns 1 for @@ -252,6 +257,8 @@ Other Changes * SOLR-9632: Add MiniSolrCloudCluster#deleteAllCollections() method (Alan Woodward) +* SOLR-9634: Deprecate collection methods on MiniSolrCloudCluster (Alan Woodward) + ================== 6.2.1 ================== Bug Fixes http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/schema.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/schema.xml b/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/schema.xml new file mode 100644 index 0000000..2897315 --- /dev/null +++ b/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/schema.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + id + http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/solrconfig.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/solrconfig.xml new file mode 100644 index 0000000..e63d9a6 --- /dev/null +++ b/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/conf/solrconfig.xml @@ -0,0 +1,60 @@ + + + + + + + + + ${solr.data.dir:} + + + + + ${tests.luceneMatchVersion:LATEST} + + + + ${solr.commitwithin.softcommit:true} + + + + ${solr.ulog.dir:} + + + + + + explicit + true + text + + + + + http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/schema.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/schema.xml b/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/schema.xml deleted file mode 100644 index 2897315..0000000 --- a/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/schema.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - id - http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/solrconfig.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/solrconfig.xml b/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/solrconfig.xml deleted file mode 100644 index e63d9a6..0000000 --- a/solr/core/src/test-files/solr/configsets/cdcr-source-disabled/solrconfig.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - ${solr.data.dir:} - - - - - ${tests.luceneMatchVersion:LATEST} - - - - ${solr.commitwithin.softcommit:true} - - - - ${solr.ulog.dir:} - - - - - - explicit - true - text - - - - - http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-source/conf/schema.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source/conf/schema.xml b/solr/core/src/test-files/solr/configsets/cdcr-source/conf/schema.xml new file mode 100644 index 0000000..2897315 --- /dev/null +++ b/solr/core/src/test-files/solr/configsets/cdcr-source/conf/schema.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + id + http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-source/conf/solrconfig.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/cdcr-source/conf/solrconfig.xml new file mode 100644 index 0000000..f2528c3 --- /dev/null +++ b/solr/core/src/test-files/solr/configsets/cdcr-source/conf/solrconfig.xml @@ -0,0 +1,76 @@ + + + + + + + + + ${solr.data.dir:} + + + + ${tests.luceneMatchVersion:LATEST} + + + + + + + + + ${cdcr.target.zkHost} + cdcr-source + cdcr-target + + + 1 + 1000 + 1000 + + + 1000 + + + + + + ${solr.ulog.dir:} + + + + + + + + + cdcr-processor-chain + + + + http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-source/schema.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source/schema.xml b/solr/core/src/test-files/solr/configsets/cdcr-source/schema.xml deleted file mode 100644 index 2897315..0000000 --- a/solr/core/src/test-files/solr/configsets/cdcr-source/schema.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - id - http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-source/solrconfig.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-source/solrconfig.xml b/solr/core/src/test-files/solr/configsets/cdcr-source/solrconfig.xml deleted file mode 100644 index f2528c3..0000000 --- a/solr/core/src/test-files/solr/configsets/cdcr-source/solrconfig.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - ${solr.data.dir:} - - - - ${tests.luceneMatchVersion:LATEST} - - - - - - - - - ${cdcr.target.zkHost} - cdcr-source - cdcr-target - - - 1 - 1000 - 1000 - - - 1000 - - - - - - ${solr.ulog.dir:} - - - - - - - - - cdcr-processor-chain - - - - http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-target/conf/schema.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-target/conf/schema.xml b/solr/core/src/test-files/solr/configsets/cdcr-target/conf/schema.xml new file mode 100644 index 0000000..2897315 --- /dev/null +++ b/solr/core/src/test-files/solr/configsets/cdcr-target/conf/schema.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + id + http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-target/conf/solrconfig.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-target/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/cdcr-target/conf/solrconfig.xml new file mode 100644 index 0000000..ef24fa4 --- /dev/null +++ b/solr/core/src/test-files/solr/configsets/cdcr-target/conf/solrconfig.xml @@ -0,0 +1,63 @@ + + + + + + + + + ${solr.data.dir:} + + + + ${tests.luceneMatchVersion:LATEST} + + + + + + + + + + + + ${solr.ulog.dir:} + + + + + + + + + cdcr-processor-chain + + + + http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-target/schema.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-target/schema.xml b/solr/core/src/test-files/solr/configsets/cdcr-target/schema.xml deleted file mode 100644 index 2897315..0000000 --- a/solr/core/src/test-files/solr/configsets/cdcr-target/schema.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - id - http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test-files/solr/configsets/cdcr-target/solrconfig.xml ---------------------------------------------------------------------- diff --git a/solr/core/src/test-files/solr/configsets/cdcr-target/solrconfig.xml b/solr/core/src/test-files/solr/configsets/cdcr-target/solrconfig.xml deleted file mode 100644 index ef24fa4..0000000 --- a/solr/core/src/test-files/solr/configsets/cdcr-target/solrconfig.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - - - ${solr.data.dir:} - - - - ${tests.luceneMatchVersion:LATEST} - - - - - - - - - - - - ${solr.ulog.dir:} - - - - - - - - - cdcr-processor-chain - - - - http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/CdcrBootstrapTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/CdcrBootstrapTest.java b/solr/core/src/test/org/apache/solr/cloud/CdcrBootstrapTest.java index 1efdc6a..aca5e0b 100644 --- a/solr/core/src/test/org/apache/solr/cloud/CdcrBootstrapTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/CdcrBootstrapTest.java @@ -17,13 +17,9 @@ package org.apache.solr.cloud; -import java.io.File; import java.io.IOException; import java.lang.invoke.MethodHandles; -import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.concurrent.TimeUnit; import org.apache.solr.SolrTestCaseJ4; @@ -32,6 +28,7 @@ import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.embedded.JettySolrRunner; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.request.AbstractUpdateRequest; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrInputDocument; @@ -71,17 +68,13 @@ public class CdcrBootstrapTest extends SolrTestCaseJ4 { MiniSolrCloudCluster source = new MiniSolrCloudCluster(1, createTempDir("cdcr-source"), buildJettyConfig("/solr")); try { source.waitForAllNodes(30); - final File configDir = getFile("solr").toPath().resolve("configsets/cdcr-source-disabled").toFile(); - System.out.println("config dir absolute path = " + configDir.getAbsolutePath()); - source.uploadConfigDir(configDir, "cdcr-source"); + source.uploadConfigSet(configset("cdcr-source-disabled"), "cdcr-source"); // create a collection with the cdcr-source-disabled configset - Map collectionProperties = new HashMap<>(); - // todo investigate why this is necessary??? because by default it selects a ram directory which deletes the tlogs on reloads? - collectionProperties.putIfAbsent("solr.directoryFactory", "solr.StandardDirectoryFactory"); - source.createCollection("cdcr-source", 1, 1, "cdcr-source", collectionProperties); - source.getSolrClient().getZkStateReader().forceUpdateCollection("cdcr-source"); - AbstractDistribZkTestBase.waitForRecoveriesToFinish("cdcr-source", source.getSolrClient().getZkStateReader(), true, true, 330); + CollectionAdminRequest.createCollection("cdcr-source", "cdcr-source", 1, 1) + // todo investigate why this is necessary??? because by default it selects a ram directory which deletes the tlogs on reloads? + .withProperty("solr.directoryFactory", "solr.StandardDirectoryFactory") + .process(source.getSolrClient()); // index 10000 docs with a hard commit every 1000 documents CloudSolrClient sourceSolrClient = source.getSolrClient(); @@ -115,8 +108,7 @@ public class CdcrBootstrapTest extends SolrTestCaseJ4 { } // upload the cdcr-enabled config and restart source cluster - final File cdcrEnabledSourceConfigDir = getFile("solr").toPath().resolve("configsets/cdcr-source").toFile(); - source.uploadConfigDir(cdcrEnabledSourceConfigDir, "cdcr-source"); + source.uploadConfigSet(configset("cdcr-source"), "cdcr-source"); JettySolrRunner runner = source.stopJettySolrRunner(0); source.startJettySolrRunner(runner); assertTrue(runner.isRunning()); @@ -126,11 +118,9 @@ public class CdcrBootstrapTest extends SolrTestCaseJ4 { assertEquals("Document mismatch on source after restart", numDocs, response.getResults().getNumFound()); // setup the target cluster - final File targetConfigDir = getFile("solr").toPath().resolve("configsets/cdcr-target").toFile(); - target.uploadConfigDir(targetConfigDir, "cdcr-target"); - target.createCollection("cdcr-target", 1, 1, "cdcr-target", Collections.emptyMap()); - target.getSolrClient().getZkStateReader().forceUpdateCollection("cdcr-target"); - AbstractDistribZkTestBase.waitForRecoveriesToFinish("cdcr-target", target.getSolrClient().getZkStateReader(), true, true, 330); + target.uploadConfigSet(configset("cdcr-target"), "cdcr-target"); + CollectionAdminRequest.createCollection("cdcr-target", "cdcr-target", 1, 1) + .process(target.getSolrClient()); CloudSolrClient targetSolrClient = target.getSolrClient(); targetSolrClient.setDefaultCollection("cdcr-target"); Thread.sleep(1000); @@ -174,16 +164,11 @@ public class CdcrBootstrapTest extends SolrTestCaseJ4 { MiniSolrCloudCluster source = new MiniSolrCloudCluster(1, createTempDir("cdcr-source"), buildJettyConfig("/solr")); try { source.waitForAllNodes(30); - final File configDir = getFile("solr").toPath().resolve("configsets/cdcr-source").toFile(); - System.out.println("config dir absolute path = " + configDir.getAbsolutePath()); - source.uploadConfigDir(configDir, "cdcr-source"); - - Map collectionProperties = new HashMap<>(); - // todo investigate why this is necessary??? - collectionProperties.putIfAbsent("solr.directoryFactory", "solr.StandardDirectoryFactory"); - source.createCollection("cdcr-source", 1, 1, "cdcr-source", collectionProperties); - source.getSolrClient().getZkStateReader().forceUpdateCollection("cdcr-source"); - AbstractDistribZkTestBase.waitForRecoveriesToFinish("cdcr-source", source.getSolrClient().getZkStateReader(), true, true, 330); + source.uploadConfigSet(configset("cdcr-source"), "cdcr-source"); + + CollectionAdminRequest.createCollection("cdcr-source", "cdcr-source", 1, 1) + .withProperty("solr.directoryFactory", "solr.StandardDirectoryFactory") + .process(source.getSolrClient()); // index 10000 docs with a hard commit every 1000 documents CloudSolrClient sourceSolrClient = source.getSolrClient(); @@ -206,11 +191,9 @@ public class CdcrBootstrapTest extends SolrTestCaseJ4 { assertEquals("", numDocs, response.getResults().getNumFound()); // setup the target cluster - final File targetConfigDir = getFile("solr").toPath().resolve("configsets/cdcr-target").toFile(); - target.uploadConfigDir(targetConfigDir, "cdcr-target"); - target.createCollection("cdcr-target", 1, 1, "cdcr-target", Collections.emptyMap()); - target.getSolrClient().getZkStateReader().forceUpdateCollection("cdcr-target"); - AbstractDistribZkTestBase.waitForRecoveriesToFinish("cdcr-target", target.getSolrClient().getZkStateReader(), true, true, 330); + target.uploadConfigSet(configset("cdcr-target"), "cdcr-target"); + CollectionAdminRequest.createCollection("cdcr-target", "cdcr-target", 1, 1) + .process(target.getSolrClient()); CloudSolrClient targetSolrClient = target.getSolrClient(); targetSolrClient.setDefaultCollection("cdcr-target"); @@ -267,16 +250,11 @@ public class CdcrBootstrapTest extends SolrTestCaseJ4 { MiniSolrCloudCluster source = new MiniSolrCloudCluster(1, createTempDir("cdcr-source"), buildJettyConfig("/solr")); try { source.waitForAllNodes(30); - final File configDir = getFile("solr").toPath().resolve("configsets/cdcr-source").toFile(); - System.out.println("config dir absolute path = " + configDir.getAbsolutePath()); - source.uploadConfigDir(configDir, "cdcr-source"); - - Map collectionProperties = new HashMap<>(); - // todo investigate why this is necessary??? - collectionProperties.putIfAbsent("solr.directoryFactory", "solr.StandardDirectoryFactory"); - source.createCollection("cdcr-source", 1, 1, "cdcr-source", collectionProperties); - source.getSolrClient().getZkStateReader().forceUpdateCollection("cdcr-source"); - AbstractDistribZkTestBase.waitForRecoveriesToFinish("cdcr-source", source.getSolrClient().getZkStateReader(), true, true, 330); + source.uploadConfigSet(configset("cdcr-source"), "cdcr-source"); + + CollectionAdminRequest.createCollection("cdcr-source", "cdcr-source", 1, 1) + .withProperty("solr.directoryFactory", "solr.StandardDirectoryFactory") + .process(source.getSolrClient()); // index 10000 docs with a hard commit every 1000 documents CloudSolrClient sourceSolrClient = source.getSolrClient(); @@ -299,11 +277,9 @@ public class CdcrBootstrapTest extends SolrTestCaseJ4 { assertEquals("", numDocs, response.getResults().getNumFound()); // setup the target cluster - final File targetConfigDir = getFile("solr").toPath().resolve("configsets/cdcr-target").toFile(); - target.uploadConfigDir(targetConfigDir, "cdcr-target"); - target.createCollection("cdcr-target", 1, 1, "cdcr-target", Collections.emptyMap()); - target.getSolrClient().getZkStateReader().forceUpdateCollection("cdcr-target"); - AbstractDistribZkTestBase.waitForRecoveriesToFinish("cdcr-target", target.getSolrClient().getZkStateReader(), true, true, 330); + target.uploadConfigSet(configset("cdcr-target"), "cdcr-target"); + CollectionAdminRequest.createCollection("cdcr-target", "cdcr-target", 1, 1) + .process(target.getSolrClient()); CloudSolrClient targetSolrClient = target.getSolrClient(); targetSolrClient.setDefaultCollection("cdcr-target"); Thread.sleep(1000); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java b/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java index e9ec533..3e90759 100644 --- a/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/ConcurrentDeleteAndCreateCollectionTest.java @@ -16,8 +16,8 @@ */ package org.apache.solr.cloud; -import java.io.File; import java.io.IOException; +import java.nio.file.Path; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; @@ -52,13 +52,12 @@ public class ConcurrentDeleteAndCreateCollectionTest extends SolrTestCaseJ4 { } public void testConcurrentCreateAndDeleteDoesNotFail() { - final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile(); final AtomicReference failure = new AtomicReference<>(); final int timeToRunSec = 30; final Thread[] threads = new Thread[10]; for (int i = 0; i < threads.length; i++) { final String collectionName = "collection" + i; - uploadConfig(configDir, collectionName); + uploadConfig(configset("configset-2"), collectionName); final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString(); final SolrClient solrClient = getHttpSolrClient(baseUrl); threads[i] = new CreateDeleteSearchCollectionThread("create-delete-search-" + i, collectionName, collectionName, @@ -73,8 +72,7 @@ public class ConcurrentDeleteAndCreateCollectionTest extends SolrTestCaseJ4 { public void testConcurrentCreateAndDeleteOverTheSameConfig() { final String configName = "testconfig"; - final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile(); - uploadConfig(configDir, configName); // upload config once, to be used by all collections + uploadConfig(configset("configset-2"), configName); // upload config once, to be used by all collections final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString(); final SolrClient solrClient = getHttpSolrClient(baseUrl); final AtomicReference failure = new AtomicReference<>(); @@ -98,9 +96,9 @@ public class ConcurrentDeleteAndCreateCollectionTest extends SolrTestCaseJ4 { } } - private void uploadConfig(File configDir, String configName) { + private void uploadConfig(Path configDir, String configName) { try { - solrCluster.uploadConfigDir(configDir, configName); + solrCluster.uploadConfigSet(configDir, configName); } catch (IOException | KeeperException | InterruptedException e) { throw new RuntimeException(e); } http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/DistribJoinFromCollectionTest.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/DistribJoinFromCollectionTest.java b/solr/core/src/test/org/apache/solr/cloud/DistribJoinFromCollectionTest.java index ae17ca9..3c055ab 100644 --- a/solr/core/src/test/org/apache/solr/cloud/DistribJoinFromCollectionTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/DistribJoinFromCollectionTest.java @@ -16,8 +16,6 @@ */ package org.apache.solr.cloud; -import static org.hamcrest.CoreMatchers.not; - import java.io.IOException; import java.lang.invoke.MethodHandles; import java.nio.file.Path; @@ -49,6 +47,8 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.hamcrest.CoreMatchers.not; + /** * Tests using fromIndex that points to a collection in SolrCloud mode. */ @@ -83,10 +83,10 @@ public class DistribJoinFromCollectionTest extends SolrCloudTestCase{ int shards = 2; int replicas = 2 ; - assertNotNull(cluster.createCollection(toColl, shards, replicas, - configName, - collectionProperties)); - + CollectionAdminRequest.createCollection(toColl, configName, shards, replicas) + .setProperties(collectionProperties) + .process(cluster.getSolrClient()); + // get the set of nodes where replicas for the "to" collection exist Set nodeSet = new HashSet<>(); ZkStateReader zkStateReader = cluster.getSolrClient().getZkStateReader(); @@ -97,14 +97,11 @@ public class DistribJoinFromCollectionTest extends SolrCloudTestCase{ assertTrue(nodeSet.size() > 0); // deploy the "from" collection to all nodes where the "to" collection exists - - assertNotNull(cluster.createCollection(fromColl, 1, 4, - configName, StringUtils.join(nodeSet,","), null, - collectionProperties)); - - AbstractDistribZkTestBase.waitForRecoveriesToFinish(toColl, zkStateReader, false, true, 30); - AbstractDistribZkTestBase.waitForRecoveriesToFinish(fromColl, zkStateReader, false, true, 30); - + CollectionAdminRequest.createCollection(fromColl, configName, 1, 4) + .setCreateNodeSet(StringUtils.join(nodeSet, ",")) + .setProperties(collectionProperties) + .process(cluster.getSolrClient()); + toDocId = indexDoc(toColl, 1001, "a", null, "b"); indexDoc(fromColl, 2001, "a", "c", null); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java b/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java index ccc21b9..7ac7dba 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestAuthenticationFramework.java @@ -16,19 +16,18 @@ */ package org.apache.solr.cloud; -import java.io.File; -import java.io.IOException; -import java.lang.invoke.MethodHandles; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import javax.servlet.FilterChain; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.lang.invoke.MethodHandles; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule; import org.apache.http.HttpException; import org.apache.http.HttpRequest; import org.apache.http.HttpRequestInterceptor; @@ -43,8 +42,8 @@ import org.apache.solr.client.solrj.embedded.JettyConfig; import org.apache.solr.client.solrj.embedded.JettySolrRunner; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.impl.HttpClientConfigurer; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.client.solrj.response.RequestStatusState; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.common.params.SolrParams; @@ -63,8 +62,6 @@ import org.junit.rules.TestRule; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule; - /** * Test of the MiniSolrCloudCluster functionality with authentication enabled. */ @@ -144,8 +141,7 @@ public class TestAuthenticationFramework extends LuceneTestCase { private void createCollection(MiniSolrCloudCluster miniCluster, String collectionName, String asyncId) throws Exception { String configName = "solrCloudCollectionConfig"; - File configDir = new File(SolrTestCaseJ4.TEST_HOME() + File.separator + "collection1" + File.separator + "conf"); - miniCluster.uploadConfigDir(configDir, configName); + miniCluster.uploadConfigSet(SolrTestCaseJ4.TEST_PATH().resolve("collection1/conf"), configName); final boolean persistIndex = random().nextBoolean(); Map collectionProperties = new HashMap<>(); @@ -166,7 +162,17 @@ public class TestAuthenticationFramework extends LuceneTestCase { collectionProperties.putIfAbsent("solr.tests.mergeScheduler", "org.apache.lucene.index.ConcurrentMergeScheduler"); collectionProperties.putIfAbsent("solr.directoryFactory", (persistIndex ? "solr.StandardDirectoryFactory" : "solr.RAMDirectoryFactory")); - miniCluster.createCollection(collectionName, NUM_SHARDS, REPLICATION_FACTOR, configName, null, asyncId, collectionProperties); + if (asyncId == null) { + CollectionAdminRequest.createCollection(collectionName, configName, NUM_SHARDS, REPLICATION_FACTOR) + .setProperties(collectionProperties) + .process(miniCluster.getSolrClient()); + } + else { + CollectionAdminRequest.createCollection(collectionName, configName, NUM_SHARDS, REPLICATION_FACTOR) + .setProperties(collectionProperties) + .processAndWait(miniCluster.getSolrClient(), 30); + } + } public void collectionCreateSearchDelete(MiniSolrCloudCluster miniCluster) throws Exception { @@ -186,11 +192,6 @@ public class TestAuthenticationFramework extends LuceneTestCase { log.info("#### Creating a collection"); final String asyncId = (random().nextBoolean() ? null : "asyncId("+collectionName+".create)="+random().nextInt()); createCollection(miniCluster, collectionName, asyncId); - if (asyncId != null) { - final RequestStatusState state = AbstractFullDistribZkTestBase.getRequestStateAfterCompletion(asyncId, 330, - cloudSolrClient); - assertSame("did not see async createCollection completion", RequestStatusState.COMPLETED, state); - } ZkStateReader zkStateReader = miniCluster.getSolrClient().getZkStateReader(); AbstractDistribZkTestBase.waitForRecoveriesToFinish(collectionName, zkStateReader, true, true, 330); @@ -208,17 +209,11 @@ public class TestAuthenticationFramework extends LuceneTestCase { assertEquals(1, rsp.getResults().getNumFound()); // delete the collection we created earlier - miniCluster.deleteCollection(collectionName); - AbstractDistribZkTestBase.waitForCollectionToDisappear(collectionName, zkStateReader, true, true, 330); + CollectionAdminRequest.deleteCollection(collectionName).process(miniCluster.getSolrClient()); // create it again String asyncId2 = (random().nextBoolean() ? null : "asyncId("+collectionName+".create)="+random().nextInt()); createCollection(miniCluster, collectionName, asyncId2); - if (asyncId2 != null) { - final RequestStatusState state = AbstractFullDistribZkTestBase.getRequestStateAfterCompletion(asyncId2, 330, - cloudSolrClient); - assertSame("did not see async createCollection completion", RequestStatusState.COMPLETED, state); - } AbstractDistribZkTestBase.waitForRecoveriesToFinish(collectionName, zkStateReader, true, true, 330); // check that there's no left-over state http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java b/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java index 0a9dcd0..4b797be 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudDeleteByQuery.java @@ -24,28 +24,26 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import org.apache.solr.cloud.SolrCloudTestCase; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.embedded.JettySolrRunner; -import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.client.solrj.response.UpdateResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; +import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.SolrInputField; -import org.apache.solr.common.SolrException; import org.apache.solr.common.cloud.ClusterState; import org.apache.solr.common.cloud.Replica; import org.apache.solr.common.cloud.Slice; import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; - import org.junit.Before; import org.junit.BeforeClass; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -97,9 +95,10 @@ public class TestCloudDeleteByQuery extends SolrCloudTestCase { collectionProperties.put("config", "solrconfig-tlog.xml"); collectionProperties.put("schema", "schema15.xml"); // string id for doc routing prefix - assertNotNull(cluster.createCollection(COLLECTION_NAME, NUM_SHARDS, REPLICATION_FACTOR, - configName, null, null, collectionProperties)); - + CollectionAdminRequest.createCollection(COLLECTION_NAME, configName, NUM_SHARDS, REPLICATION_FACTOR) + .setProperties(collectionProperties) + .process(cluster.getSolrClient()); + CLOUD_CLIENT = cluster.getSolrClient(); CLOUD_CLIENT.setDefaultCollection(COLLECTION_NAME); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestCloudPseudoReturnFields.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestCloudPseudoReturnFields.java b/solr/core/src/test/org/apache/solr/cloud/TestCloudPseudoReturnFields.java index 6a15e68..f7e6756 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestCloudPseudoReturnFields.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestCloudPseudoReturnFields.java @@ -17,7 +17,6 @@ package org.apache.solr.cloud; import java.lang.invoke.MethodHandles; - import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; @@ -28,28 +27,22 @@ import java.util.List; import java.util.Map; import java.util.Random; +import org.apache.commons.lang.StringUtils; +import org.apache.lucene.util.TestUtil; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.embedded.JettySolrRunner; -import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.request.schema.SchemaRequest.Field; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.schema.SchemaResponse.FieldResponse; - -import org.apache.solr.cloud.SolrCloudTestCase; - import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; - import org.apache.solr.search.TestPseudoReturnFields; - -import org.apache.lucene.util.TestUtil; - -import org.apache.commons.lang.StringUtils; - import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; @@ -85,10 +78,10 @@ public class TestCloudPseudoReturnFields extends SolrCloudTestCase { Map collectionProperties = new HashMap<>(); collectionProperties.put("config", "solrconfig-tlog.xml"); collectionProperties.put("schema", "schema-psuedo-fields.xml"); + CollectionAdminRequest.createCollection(COLLECTION_NAME, configName, numShards, repFactor) + .setProperties(collectionProperties) + .process(cluster.getSolrClient()); - assertNotNull(cluster.createCollection(COLLECTION_NAME, numShards, repFactor, - configName, null, null, collectionProperties)); - CLOUD_CLIENT = cluster.getSolrClient(); CLOUD_CLIENT.setDefaultCollection(COLLECTION_NAME); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java index e3870dc..2027a6d 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java @@ -80,8 +80,7 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 { public void testCreateErrors() throws Exception { final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString(); final SolrClient solrClient = getHttpSolrClient(baseUrl); - final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile(); - solrCluster.uploadConfigDir(configDir, "configSet"); + solrCluster.uploadConfigSet(configset("configset-2"), "configSet"); // no action CreateNoErrorChecking createNoAction = new CreateNoErrorChecking(); @@ -137,7 +136,7 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 { FileUtils.write(new File(tmpConfigDir, ConfigSetProperties.DEFAULT_FILENAME), getConfigSetProps(oldProps), StandardCharsets.UTF_8); } - solrCluster.uploadConfigDir(tmpConfigDir, baseConfigSetName); + solrCluster.uploadConfigSet(tmpConfigDir.toPath(), baseConfigSetName); } private void verifyCreate(String baseConfigSetName, String configSetName, @@ -243,7 +242,7 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 { FileUtils.copyDirectory(configDir, tmpConfigDir); FileUtils.write(new File(tmpConfigDir, "configsetprops.json"), getConfigSetProps(ImmutableMap.of("immutable", "true")), StandardCharsets.UTF_8); - solrCluster.uploadConfigDir(tmpConfigDir, "configSet"); + solrCluster.uploadConfigSet(tmpConfigDir.toPath(), "configSet"); // no ConfigSet name DeleteNoErrorChecking delete = new DeleteNoErrorChecking(); @@ -275,9 +274,8 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 { public void testDelete() throws Exception { final String baseUrl = solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString(); final SolrClient solrClient = getHttpSolrClient(baseUrl); - final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile(); final String configSet = "configSet"; - solrCluster.uploadConfigDir(configDir, configSet); + solrCluster.uploadConfigSet(configset("configset-2"), configSet); SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(), AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null); @@ -312,11 +310,10 @@ public class TestConfigSetsAPI extends SolrTestCaseJ4 { assertEquals(0, actualConfigSets.size()); // test multiple - final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile(); Set configSets = new HashSet(); for (int i = 0; i < 5; ++i) { String configSet = "configSet" + i; - solrCluster.uploadConfigDir(configDir, configSet); + solrCluster.uploadConfigSet(configset("configset-2"), configSet); configSets.add(configSet); } response = list.process(solrClient); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java index d4a1177..a110727 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIExclusivity.java @@ -16,23 +16,19 @@ */ package org.apache.solr.cloud; -import java.io.File; import java.lang.invoke.MethodHandles; import java.util.Arrays; import java.util.LinkedList; import java.util.List; -import org.apache.commons.io.FileUtils; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.request.ConfigSetAdminRequest; import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Create; import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Delete; - import org.junit.After; import org.junit.Before; import org.junit.Test; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -92,11 +88,7 @@ public class TestConfigSetsAPIExclusivity extends SolrTestCaseJ4 { } private void setupBaseConfigSet(String baseConfigSetName) throws Exception { - final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile(); - final File tmpConfigDir = createTempDir().toFile(); - tmpConfigDir.deleteOnExit(); - FileUtils.copyDirectory(configDir, tmpConfigDir); - solrCluster.uploadConfigDir(tmpConfigDir, baseConfigSetName); + solrCluster.uploadConfigSet(configset("configset-2"), baseConfigSetName); } private Exception getFirstExceptionOrNull(List list) { http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java index 8fe9cb6..bcb0a1b 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPIZkFailure.java @@ -136,7 +136,7 @@ public class TestConfigSetsAPIZkFailure extends SolrTestCaseJ4 { FileUtils.write(new File(tmpConfigDir, ConfigSetProperties.DEFAULT_FILENAME), getConfigSetProps(oldProps), StandardCharsets.UTF_8); } - solrCluster.uploadConfigDir(tmpConfigDir, baseConfigSetName); + solrCluster.uploadConfigSet(tmpConfigDir.toPath(), baseConfigSetName); } private StringBuilder getConfigSetProps(Map map) { http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java b/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java index c2c99a1..97ecb67 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudCluster.java @@ -37,8 +37,8 @@ import org.apache.solr.client.solrj.embedded.JettyConfig; import org.apache.solr.client.solrj.embedded.JettyConfig.Builder; import org.apache.solr.client.solrj.embedded.JettySolrRunner; import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.response.QueryResponse; -import org.apache.solr.client.solrj.response.RequestStatusState; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.cloud.ClusterState; import org.apache.solr.common.cloud.Replica; @@ -93,8 +93,7 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase { private void createCollection(MiniSolrCloudCluster miniCluster, String collectionName, String createNodeSet, String asyncId, Boolean indexToPersist, Map collectionProperties) throws Exception { String configName = "solrCloudCollectionConfig"; - File configDir = new File(SolrTestCaseJ4.TEST_HOME() + File.separator + "collection1" + File.separator + "conf"); - miniCluster.uploadConfigDir(configDir, configName); + miniCluster.uploadConfigSet(SolrTestCaseJ4.TEST_PATH().resolve("collection1").resolve("conf"), configName); final boolean persistIndex = (indexToPersist != null ? indexToPersist.booleanValue() : random().nextBoolean()); if (collectionProperties == null) { @@ -115,8 +114,19 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase { } collectionProperties.putIfAbsent("solr.tests.mergeScheduler", "org.apache.lucene.index.ConcurrentMergeScheduler"); collectionProperties.putIfAbsent("solr.directoryFactory", (persistIndex ? "solr.StandardDirectoryFactory" : "solr.RAMDirectoryFactory")); - - miniCluster.createCollection(collectionName, NUM_SHARDS, REPLICATION_FACTOR, configName, createNodeSet, asyncId, collectionProperties); + + if (asyncId == null) { + CollectionAdminRequest.createCollection(collectionName, configName, NUM_SHARDS, REPLICATION_FACTOR) + .setCreateNodeSet(createNodeSet) + .setProperties(collectionProperties) + .process(miniCluster.getSolrClient()); + } + else { + CollectionAdminRequest.createCollection(collectionName, configName, NUM_SHARDS, REPLICATION_FACTOR) + .setCreateNodeSet(createNodeSet) + .setProperties(collectionProperties) + .processAndWait(miniCluster.getSolrClient(), 30); + } } @Test @@ -151,11 +161,6 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase { log.info("#### Creating a collection"); final String asyncId = (random().nextBoolean() ? null : "asyncId("+collectionName+".create)="+random().nextInt()); createCollection(miniCluster, collectionName, null, asyncId, null, null); - if (asyncId != null) { - final RequestStatusState state = AbstractFullDistribZkTestBase.getRequestStateAfterCompletion(asyncId, 330, - cloudSolrClient); - assertSame("did not see async createCollection completion", RequestStatusState.COMPLETED, state); - } ZkStateReader zkStateReader = miniCluster.getSolrClient().getZkStateReader(); AbstractDistribZkTestBase.waitForRecoveriesToFinish(collectionName, zkStateReader, true, true, 330); @@ -205,19 +210,11 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase { assertTrue(startedServer.isRunning()); assertEquals(NUM_SERVERS, miniCluster.getJettySolrRunners().size()); - - // delete the collection we created earlier - miniCluster.deleteCollection(collectionName); - AbstractDistribZkTestBase.waitForCollectionToDisappear(collectionName, zkStateReader, true, true, 330); + CollectionAdminRequest.deleteCollection(collectionName).process(miniCluster.getSolrClient()); // create it again String asyncId2 = (random().nextBoolean() ? null : "asyncId("+collectionName+".create)="+random().nextInt()); createCollection(miniCluster, collectionName, null, asyncId2, null, null); - if (asyncId2 != null) { - final RequestStatusState state = AbstractFullDistribZkTestBase.getRequestStateAfterCompletion(asyncId2, 330, - cloudSolrClient); - assertSame("did not see async createCollection completion", RequestStatusState.COMPLETED, state); - } AbstractDistribZkTestBase.waitForRecoveriesToFinish(collectionName, zkStateReader, true, true, 330); // check that there's no left-over state @@ -246,10 +243,6 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase { // create collection final String asyncId = (random().nextBoolean() ? null : "asyncId("+collectionName+".create)="+random().nextInt()); createCollection(miniCluster, collectionName, OverseerCollectionMessageHandler.CREATE_NODE_SET_EMPTY, asyncId, null, null); - if (asyncId != null) { - final RequestStatusState state = AbstractFullDistribZkTestBase.getRequestStateAfterCompletion(asyncId, 330, cloudSolrClient); - assertSame("did not see async createCollection completion", RequestStatusState.COMPLETED, state); - } try (SolrZkClient zkClient = new SolrZkClient (miniCluster.getZkServer().getZkAddress(), AbstractZkTestCase.TIMEOUT, AbstractZkTestCase.TIMEOUT, null); @@ -267,10 +260,7 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase { } assertEquals(0, coreCount); } - - // delete the collection we created earlier - miniCluster.deleteCollection(collectionName); - AbstractDistribZkTestBase.waitForCollectionToDisappear(collectionName, zkStateReader, true, true, 330); + } } finally { @@ -387,9 +377,6 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase { assertEquals(numDocs, rsp.getResults().getNumFound()); } - // delete the collection we created earlier - miniCluster.deleteCollection(collectionName); - AbstractDistribZkTestBase.waitForCollectionToDisappear(collectionName, zkStateReader, true, true, 330); } } finally { @@ -418,10 +405,6 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase { final Map collectionProperties = new HashMap<>(); collectionProperties.put(CoreDescriptor.CORE_CONFIG, "solrconfig-sortingmergepolicyfactory.xml"); createCollection(miniCluster, collectionName, null, asyncId, Boolean.TRUE, collectionProperties); - if (asyncId != null) { - final RequestStatusState state = AbstractFullDistribZkTestBase.getRequestStateAfterCompletion(asyncId, 330, cloudSolrClient); - assertSame("did not see async createCollection completion", RequestStatusState.COMPLETED, state); - } } ZkStateReader zkStateReader = cloudSolrClient.getZkStateReader(); @@ -444,9 +427,6 @@ public class TestMiniSolrCloudCluster extends LuceneTestCase { tstes.queryTimestampDescendingSegmentTerminateEarlyYesGrouped(cloudSolrClient); tstes.queryTimestampAscendingSegmentTerminateEarlyYes(cloudSolrClient); // uses a sort order that is _not_ compatible with the merge sort order - // delete the collection we created earlier - miniCluster.deleteCollection(collectionName); - AbstractDistribZkTestBase.waitForCollectionToDisappear(collectionName, zkStateReader, true, true, 330); } finally { miniCluster.shutdown(); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java b/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java index b79e8f9..3f2850b 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestMiniSolrCloudClusterSSL.java @@ -17,10 +17,8 @@ package org.apache.solr.cloud; import javax.net.ssl.SSLContext; -import java.io.File; import java.io.IOException; import java.lang.invoke.MethodHandles; -import java.util.Collections; import java.util.List; import org.apache.http.client.HttpClient; @@ -40,6 +38,7 @@ import org.apache.solr.client.solrj.embedded.JettySolrRunner; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.impl.HttpClientUtil; import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.request.CoreAdminRequest; import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction; @@ -167,9 +166,7 @@ public class TestMiniSolrCloudClusterSSL extends SolrTestCaseJ4 { public static void checkClusterWithCollectionCreations(final MiniSolrCloudCluster cluster, final SSLTestConfig sslConfig) throws Exception { - cluster.uploadConfigDir(new File(SolrTestCaseJ4.TEST_HOME() + File.separator + - "collection1" + File.separator + "conf"), - CONF_NAME); + cluster.uploadConfigSet(SolrTestCaseJ4.TEST_PATH().resolve("collection1").resolve("conf"), CONF_NAME); checkCreateCollection(cluster, "first_collection"); @@ -196,11 +193,10 @@ public class TestMiniSolrCloudClusterSSL extends SolrTestCaseJ4 { */ private static void checkCreateCollection(final MiniSolrCloudCluster cluster, final String collection) throws Exception { - assertNotNull(cluster.createCollection(collection, - /* 1 shard/replica per server */ NUM_SERVERS, 1, - CONF_NAME, null, null, - Collections.singletonMap("config","solrconfig-tlog.xml"))); final CloudSolrClient cloudClient = cluster.getSolrClient(); + CollectionAdminRequest.createCollection(collection, CONF_NAME, NUM_SERVERS, 1) + .withProperty("config", "solrconfig-tlog.xml") + .process(cloudClient); ZkStateReader zkStateReader = cloudClient.getZkStateReader(); AbstractDistribZkTestBase.waitForRecoveriesToFinish(collection, zkStateReader, true, true, 330); assertEquals("sanity query", 0, cloudClient.query(collection, params("q","*:*")).getStatus()); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java index 2e54679..966d8ef 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java @@ -16,9 +16,8 @@ */ package org.apache.solr.cloud; -import java.lang.invoke.MethodHandles; - import java.io.IOException; +import java.lang.invoke.MethodHandles; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; @@ -33,36 +32,29 @@ import java.util.Random; import java.util.Set; import java.util.TreeSet; +import org.apache.commons.io.FilenameUtils; +import org.apache.lucene.util.TestUtil; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.embedded.JettySolrRunner; -import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.response.QueryResponse; - -import org.apache.solr.cloud.SolrCloudTestCase; - import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.params.ModifiableSolrParams; import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.NamedList; -import org.apache.solr.response.transform.DocTransformer; // jdoc -import org.apache.solr.response.transform.RawValueTransformerFactory; // jdoc +import org.apache.solr.response.transform.DocTransformer; +import org.apache.solr.response.transform.RawValueTransformerFactory; import org.apache.solr.response.transform.TransformerFactory; - - import org.apache.solr.util.RandomizeSSL; -import org.apache.lucene.util.TestUtil; - -import org.apache.commons.io.FilenameUtils; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import org.junit.AfterClass; import org.junit.BeforeClass; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** @see TestCloudPseudoReturnFields */ @RandomizeSSL(clientAuth=0.0,reason="client auth uses too much RAM") @@ -125,7 +117,7 @@ public class TestRandomFlRTGCloud extends SolrCloudTestCase { new NotIncludedValidator("score","score_alias:score"))); @BeforeClass - private static void createMiniSolrCloudCluster() throws Exception { + public static void createMiniSolrCloudCluster() throws Exception { // 50% runs use single node/shard a FL_VALIDATORS with all validators known to work on single node // 50% runs use multi node/shard with FL_VALIDATORS only containing stuff that works in cloud @@ -142,17 +134,15 @@ public class TestRandomFlRTGCloud extends SolrCloudTestCase { final Path configDir = Paths.get(TEST_HOME(), "collection1", "conf"); configureCluster(numNodes).addConfig(configName, configDir).configure(); - - Map collectionProperties = new HashMap<>(); - collectionProperties.put("config", "solrconfig-tlog.xml"); - collectionProperties.put("schema", "schema-psuedo-fields.xml"); - assertNotNull(cluster.createCollection(COLLECTION_NAME, numShards, repFactor, - configName, null, null, collectionProperties)); - CLOUD_CLIENT = cluster.getSolrClient(); CLOUD_CLIENT.setDefaultCollection(COLLECTION_NAME); + CollectionAdminRequest.createCollection(COLLECTION_NAME, configName, numShards, repFactor) + .withProperty("config", "solrconfig-tlog.xml") + .withProperty("schema", "schema-psuedo-fields.xml") + .process(CLOUD_CLIENT); + waitForRecoveriesToFinish(CLOUD_CLIENT); for (JettySolrRunner jetty : cluster.getJettySolrRunners()) { http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestRequestForwarding.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestRequestForwarding.java b/solr/core/src/test/org/apache/solr/cloud/TestRequestForwarding.java index e4737c4..8d85bf6 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestRequestForwarding.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestRequestForwarding.java @@ -16,7 +16,6 @@ */ package org.apache.solr.cloud; -import java.io.File; import java.net.URL; import org.apache.solr.SolrTestCaseJ4; @@ -38,8 +37,7 @@ public class TestRequestForwarding extends SolrTestCaseJ4 { System.setProperty("solr.test.sys.prop1", "propone"); System.setProperty("solr.test.sys.prop2", "proptwo"); solrCluster = new MiniSolrCloudCluster(3, createTempDir(), buildJettyConfig("/solr")); - File configDir = getFile("solr").toPath().resolve("collection1/conf").toFile(); - solrCluster.uploadConfigDir(configDir, "conf1"); + solrCluster.uploadConfigSet(TEST_PATH().resolve("collection1/conf"), "conf1"); } @Override http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java b/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java index 4091d2d..ea58b7a 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestSolrCloudWithKerberosAlt.java @@ -176,8 +176,7 @@ public class TestSolrCloudWithKerberosAlt extends LuceneTestCase { // create collection String configName = "solrCloudCollectionConfig"; - File configDir = new File(SolrTestCaseJ4.TEST_HOME() + File.separator + "collection1" + File.separator + "conf"); - miniCluster.uploadConfigDir(configDir, configName); + miniCluster.uploadConfigSet(SolrTestCaseJ4.TEST_PATH().resolve("collection1/conf"), configName); CollectionAdminRequest.Create createRequest = new CollectionAdminRequest.Create(); createRequest.setCollectionName(collectionName); http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/df09867c/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java ---------------------------------------------------------------------- diff --git a/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java b/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java index fc6d18c..9f29d3d 100644 --- a/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java +++ b/solr/core/src/test/org/apache/solr/cloud/TestStressCloudBlindAtomicUpdates.java @@ -19,29 +19,30 @@ package org.apache.solr.cloud; import java.lang.invoke.MethodHandles; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.concurrent.atomic.AtomicLong; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; +import java.util.concurrent.atomic.AtomicLong; +import org.apache.lucene.util.LuceneTestCase.Slow; +import org.apache.lucene.util.TestUtil; import org.apache.solr.SolrTestCaseJ4.SuppressSSL; -import org.apache.solr.cloud.SolrCloudTestCase; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.embedded.JettySolrRunner; -import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.impl.CloudSolrClient; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.request.UpdateRequest; -import org.apache.solr.client.solrj.response.UpdateResponse; import org.apache.solr.client.solrj.request.schema.SchemaRequest.Field; import org.apache.solr.client.solrj.request.schema.SchemaRequest.FieldType; +import org.apache.solr.client.solrj.response.UpdateResponse; import org.apache.solr.client.solrj.response.schema.SchemaResponse.FieldResponse; import org.apache.solr.client.solrj.response.schema.SchemaResponse.FieldTypeResponse; import org.apache.solr.common.SolrDocument; @@ -52,13 +53,9 @@ import org.apache.solr.common.params.SolrParams; import org.apache.solr.common.util.ExecutorUtil; import org.apache.solr.util.DefaultSolrThreadFactory; import org.apache.solr.util.TestInjection; -import org.apache.lucene.util.LuceneTestCase.Slow; -import org.apache.lucene.util.TestUtil; - import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -125,17 +122,15 @@ public class TestStressCloudBlindAtomicUpdates extends SolrCloudTestCase { final Path configDir = Paths.get(TEST_HOME(), "collection1", "conf"); configureCluster(numNodes).addConfig(configName, configDir).configure(); - - Map collectionProperties = new HashMap<>(); - collectionProperties.put("config", "solrconfig-tlog.xml"); - collectionProperties.put("schema", "schema-minimal-atomic-stress.xml"); - assertNotNull(cluster.createCollection(COLLECTION_NAME, numShards, repFactor, - configName, null, null, collectionProperties)); - CLOUD_CLIENT = cluster.getSolrClient(); CLOUD_CLIENT.setDefaultCollection(COLLECTION_NAME); + CollectionAdminRequest.createCollection(COLLECTION_NAME, configName, numShards, repFactor) + .withProperty("config", "solrconfig-tlog.xml") + .withProperty("schema", "schema-minimal-atomic-stress.xml") + .process(CLOUD_CLIENT); + waitForRecoveriesToFinish(CLOUD_CLIENT); for (JettySolrRunner jetty : cluster.getJettySolrRunners()) {