This is an automated email from the ASF dual-hosted git repository.

dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 8e62c268688 SOLR-18234: Moved packagemanager CLI stuff to a CLI 
package (#5018)
8e62c268688 is described below

commit 8e62c2686882aa704480ab13b6a60ee8f7b5c8af
Author: Jalaz Kumar <[email protected]>
AuthorDate: Fri Oct 9 20:30:55 2026 +0530

    SOLR-18234: Moved packagemanager CLI stuff to a CLI package (#5018)
    
    and stop test-framework from depending on CLI.
---
 .../SOLR-18234-solr-cli-detangle-core.yml          |  9 +++++++
 .../org/apache/solr/cli/PackageSubCommand.java     |  4 ++--
 .../src/java/org/apache/solr/cli/PackageTool.java  | 16 ++++++-------
 .../src/java/org/apache/solr/cli/ZkCpTool.java     |  2 +-
 .../src/java/org/apache/solr/cli/ZkMkrootTool.java |  2 +-
 .../src/java/org/apache/solr/cli/ZkMvTool.java     |  2 +-
 .../packagemanager/DefaultPackageRepository.java   |  2 +-
 .../{ => cli}/packagemanager/PackageManager.java   | 10 ++++----
 .../packagemanager/PackageRepository.java          |  2 +-
 .../{ => cli}/packagemanager/PackageUtils.java     |  4 ++--
 .../packagemanager/RepositoryManager.java          |  8 +++----
 .../solr/{ => cli}/packagemanager/SolrPackage.java |  2 +-
 .../packagemanager/SolrPackageInstance.java        |  6 ++---
 .../{ => cli}/packagemanager/package-info.java     |  2 +-
 .../solr/{cloud => cli}/SolrCloudExampleTest.java  | 11 ++-------
 .../packagemanager/TestPackageManager.java         |  2 +-
 .../solr/filestore/TestDistribFileStore.java       |  9 +++++--
 .../solr/security/BasicAuthIntegrationTest.java    | 13 +++++-----
 solr/test-framework/build.gradle                   |  4 +---
 solr/test-framework/gradle.lockfile                |  4 ++--
 .../solr/cloud/AbstractFullDistribZkTestBase.java  | 28 +++++++++-------------
 21 files changed, 71 insertions(+), 71 deletions(-)

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 00000000000..276cf5861ff
--- /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 9b8130227af..0b4b35e7e07 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 <subcommand> 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 5e7ebe39a9d..c1ef0a086d9 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 @@ package org.apache.solr.cli;
 
 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.Level;
 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 7d8959f8eec..0798a168245 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 ee0225694fe..317bd7965b4 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 8a0db12b037..08eea82044c 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 8fbbfbbd347..2cf7416ae27 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 e344f8ec35d..7db659bbca1 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 java.util.stream.Collectors;
 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.StrUtils;
 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 e791a49e542..2586ee600d6 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 c97bdab3123..35fdc24d97d 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.ZipEntry;
 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.common.util.Utils;
 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 29a86c75e0a..64af782131f 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.Locale;
 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.cloud.SolrZkClient;
 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 750a23d2162..f57c5713dd2 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 fd94bc8572f..040de2babc4 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 1fa175dec4b..0a42a28f435 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 c7a6e70ef29..a9b680c207f 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.Set;
 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 4d6bedf078a..2793af1641d 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 133116e6908..7a6affe1b9e 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.StrUtils;
 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 class TestDistribFileStore extends 
SolrCloudTestCase {
   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 71c1da0c463..7ce0630de81 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.Map;
 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 class BasicAuthIntegrationTest extends 
SolrCloudAuthTestCase {
     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 aa4114f3c96..ff9e87339db 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 e980dd6d4e7..8802fb667e4 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 0b8e194abc7..d774bb92efd 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.AtomicInteger;
 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.SolrNamedThreadFactory;
 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 abstract class AbstractFullDistribZkTestBase 
extends BaseDistributedSearc
       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

Reply via email to