Added:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java?rev=1577192&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
(added)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
Thu Mar 13 15:20:59 2014
@@ -0,0 +1,151 @@
+/*
+ * 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.jackrabbit.oak.plugins.index.solr.server;
+
+import java.io.File;
+import java.io.IOException;
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.RemoteSolrServerConfiguration;
+import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.impl.CloudSolrServer;
+import org.apache.solr.client.solrj.impl.HttpSolrServer;
+import org.apache.solr.client.solrj.request.UpdateRequest;
+import org.apache.solr.client.solrj.response.SolrPingResponse;
+import org.apache.solr.cloud.ZkController;
+import org.apache.solr.common.cloud.SolrZkClient;
+import org.apache.solr.common.cloud.ZkStateReader;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * {@link
org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider} for
remote Solr installations.
+ */
+public class RemoteSolrServerProvider implements SolrServerProvider {
+
+ private final Logger log =
LoggerFactory.getLogger(RemoteSolrServerProvider.class);
+
+ private final RemoteSolrServerConfiguration remoteSolrServerConfiguration;
+
+ private SolrServer solrServer;
+
+ public RemoteSolrServerProvider(RemoteSolrServerConfiguration
remoteSolrServerConfiguration) {
+ this.remoteSolrServerConfiguration = remoteSolrServerConfiguration;
+ }
+
+ @Override
+ public SolrServer getSolrServer() throws Exception {
+ if (solrServer == null &&
remoteSolrServerConfiguration.getSolrZkHost() != null &&
remoteSolrServerConfiguration.getSolrZkHost().length() > 0) {
+ try {
+ solrServer = initializeWithCloudSolrServer();
+ } catch (Exception e) {
+ log.warn("unable to initialize SolrCloud client for {}",
remoteSolrServerConfiguration.getSolrZkHost(), e);
+ }
+ }
+ if (solrServer == null &&
remoteSolrServerConfiguration.getSolrHttpUrls() != null &&
remoteSolrServerConfiguration.getSolrHttpUrls().length == 1
+ && remoteSolrServerConfiguration.getSolrHttpUrls()[0] != null
&& remoteSolrServerConfiguration.getSolrHttpUrls()[0].length() > 0) {
+ try {
+ solrServer = initializeWithExistingHttpServer();
+ } catch (Exception e1) {
+ log.warn("unable to initialize Solr HTTP client for {}",
remoteSolrServerConfiguration.getSolrHttpUrls(), e1);
+ }
+ }
+ if (solrServer == null) {
+ throw new IOException("could not connect to any remote Solr
server");
+ }
+ return solrServer;
+ }
+
+ private SolrServer initializeWithExistingHttpServer() throws IOException,
SolrServerException {
+ // try basic Solr HTTP client
+ HttpSolrServer httpSolrServer = new
HttpSolrServer(remoteSolrServerConfiguration.getSolrHttpUrls()[0]);
+ SolrPingResponse ping = httpSolrServer.ping();
+ if (ping != null && 0 == ping.getStatus()) {
+ return httpSolrServer;
+ } else {
+ throw new IOException("the found HTTP Solr server is not alive");
+ }
+
+ }
+
+ private SolrServer initializeWithCloudSolrServer() throws IOException,
SolrServerException {
+ // try SolrCloud client
+ CloudSolrServer cloudSolrServer = new
CloudSolrServer(remoteSolrServerConfiguration.getSolrZkHost());
+ cloudSolrServer.connect();
+ cloudSolrServer.setDefaultCollection("collection1"); // workaround for
first request when the needed collection may not exist
+
+ // create specified collection if it doesn't exists
+ try {
+ createCollectionIfNeeded(cloudSolrServer);
+ } catch (Throwable t) {
+ if (log.isWarnEnabled()) {
+ log.warn("could not create the collection on {}",
remoteSolrServerConfiguration.getSolrZkHost(), t);
+ }
+ }
+
+
cloudSolrServer.setDefaultCollection(remoteSolrServerConfiguration.getSolrCollection());
+
+ // SolrCloud may need some time to sync on collection creation (to
spread it over the shards / replicas)
+ int i = 0;
+ while (i < 3) {
+ try {
+ SolrPingResponse ping = cloudSolrServer.ping();
+ if (ping != null && 0 == ping.getStatus()) {
+ return cloudSolrServer;
+ } else {
+ throw new IOException("the found SolrCloud server is not
alive");
+ }
+ } catch (Exception e) {
+ // wait a bit
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("server is not alive yet, wait a bit", e);
+ }
+ Thread.sleep(3000);
+ } catch (InterruptedException e1) {
+ // do nothing
+ }
+ }
+ i++;
+ }
+ throw new IOException("the found SolrCloud server is not alive");
+
+ }
+
+ private void createCollectionIfNeeded(CloudSolrServer cloudSolrServer)
throws SolrServerException, IOException {
+ String solrCollection =
remoteSolrServerConfiguration.getSolrCollection();
+ try {
+ ZkStateReader zkStateReader = cloudSolrServer.getZkStateReader();
+ SolrZkClient zkClient = zkStateReader.getZkClient();
+ if (zkClient.isConnected() && !zkClient.exists("/configs/" +
solrCollection, false)) {
+ File dir = new File(remoteSolrServerConfiguration != null ?
remoteSolrServerConfiguration.getSolrConfDir() :
getClass().getResource("/solr-oak-conf").getFile());
+ ZkController.uploadConfigDir(zkClient, dir, solrCollection);
+ UpdateRequest req = new UpdateRequest("/admin/collections");
+ req.setParam("action", "CREATE");
+ if (remoteSolrServerConfiguration != null) {
+ req.setParam("numShards",
String.valueOf(remoteSolrServerConfiguration.getSolrShardsNo()));
+ req.setParam("replicationFactor",
String.valueOf(remoteSolrServerConfiguration.getSolrReplicationFactor()));
+ }
+ req.setParam("collection.configName", solrCollection);
+ req.setParam("name", solrCollection);
+ cloudSolrServer.request(req);
+ }
+ } catch (Exception e) {
+ log.warn("could not create collection {}", solrCollection);
+ throw new SolrServerException(e);
+ }
+ }
+}
Propchange:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/package-info.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/package-info.java?rev=1577192&r1=1577191&r2=1577192&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/package-info.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/package-info.java
Thu Mar 13 15:20:59 2014
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("0.16")
+@Version("0.17")
@Export(optional = "provide:=true")
package org.apache.jackrabbit.oak.plugins.index.solr.server;
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java?rev=1577192&r1=1577191&r2=1577192&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/package-info.java
Thu Mar 13 15:20:59 2014
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("0.16")
+@Version("0.17")
@Export(optional = "provide:=true")
package org.apache.jackrabbit.oak.plugins.index.solr.util;
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml?rev=1577192&r1=1577191&r2=1577192&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml
Thu Mar 13 15:20:59 2014
@@ -92,13 +92,6 @@
<fieldType name="pdouble" class="solr.DoubleField"/>
<fieldType name="pdate" class="solr.DateField" sortMissingLast="true"/>
- <fieldType name="point" class="solr.PointType" dimension="2"
subFieldSuffix="_d"/>
-
- <fieldType name="location" class="solr.LatLonType"
subFieldSuffix="_coordinate"/>
-
- <fieldType name="location_rpt"
class="solr.SpatialRecursivePrefixTreeFieldType"
- geo="true" distErrPct="0.025" maxDistErr="0.000009"
units="degrees" />
-
<fieldType name="currency" class="solr.CurrencyField" precisionStep="8"
defaultCurrency="USD" currencyConfig="currency.xml" />
<fieldtype name="ignored" stored="false" indexed="false"
multiValued="true" class="solr.StrField"/>
</types>
@@ -130,7 +123,6 @@
<dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
<dynamicField name="*_dts" type="date" indexed="true" stored="true"
multiValued="true"/>
- <dynamicField name="*_p" type="location" indexed="true" stored="true"/>
<dynamicField name="*_ti" type="tint" indexed="true" stored="true"/>
<dynamicField name="*_tl" type="tlong" indexed="true" stored="true"/>
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/FixedNodeStateConfigurationTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/FixedNodeStateConfigurationTest.java?rev=1577192&r1=1577191&r2=1577192&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/FixedNodeStateConfigurationTest.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/FixedNodeStateConfigurationTest.java
Thu Mar 13 15:20:59 2014
@@ -48,7 +48,7 @@ public class FixedNodeStateConfiguration
public void testExistingPath() throws Exception {
NodeState idxDef =
store.getRoot().getChildNode("oak:index").getChildNode("solrIdx");
FixedNodeStateConfiguration fixedNodeStateConfiguration = new
FixedNodeStateConfiguration(idxDef);
- SolrServerConfiguration solrServerConfiguration =
fixedNodeStateConfiguration.getSolrServerConfiguration();
+ EmbeddedSolrServerConfiguration solrServerConfiguration =
(EmbeddedSolrServerConfiguration)
fixedNodeStateConfiguration.getSolrServerConfiguration();
assertNotNull(solrServerConfiguration);
assertEquals("sh", solrServerConfiguration.getSolrHomePath()); //
property defined in the node state
assertEquals("cn", solrServerConfiguration.getCoreName()); // property
defined in the node state
Added:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java?rev=1577192&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
(added)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
Thu Mar 13 15:20:59 2014
@@ -0,0 +1,43 @@
+/*
+ * 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.jackrabbit.oak.plugins.index.solr.configuration;
+
+import
org.apache.jackrabbit.oak.plugins.index.solr.server.EmbeddedSolrServerProvider;
+import
org.apache.jackrabbit.oak.plugins.index.solr.server.RemoteSolrServerProvider;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * Testcase for {@link
org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfiguration}
+ */
+public class SolrServerConfigurationTest {
+
+ @Test
+ public void testCreateRemoteServerFromConfig() throws Exception {
+ SolrServerConfiguration<RemoteSolrServerProvider>
remoteSolrServerProviderSolrServerConfiguration = new
RemoteSolrServerConfiguration(null, null, 1, 1, null);
+ RemoteSolrServerProvider remoteSolrServerProvider =
remoteSolrServerProviderSolrServerConfiguration.newInstance();
+ assertNotNull(remoteSolrServerProvider);
+ }
+
+ @Test
+ public void testCreteEmbeddedServerFromConfig() throws Exception {
+ SolrServerConfiguration<EmbeddedSolrServerProvider>
embeddedSolrServerSolrServerConfiguration = new
EmbeddedSolrServerConfiguration(null, null, null);
+ EmbeddedSolrServerProvider embeddedSolrServerProvider =
embeddedSolrServerSolrServerConfiguration.newInstance();
+ assertNotNull(embeddedSolrServerProvider);
+ }
+}
Propchange:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfigurationTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/UpToDateNodeStateConfigurationTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/UpToDateNodeStateConfigurationTest.java?rev=1577192&r1=1577191&r2=1577192&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/UpToDateNodeStateConfigurationTest.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/UpToDateNodeStateConfigurationTest.java
Thu Mar 13 15:20:59 2014
@@ -16,10 +16,6 @@
*/
package org.apache.jackrabbit.oak.plugins.index.solr.configuration;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-
import org.apache.jackrabbit.mk.api.MicroKernel;
import org.apache.jackrabbit.mk.core.MicroKernelImpl;
import org.apache.jackrabbit.oak.kernel.KernelNodeStore;
@@ -27,6 +23,10 @@ import org.apache.jackrabbit.oak.spi.sta
import org.junit.Before;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+
/**
* Testcase for {@link
org.apache.jackrabbit.oak.plugins.index.solr.configuration.UpToDateNodeStateConfiguration}
*/
@@ -47,7 +47,7 @@ public class UpToDateNodeStateConfigurat
public void testExistingPath() throws Exception {
String path = "oak:index/solrIdx";
UpToDateNodeStateConfiguration upToDateNodeStateConfiguration = new
UpToDateNodeStateConfiguration(store, path);
- SolrServerConfiguration solrServerConfiguration =
upToDateNodeStateConfiguration.getSolrServerConfiguration();
+ EmbeddedSolrServerConfiguration solrServerConfiguration =
(EmbeddedSolrServerConfiguration)
upToDateNodeStateConfiguration.getSolrServerConfiguration();
assertNotNull(solrServerConfiguration);
assertEquals("sh", solrServerConfiguration.getSolrHomePath()); //
property defined in the node state
assertEquals("cn", solrServerConfiguration.getCoreName()); // property
defined in the node state
Added:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProviderTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProviderTest.java?rev=1577192&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProviderTest.java
(added)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProviderTest.java
Thu Mar 13 15:20:59 2014
@@ -0,0 +1,39 @@
+/*
+ * 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.jackrabbit.oak.plugins.index.solr.server;
+
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.EmbeddedSolrServerConfiguration;
+import org.apache.solr.client.solrj.SolrServer;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * Testcase for {@link EmbeddedSolrServerProvider}
+ */
+public class EmbeddedSolrServerProviderTest {
+
+ @Test
+ public void testSolrServerInitialization() throws Exception {
+ EmbeddedSolrServerConfiguration solrServerConfiguration = new
EmbeddedSolrServerConfiguration(getClass().getResource("/solr").getFile(),
+ getClass().getResource("/solr/solr.xml").getFile(), "oak");
+ EmbeddedSolrServerProvider embeddedSolrServerProvider = new
EmbeddedSolrServerProvider(solrServerConfiguration);
+ SolrServer solrServer = embeddedSolrServerProvider.getSolrServer();
+ assertNotNull(solrServer);
+ }
+
+}
Propchange:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProviderTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java?rev=1577192&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java
(added)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java
Thu Mar 13 15:20:59 2014
@@ -0,0 +1,70 @@
+/*
+ * 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.jackrabbit.oak.plugins.index.solr.server;
+
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.RemoteSolrServerConfiguration;
+import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.client.solrj.impl.CloudSolrServer;
+import org.apache.solr.client.solrj.request.UpdateRequest;
+import org.apache.solr.common.util.NamedList;
+import org.junit.Test;
+
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * Testcase for {@link RemoteSolrServerProvider}
+ */
+public class RemoteSolrServerProviderIT {
+
+ // common local zk hosts
+ private final String[] zkHosts = new String[]{"localhost:9983"};
+
+ private boolean canCreateCollections(String host) throws Exception {
+ UpdateRequest req = new UpdateRequest("/admin/collections");
+ req.setParam("action", "CREATE");
+ String solrCollection = "solr_" + System.nanoTime();
+ req.setParam("name", solrCollection);
+ req.setParam("numShards", "2");
+ req.setParam("replicationFactor", "2");
+ req.setParam("collection.configName", "myconf");
+ CloudSolrServer cloudSolrServer = new CloudSolrServer(host);
+ NamedList<Object> request = cloudSolrServer.request(req);
+ return request != null && request.get("success") != null;
+ }
+
+ @Test
+ public void testCloudRemoteServerCreation() throws Exception {
+ // do this test only if a Solr Cloud server is available
+ for (String host : zkHosts) {
+ boolean cloudServerAvailable = false;
+ try {
+ cloudServerAvailable = canCreateCollections(host);
+ } catch (Exception e) {
+ // do nothing
+ }
+ if (cloudServerAvailable) {
+ String collection = "sample_" + System.nanoTime();
+ RemoteSolrServerProvider remoteSolrServerProvider = new
RemoteSolrServerProvider(new RemoteSolrServerConfiguration(host, collection, 2,
2, null));
+ SolrServer solrServer =
remoteSolrServerProvider.getSolrServer();
+ assertNotNull(solrServer);
+ solrServer.shutdown();
+ break;
+ }
+ }
+ }
+}
Propchange:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProviderIT.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/oak/trunk/pom.xml
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/pom.xml?rev=1577192&r1=1577191&r2=1577192&view=diff
==============================================================================
--- jackrabbit/oak/trunk/pom.xml (original)
+++ jackrabbit/oak/trunk/pom.xml Thu Mar 13 15:20:59 2014
@@ -48,8 +48,7 @@
<module>oak-http</module>
<module>oak-lucene</module>
<module>oak-solr-core</module>
- <module>oak-solr-remote</module>
- <module>oak-solr-embedded</module>
+ <module>oak-solr-osgi</module>
<module>oak-auth-external</module>
<module>oak-auth-ldap</module>
<module>oak-run</module>