mtitek-solr-embed-samples/src/test/java/mtitek/solr/embed/samples/MiniSolrCloudClusterTest.java:
package mtitek.solr.embed.samples;
import java.io.File;
import java.nio.file.Path;
import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.ConfigSetAdminRequest;
import org.apache.solr.client.solrj.response.CollectionAdminResponse;
import org.apache.solr.client.solrj.response.ConfigSetAdminResponse;
import org.apache.solr.cloud.MiniSolrCloudCluster;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
public class MiniSolrCloudClusterTest {
@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Test
public void test() throws Exception {
final File newFolder = temporaryFolder.newFolder("MiniSolrCloudClusterTest");
final Path baseDir = newFolder.toPath();
final int numServers = 1;
// random unassigned HTTP port
final int jettyPort = 0;
final JettyConfig jettyConfig = JettyConfig.builder().setPort(jettyPort).build();
// create a MiniSolrCloudCluster instance
final MiniSolrCloudCluster miniSolrCloudCluster = new MiniSolrCloudCluster(numServers, baseDir, jettyConfig);
// Upload Solr configuration directory to ZooKeeper
String solrZKConfigDir = "src/test/resources/conf";
String solrZKConfigName = "MySolrZKConfigName";
File configDir = new File(solrZKConfigDir);
miniSolrCloudCluster.uploadConfigSet(configDir.toPath(), solrZKConfigName);
// get Solr Client
CloudSolrClient cloudSolrClient = miniSolrCloudCluster.getSolrClient();
// list ConfigSets
{
ConfigSetAdminResponse adminResponse = listConfigSets(cloudSolrClient);
System.out.println(adminResponse);
}
// get cluster status
{
CollectionAdminResponse adminResponse = getClusterStatus(cloudSolrClient);
System.out.println(adminResponse);
}
// shutdown MiniSolrCloudCluster
miniSolrCloudCluster.shutdown();
}
private ConfigSetAdminResponse listConfigSets(CloudSolrClient cloudSolrClient) throws Exception {
final ConfigSetAdminRequest.List adminRequest = new ConfigSetAdminRequest.List();
ConfigSetAdminResponse adminResponse = adminRequest.process(cloudSolrClient);
return adminResponse;
}
private CollectionAdminResponse getClusterStatus(CloudSolrClient cloudSolrClient) throws Exception {
final CollectionAdminRequest.ClusterStatus adminRequest = CollectionAdminRequest.ClusterStatus.getClusterStatus();
CollectionAdminResponse adminResponse = adminRequest.process(cloudSolrClient);
return adminResponse;
}
}
Running this JUnit test class should output the following:
{responseHeader={status=0,QTime=30},configSets=[MySolrZKConfigName]}
{responseHeader={status=0,QTime=16},cluster={collections={},live_nodes=[127.0.0.1:51073_solr]}}