diff --git a/changelog/unreleased/SOLR-18234-solr-cli-detangle-core.yml b/changelog/unreleased/SOLR-18234-solr-cli-detangle-core.yml new file mode 100644 index 000000000000..276cf5861ff0 --- /dev/null +++ b/changelog/unreleased/SOLR-18234-solr-cli-detangle-core.yml @@ -0,0 +1,9 @@ +title: + Move packagemanager under CLI and stop test-framework from depending on CLI +type: other +authors: + - name: Jalaz Kumar + nick: jaykay12 +links: + - name: SOLR-18234 + url: https://issues.apache.org/jira/browse/SOLR-18234 diff --git a/solr/core/src/java/org/apache/solr/cli/PackageSubCommand.java b/solr/core/src/java/org/apache/solr/cli/PackageSubCommand.java index 9b8130227af1..0b4b35e7e07f 100644 --- a/solr/core/src/java/org/apache/solr/cli/PackageSubCommand.java +++ b/solr/core/src/java/org/apache/solr/cli/PackageSubCommand.java @@ -18,8 +18,8 @@ package org.apache.solr.cli; import org.apache.commons.cli.CommandLine; -import org.apache.solr.packagemanager.PackageManager; -import org.apache.solr.packagemanager.RepositoryManager; +import org.apache.solr.cli.packagemanager.PackageManager; +import org.apache.solr.cli.packagemanager.RepositoryManager; /** Shared picocli wiring for {@code bin/solr package leaves} */ @SuppressWarnings("UnnecessarilyFullyQualified") diff --git a/solr/core/src/java/org/apache/solr/cli/PackageTool.java b/solr/core/src/java/org/apache/solr/cli/PackageTool.java index 5e7ebe39a9d6..c1ef0a086d92 100644 --- a/solr/core/src/java/org/apache/solr/cli/PackageTool.java +++ b/solr/core/src/java/org/apache/solr/cli/PackageTool.java @@ -18,8 +18,8 @@ import static org.apache.solr.cli.SolrCLI.printGreen; import static org.apache.solr.cli.SolrCLI.printRed; -import static org.apache.solr.packagemanager.PackageUtils.format; -import static org.apache.solr.packagemanager.PackageUtils.formatGreen; +import static org.apache.solr.cli.packagemanager.PackageUtils.format; +import static org.apache.solr.cli.packagemanager.PackageUtils.formatGreen; import java.lang.invoke.MethodHandles; import java.nio.file.Files; @@ -33,16 +33,16 @@ import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.core.config.Configurator; import org.apache.lucene.util.SuppressForbidden; +import org.apache.solr.cli.packagemanager.PackageManager; +import org.apache.solr.cli.packagemanager.PackageUtils; +import org.apache.solr.cli.packagemanager.RepositoryManager; +import org.apache.solr.cli.packagemanager.SolrPackage; +import org.apache.solr.cli.packagemanager.SolrPackage.SolrPackageRelease; +import org.apache.solr.cli.packagemanager.SolrPackageInstance; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrException.ErrorCode; import org.apache.solr.common.util.Pair; -import org.apache.solr.packagemanager.PackageManager; -import org.apache.solr.packagemanager.PackageUtils; -import org.apache.solr.packagemanager.RepositoryManager; -import org.apache.solr.packagemanager.SolrPackage; -import org.apache.solr.packagemanager.SolrPackage.SolrPackageRelease; -import org.apache.solr.packagemanager.SolrPackageInstance; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/solr/core/src/java/org/apache/solr/cli/ZkCpTool.java b/solr/core/src/java/org/apache/solr/cli/ZkCpTool.java index 7d8959f8eecb..0798a168245f 100644 --- a/solr/core/src/java/org/apache/solr/cli/ZkCpTool.java +++ b/solr/core/src/java/org/apache/solr/cli/ZkCpTool.java @@ -16,7 +16,7 @@ */ package org.apache.solr.cli; -import static org.apache.solr.packagemanager.PackageUtils.format; +import static org.apache.solr.cli.packagemanager.PackageUtils.format; import java.lang.invoke.MethodHandles; import java.lang.reflect.InvocationTargetException; diff --git a/solr/core/src/java/org/apache/solr/cli/ZkMkrootTool.java b/solr/core/src/java/org/apache/solr/cli/ZkMkrootTool.java index ee0225694fe0..317bd7965b4d 100644 --- a/solr/core/src/java/org/apache/solr/cli/ZkMkrootTool.java +++ b/solr/core/src/java/org/apache/solr/cli/ZkMkrootTool.java @@ -16,7 +16,7 @@ */ package org.apache.solr.cli; -import static org.apache.solr.packagemanager.PackageUtils.format; +import static org.apache.solr.cli.packagemanager.PackageUtils.format; import java.lang.invoke.MethodHandles; import java.util.concurrent.TimeUnit; diff --git a/solr/core/src/java/org/apache/solr/cli/ZkMvTool.java b/solr/core/src/java/org/apache/solr/cli/ZkMvTool.java index 8a0db12b037a..08eea82044c4 100644 --- a/solr/core/src/java/org/apache/solr/cli/ZkMvTool.java +++ b/solr/core/src/java/org/apache/solr/cli/ZkMvTool.java @@ -16,7 +16,7 @@ */ package org.apache.solr.cli; -import static org.apache.solr.packagemanager.PackageUtils.format; +import static org.apache.solr.cli.packagemanager.PackageUtils.format; import java.lang.invoke.MethodHandles; import java.util.Locale; diff --git a/solr/core/src/java/org/apache/solr/packagemanager/DefaultPackageRepository.java b/solr/core/src/java/org/apache/solr/cli/packagemanager/DefaultPackageRepository.java similarity index 98% rename from solr/core/src/java/org/apache/solr/packagemanager/DefaultPackageRepository.java rename to solr/core/src/java/org/apache/solr/cli/packagemanager/DefaultPackageRepository.java index 8fbbfbbd3477..2cf7416ae273 100644 --- a/solr/core/src/java/org/apache/solr/packagemanager/DefaultPackageRepository.java +++ b/solr/core/src/java/org/apache/solr/cli/packagemanager/DefaultPackageRepository.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.solr.packagemanager; +package org.apache.solr.cli.packagemanager; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java b/solr/core/src/java/org/apache/solr/cli/packagemanager/PackageManager.java similarity index 99% rename from solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java rename to solr/core/src/java/org/apache/solr/cli/packagemanager/PackageManager.java index e344f8ec35d8..7db659bbca18 100644 --- a/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java +++ b/solr/core/src/java/org/apache/solr/cli/packagemanager/PackageManager.java @@ -15,9 +15,9 @@ * limitations under the License. */ -package org.apache.solr.packagemanager; +package org.apache.solr.cli.packagemanager; -import static org.apache.solr.packagemanager.PackageUtils.getMapper; +import static org.apache.solr.cli.packagemanager.PackageUtils.getMapper; import com.jayway.jsonpath.InvalidPathException; import com.jayway.jsonpath.JsonPath; @@ -41,6 +41,9 @@ import org.apache.solr.cli.CLIUtils; import org.apache.solr.cli.SolrCLI; import org.apache.solr.cli.ToolRuntime; +import org.apache.solr.cli.packagemanager.SolrPackage.Command; +import org.apache.solr.cli.packagemanager.SolrPackage.Manifest; +import org.apache.solr.cli.packagemanager.SolrPackage.Plugin; import org.apache.solr.client.api.util.SolrVersion; import org.apache.solr.client.solrj.RemoteSolrException; import org.apache.solr.client.solrj.SolrClient; @@ -64,9 +67,6 @@ import org.apache.solr.common.util.Utils; import org.apache.solr.filestore.DistribFileStore; import org.apache.solr.handler.admin.ContainerPluginsApi; -import org.apache.solr.packagemanager.SolrPackage.Command; -import org.apache.solr.packagemanager.SolrPackage.Manifest; -import org.apache.solr.packagemanager.SolrPackage.Plugin; import org.apache.solr.pkg.SolrPackageLoader; import org.apache.zookeeper.KeeperException; import org.slf4j.Logger; diff --git a/solr/core/src/java/org/apache/solr/packagemanager/PackageRepository.java b/solr/core/src/java/org/apache/solr/cli/packagemanager/PackageRepository.java similarity index 97% rename from solr/core/src/java/org/apache/solr/packagemanager/PackageRepository.java rename to solr/core/src/java/org/apache/solr/cli/packagemanager/PackageRepository.java index e791a49e5420..2586ee600d69 100644 --- a/solr/core/src/java/org/apache/solr/packagemanager/PackageRepository.java +++ b/solr/core/src/java/org/apache/solr/cli/packagemanager/PackageRepository.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.solr.packagemanager; +package org.apache.solr.cli.packagemanager; import java.io.IOException; import java.nio.file.Path; diff --git a/solr/core/src/java/org/apache/solr/packagemanager/PackageUtils.java b/solr/core/src/java/org/apache/solr/cli/packagemanager/PackageUtils.java similarity index 99% rename from solr/core/src/java/org/apache/solr/packagemanager/PackageUtils.java rename to solr/core/src/java/org/apache/solr/cli/packagemanager/PackageUtils.java index c97bdab31236..35fdc24d97de 100644 --- a/solr/core/src/java/org/apache/solr/packagemanager/PackageUtils.java +++ b/solr/core/src/java/org/apache/solr/cli/packagemanager/PackageUtils.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.solr.packagemanager; +package org.apache.solr.cli.packagemanager; import static org.apache.solr.client.solrj.util.SolrIdentifierValidator.validateCollectionName; @@ -35,6 +35,7 @@ import java.util.zip.ZipFile; import org.apache.commons.io.IOUtils; import org.apache.solr.cli.CLIUtils; +import org.apache.solr.cli.packagemanager.SolrPackage.Manifest; import org.apache.solr.client.api.model.UploadToFileStoreResponse; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrRequest; @@ -50,7 +51,6 @@ import org.apache.solr.filestore.ClusterFileStore; import org.apache.solr.filestore.DistribFileStore; import org.apache.solr.filestore.FileStoreAPI; -import org.apache.solr.packagemanager.SolrPackage.Manifest; import org.apache.solr.util.SolrJacksonAnnotationInspector; import org.apache.zookeeper.server.ByteBufferInputStream; diff --git a/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java b/solr/core/src/java/org/apache/solr/cli/packagemanager/RepositoryManager.java similarity index 98% rename from solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java rename to solr/core/src/java/org/apache/solr/cli/packagemanager/RepositoryManager.java index 29a86c75e0ad..64af782131f4 100644 --- a/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java +++ b/solr/core/src/java/org/apache/solr/cli/packagemanager/RepositoryManager.java @@ -15,9 +15,9 @@ * limitations under the License. */ -package org.apache.solr.packagemanager; +package org.apache.solr.cli.packagemanager; -import static org.apache.solr.packagemanager.PackageUtils.getMapper; +import static org.apache.solr.cli.packagemanager.PackageUtils.getMapper; import java.io.IOException; import java.io.InputStream; @@ -37,6 +37,8 @@ import java.util.Map; import java.util.stream.Collectors; import org.apache.solr.cli.ToolRuntime; +import org.apache.solr.cli.packagemanager.SolrPackage.Artifact; +import org.apache.solr.cli.packagemanager.SolrPackage.SolrPackageRelease; import org.apache.solr.client.api.util.SolrVersion; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrRequest; @@ -53,8 +55,6 @@ import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.Utils; import org.apache.solr.filestore.ClusterFileStore; -import org.apache.solr.packagemanager.SolrPackage.Artifact; -import org.apache.solr.packagemanager.SolrPackage.SolrPackageRelease; import org.apache.solr.pkg.PackageAPI; import org.apache.solr.pkg.SolrPackageLoader; import org.apache.zookeeper.KeeperException; diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackage.java b/solr/core/src/java/org/apache/solr/cli/packagemanager/SolrPackage.java similarity index 98% rename from solr/core/src/java/org/apache/solr/packagemanager/SolrPackage.java rename to solr/core/src/java/org/apache/solr/cli/packagemanager/SolrPackage.java index 750a23d21621..f57c5713dd2e 100644 --- a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackage.java +++ b/solr/core/src/java/org/apache/solr/cli/packagemanager/SolrPackage.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.apache.solr.packagemanager; +package org.apache.solr.cli.packagemanager; import java.util.Date; import java.util.List; diff --git a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageInstance.java b/solr/core/src/java/org/apache/solr/cli/packagemanager/SolrPackageInstance.java similarity index 93% rename from solr/core/src/java/org/apache/solr/packagemanager/SolrPackageInstance.java rename to solr/core/src/java/org/apache/solr/cli/packagemanager/SolrPackageInstance.java index fd94bc8572f7..040de2babc4b 100644 --- a/solr/core/src/java/org/apache/solr/packagemanager/SolrPackageInstance.java +++ b/solr/core/src/java/org/apache/solr/cli/packagemanager/SolrPackageInstance.java @@ -15,16 +15,16 @@ * limitations under the License. */ -package org.apache.solr.packagemanager; +package org.apache.solr.cli.packagemanager; import com.fasterxml.jackson.annotation.JsonIgnore; import java.util.List; import java.util.Map; import java.util.Objects; +import org.apache.solr.cli.packagemanager.SolrPackage.Manifest; +import org.apache.solr.cli.packagemanager.SolrPackage.Plugin; import org.apache.solr.common.annotation.JsonProperty; import org.apache.solr.common.util.ReflectMapWriter; -import org.apache.solr.packagemanager.SolrPackage.Manifest; -import org.apache.solr.packagemanager.SolrPackage.Plugin; /** Describes one instance of a package as it exists in Solr when installed. */ public class SolrPackageInstance implements ReflectMapWriter { diff --git a/solr/core/src/java/org/apache/solr/packagemanager/package-info.java b/solr/core/src/java/org/apache/solr/cli/packagemanager/package-info.java similarity index 95% rename from solr/core/src/java/org/apache/solr/packagemanager/package-info.java rename to solr/core/src/java/org/apache/solr/cli/packagemanager/package-info.java index 1fa175dec4be..0a42a28f435e 100644 --- a/solr/core/src/java/org/apache/solr/packagemanager/package-info.java +++ b/solr/core/src/java/org/apache/solr/cli/packagemanager/package-info.java @@ -16,4 +16,4 @@ */ /** This package contains Package Manager (CLI) implementation */ -package org.apache.solr.packagemanager; +package org.apache.solr.cli.packagemanager; diff --git a/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java b/solr/core/src/test/org/apache/solr/cli/SolrCloudExampleTest.java similarity index 95% rename from solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java rename to solr/core/src/test/org/apache/solr/cli/SolrCloudExampleTest.java index c7a6e70ef295..a9b680c207f9 100644 --- a/solr/core/src/test/org/apache/solr/cloud/SolrCloudExampleTest.java +++ b/solr/core/src/test/org/apache/solr/cli/SolrCloudExampleTest.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.solr.cloud; +package org.apache.solr.cli; import java.lang.invoke.MethodHandles; import java.nio.file.Files; @@ -23,16 +23,9 @@ import java.util.concurrent.TimeUnit; import org.apache.commons.cli.CommandLine; import org.apache.solr.SolrTestCaseJ4; -import org.apache.solr.cli.CLITestHelper; -import org.apache.solr.cli.CLIUtils; -import org.apache.solr.cli.CreateTool; -import org.apache.solr.cli.DeleteTool; -import org.apache.solr.cli.HealthcheckTool; -import org.apache.solr.cli.PostTool; -import org.apache.solr.cli.SolrCLI; -import org.apache.solr.cli.ToolRuntime; import org.apache.solr.client.solrj.request.SolrQuery; import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.cloud.AbstractFullDistribZkTestBase; import org.apache.solr.common.cloud.ZkStateReader; import org.apache.solr.util.ExternalPaths; import org.junit.Test; diff --git a/solr/core/src/test/org/apache/solr/packagemanager/TestPackageManager.java b/solr/core/src/test/org/apache/solr/cli/packagemanager/TestPackageManager.java similarity index 98% rename from solr/core/src/test/org/apache/solr/packagemanager/TestPackageManager.java rename to solr/core/src/test/org/apache/solr/cli/packagemanager/TestPackageManager.java index 4d6bedf078aa..2793af1641d7 100644 --- a/solr/core/src/test/org/apache/solr/packagemanager/TestPackageManager.java +++ b/solr/core/src/test/org/apache/solr/cli/packagemanager/TestPackageManager.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.solr.packagemanager; +package org.apache.solr.cli.packagemanager; import com.jayway.jsonpath.InvalidPathException; import java.io.IOException; diff --git a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java index 133116e6908b..7a6affe1b9e4 100644 --- a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java +++ b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java @@ -50,7 +50,6 @@ import org.apache.solr.common.util.SuppressForbidden; import org.apache.solr.common.util.Utils; import org.apache.solr.embedded.JettySolrRunner; -import org.apache.solr.packagemanager.PackageUtils; import org.apache.solr.util.LogLevel; import org.apache.zookeeper.server.ByteBufferInputStream; import org.junit.Before; @@ -330,7 +329,13 @@ public static T assertResponseValues( public static void uploadKey(byte[] bytes, String path, MiniSolrCloudCluster cluster) throws Exception { JettySolrRunner jetty = cluster.getRandomJetty(random()); - PackageUtils.uploadKey(bytes, path, jetty.getCoreContainer().getSolrHome()); + + FileStoreAPI.MetaData metaData = ClusterFileStore._createJsonMetaData(bytes, null); + DistribFileStore._persistToFile( + jetty.getCoreContainer().getSolrHome(), + path, + ByteBuffer.wrap(bytes), + ByteBuffer.wrap(Utils.toJSON(metaData))); final var syncReq = new FileStoreApi.SyncFile(path); final var syncRsp = syncReq.process(jetty.getSolrClient()); diff --git a/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java b/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java index 71c1da0c463c..7ce0630de81e 100644 --- a/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java +++ b/solr/core/src/test/org/apache/solr/security/BasicAuthIntegrationTest.java @@ -25,16 +25,16 @@ import java.util.Random; import java.util.Set; import java.util.concurrent.TimeUnit; -import org.apache.solr.cli.CLITestHelper; -import org.apache.solr.cli.StatusTool; import org.apache.solr.client.solrj.RemoteSolrException; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrServerException; +import org.apache.solr.client.solrj.jetty.HttpJettySolrClient; import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.client.solrj.request.GenericSolrRequest; import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.request.RequestWriter.StringPayloadContentWriter; +import org.apache.solr.client.solrj.request.SystemInfoRequest; import org.apache.solr.client.solrj.request.UpdateRequest; import org.apache.solr.client.solrj.request.V2Request; import org.apache.solr.client.solrj.request.beans.PluginMeta; @@ -283,10 +283,11 @@ public void testBasicAuth() throws Exception { verifySecurityStatus(httpClient, baseUrl + "/admin/info/key", "key", NOT_NULL_PREDICATE, 20); assertAuthMetricsMinimums(17, 8, 8, 1, 0, 0); - String[] toolArgs = new String[] {"status", "--solr-url", baseUrl}; - int res = CLITestHelper.runTool(toolArgs, StatusTool.class); - if (res == 0) { - fail("Request should have failed because of missing auth"); + try (SolrClient unauthorizedClient = new HttpJettySolrClient.Builder(baseUrl).build()) { + RemoteSolrException statusExp = + expectThrows( + RemoteSolrException.class, () -> new SystemInfoRequest().process(unauthorizedClient)); + assertEquals(401, statusExp.code()); } SolrParams params = new MapSolrParams(Map.of("q", "*:*")); diff --git a/solr/test-framework/build.gradle b/solr/test-framework/build.gradle index aa4114f3c960..ff9e87339db4 100644 --- a/solr/test-framework/build.gradle +++ b/solr/test-framework/build.gradle @@ -60,9 +60,7 @@ dependencies { implementation libs.slf4j.api implementation libs.apache.log4j.api implementation libs.apache.log4j.core - implementation libs.commonscli.commonscli - // Needed on the compile classpath because this project compiles against annotated org.apache.solr.cli types - implementation libs.picocli + implementation libs.opentelemetry.api implementation(libs.opentelemetry.exporter.prometheus) { transitive = false // most things don't want or already have diff --git a/solr/test-framework/gradle.lockfile b/solr/test-framework/gradle.lockfile index e980dd6d4e75..8802fb667e44 100644 --- a/solr/test-framework/gradle.lockfile +++ b/solr/test-framework/gradle.lockfile @@ -32,10 +32,10 @@ com.google.protobuf:protobuf-java:4.36.2=annotationProcessor,errorprone,testAnno com.j256.simplemagic:simplemagic:1.17=jarValidation,runtimeClasspath,testRuntimeClasspath com.jayway.jsonpath:json-path:3.0.0=jarValidation,runtimeClasspath,testRuntimeClasspath com.tdunning:t-digest:3.3=jarValidation,runtimeClasspath,testRuntimeClasspath -commons-cli:commons-cli:1.11.0=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +commons-cli:commons-cli:1.11.0=jarValidation,runtimeClasspath,testRuntimeClasspath commons-codec:commons-codec:1.22.1=jarValidation,runtimeClasspath,testRuntimeClasspath commons-io:commons-io:2.22.0=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath -info.picocli:picocli:4.7.6=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath +info.picocli:picocli:4.7.6=jarValidation,runtimeClasspath,testRuntimeClasspath io.dropwizard.metrics:metrics-core:4.2.39=compileClasspath,jarValidation,runtimeClasspath,testCompileClasspath,testRuntimeClasspath io.github.eisop:dataflow-errorprone:3.41.0-eisop1=annotationProcessor,errorprone,testAnnotationProcessor io.github.java-diff-utils:java-diff-utils:4.12=annotationProcessor,errorprone,testAnnotationProcessor diff --git a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java index 0b8e194abc7c..d774bb92efdc 100644 --- a/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java +++ b/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java @@ -49,10 +49,6 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import org.apache.solr.BaseDistributedSearchTestCase; -import org.apache.solr.cli.ConfigSetUploadTool; -import org.apache.solr.cli.DefaultToolRuntime; -import org.apache.solr.cli.SolrCLI; -import org.apache.solr.cli.ToolRuntime; import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrRequest.METHOD; @@ -100,6 +96,7 @@ import org.apache.solr.common.util.StrUtils; import org.apache.solr.common.util.TimeSource; import org.apache.solr.common.util.Utils; +import org.apache.solr.core.ConfigSetService; import org.apache.solr.core.CoreContainer; import org.apache.solr.core.Diagnostics; import org.apache.solr.core.MockDirectoryFactory; @@ -2224,19 +2221,16 @@ public static void copyConfigUp( Path configSetDir, String srcConfigSet, String dstConfigName, String zkAddr) throws Exception { - Path fullConfDir = configSetDir.resolve(srcConfigSet); - String[] args = - new String[] { - "--conf-name", dstConfigName, - "--conf-dir", fullConfDir.toAbsolutePath().toString(), - "-z", zkAddr - }; - - ToolRuntime runtime = new DefaultToolRuntime(); - ConfigSetUploadTool tool = new ConfigSetUploadTool(runtime); - - int res = tool.runTool(SolrCLI.processCommandLineArgs(tool, args)); - assertEquals("Tool should have returned 0 for success, returned: " + res, 0, res); + Path confPath = + ConfigSetService.getConfigsetPath( + configSetDir.resolve(srcConfigSet).toString(), configSetDir.toString()); + try (SolrZkClient zkClient = + new SolrZkClient.Builder() + .withUrl(zkAddr) + .withTimeout(AbstractZkTestCase.TIMEOUT, TimeUnit.MILLISECONDS) + .build()) { + zkClient.upConfig(confPath, dstConfigName); + } } @Override