/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.component.solr;
import java.io.IOException;
import org.apache.log4j.Logger;
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.HttpSolrServer;
public class SolrFixtures {
static Logger log = Logger.getLogger(SolrFixtures.class);
private static JettySolrRunner solrRunner;
private static JettySolrRunner solrHttpsRunner;
private static HttpSolrClient solrServer;
private static HttpSolrClient solrHttpsServer;
private static SolrCloudFixture cloudFixture;
private static int port;
private static int httpsPort;
public enum TestServerType {
USE_HTTP, USE_HTTPS, USE_CLOUD
}
TestServerType serverType;
SolrFixtures(TestServerType serverType) {
this.serverType = serverType;
}
String solrRouteUri() {
if (serverType == TestServerType.USE_HTTPS) {
return "solrs://localhost:" + httpsPort + "/solr";
} else if (serverType == TestServerType.USE_CLOUD) {
String zkAddrStr = cloudFixture.miniCluster.getZkServer().getZkAddress();
return "solrCloud://localhost:" + httpsPort + "/solr?zkHost=" + zkAddrStr
+ "&collection=collection1";
} else {
return "solr://localhost:" + port + "/solr";
}
}
SolrClient getServer() {
if (serverType == TestServerType.USE_HTTPS) {
return solrHttpsServer;
} else if (serverType == TestServerType.USE_CLOUD) {
return cloudFixture.solrClient;
} else {
return solrServer;
}
}
static void createSolrFixtures() throws Exception {
solrHttpsRunner = JettySolrFactory.createJettyTestFixture(true);
httpsPort = solrHttpsRunner.getLocalPort();
log.info("Started Https Test Server: " + solrHttpsRunner.getBaseUrl());
solrHttpsServer = new HttpSolrServer("https://localhost:" + httpsPort + "/solr");
solrHttpsServer.setConnectionTimeout(60000);
solrRunner = JettySolrFactory.createJettyTestFixture(false);
port = solrRunner.getLocalPort();
solrServer = new HttpSolrServer("http://localhost:" + port + "/solr");
log.info("Started Test Server: " + solrRunner.getBaseUrl());
cloudFixture = new SolrCloudFixture("src/test/resources/solr");
}
public static void teardownSolrFixtures() throws Exception {
if (solrRunner != null) {
solrRunner.stop();
}
if (solrHttpsRunner != null) {
solrHttpsRunner.stop();
}
if (cloudFixture != null) {
cloudFixture.teardown();
}
}
public static void clearIndex() throws SolrServerException, IOException {
if (solrServer != null) {
// Clear the Solr index.
solrServer.deleteByQuery("*:*");
solrServer.commit();
}
if (solrHttpsServer != null) {
solrHttpsServer.deleteByQuery("*:*");
solrHttpsServer.commit();
}
if (cloudFixture != null) {
cloudFixture.solrClient.deleteByQuery("*:*");
cloudFixture.solrClient.commit();
}
}
}