You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2015/02/26 16:01:40 UTC
svn commit: r1662471 - in /lucene/dev/branches/branch_5x: ./ solr/
solr/contrib/
solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/
solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/
solr/contrib/morphlines-core/src/test/...
Author: romseygeek
Date: Thu Feb 26 15:01:39 2015
New Revision: 1662471
URL: http://svn.apache.org/r1662471
Log:
SOLR-7166: Encapsulate JettySolrRunner config
Added:
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettyConfig.java
- copied unchanged from r1662449, lucene/dev/trunk/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettyConfig.java
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_5x/solr/contrib/ (props changed)
lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
lucene/dev/branches/branch_5x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java
lucene/dev/branches/branch_5x/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java
lucene/dev/branches/branch_5x/solr/core/ (props changed)
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/SSLConfig.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/OpenCloseCoreStressTest.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestFieldCollectionResource.java
lucene/dev/branches/branch_5x/solr/solrj/ (props changed)
lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java
lucene/dev/branches/branch_5x/solr/test-framework/ (props changed)
lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
Modified: lucene/dev/branches/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Thu Feb 26 15:01:39 2015
@@ -163,6 +163,8 @@ Other Changes
* SOLR-7160: Rename ConfigSolr to NodeConfig, and decouple it from xml
representation (Alan Woodward)
+* SOLR-7166: Encapsulate JettySolrRunner configuration (Alan Woodward)
+
* SOLR-7130: Make stale state notification work without failing the requests
(Noble Paul, shalin)
Modified: lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java (original)
+++ lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestContentStreamDataSource.java Thu Feb 26 15:01:39 2015
@@ -174,7 +174,7 @@ public class TestContentStreamDataSource
private JettySolrRunner createJetty(SolrInstance instance) throws Exception {
System.setProperty("solr.data.dir", instance.getDataDir());
- JettySolrRunner jetty = new JettySolrRunner(instance.getHomeDir(), "/solr", 0, null, null, true, null, sslConfig);
+ JettySolrRunner jetty = new JettySolrRunner(instance.getHomeDir(), buildJettyConfig("/solr"));
jetty.start();
return jetty;
}
Modified: lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java (original)
+++ lucene/dev/branches/branch_5x/solr/contrib/dataimporthandler/src/test/org/apache/solr/handler/dataimport/TestSolrEntityProcessorEndToEnd.java Thu Feb 26 15:01:39 2015
@@ -340,7 +340,7 @@ public class TestSolrEntityProcessorEndT
}
private JettySolrRunner createJetty(SolrInstance instance) throws Exception {
- JettySolrRunner jetty = new JettySolrRunner(instance.getHomeDir(), "/solr", 0, null, null, true, null, sslConfig);
+ JettySolrRunner jetty = new JettySolrRunner(instance.getHomeDir(), buildJettyConfig("/solr"));
jetty.setDataDir(instance.getDataDir());
jetty.start();
return jetty;
Modified: lucene/dev/branches/branch_5x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MorphlineGoLiveMiniMRTest.java Thu Feb 26 15:01:39 2015
@@ -743,9 +743,9 @@ public class MorphlineGoLiveMiniMRTest e
public JettySolrRunner createJetty(File solrHome, String dataDir,
String shardList, String solrConfigOverride, String schemaOverride)
throws Exception {
-
- JettySolrRunner jetty = new JettySolrRunner(solrHome.getAbsolutePath(),
- context, 0, solrConfigOverride, schemaOverride, true, null, sslConfig);
+
+ JettySolrRunner jetty
+ = new JettySolrRunner(solrHome.getAbsolutePath(), solrConfigOverride, schemaOverride, buildJettyConfig(context));
jetty.setShards(shardList);
Modified: lucene/dev/branches/branch_5x/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java (original)
+++ lucene/dev/branches/branch_5x/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java Thu Feb 26 15:01:39 2015
@@ -144,8 +144,8 @@ public abstract class AbstractSolrMorphl
throws Exception {
writeCoreProperties(solrHome.toPath(), DEFAULT_TEST_CORENAME);
- JettySolrRunner jetty = new JettySolrRunner(solrHome.getAbsolutePath(),
- context, 0, solrConfigOverride, schemaOverride, true, null, sslConfig);
+ JettySolrRunner jetty
+ = new JettySolrRunner(solrHome.getAbsolutePath(), solrConfigOverride, schemaOverride, buildJettyConfig(context));
jetty.setShards(shardList);
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java Thu Feb 26 15:01:39 2015
@@ -52,7 +52,6 @@ import java.util.EnumSet;
import java.util.LinkedList;
import java.util.Random;
import java.util.SortedMap;
-import java.util.TreeMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLong;
@@ -70,8 +69,6 @@ public class JettySolrRunner {
FilterHolder dispatchFilter;
FilterHolder debugFilter;
- String context;
-
private String solrConfigFilename;
private String schemaFilename;
private final String coreRootDirectory;
@@ -79,6 +76,7 @@ public class JettySolrRunner {
private boolean waitOnSolr = false;
private int lastPort = -1;
+ private final JettyConfig config;
private String shards;
@@ -87,20 +85,13 @@ public class JettySolrRunner {
private volatile boolean startedBefore = false;
- private String solrHome;
-
- private boolean stopAtShutdown;
+ private final String solrHome;
private String coreNodeName;
private final String name;
- /** Maps servlet holders (i.e. factories: class + init params) to path specs */
- private SortedMap<ServletHolder,String> extraServlets = new TreeMap<>();
- private SortedMap<Class,String> extraRequestFilters;
private LinkedList<FilterHolder> extraFilters;
-
- private SSLConfig sslConfig;
private int proxyPort = -1;
@@ -124,21 +115,6 @@ public class JettySolrRunner {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
nRequests.incrementAndGet();
-
- /***
- HttpServletRequest req = (HttpServletRequest)servletRequest;
- HttpServletResponse resp = (HttpServletResponse)servletResponse;
-
- String path = req.getServletPath();
- if( req.getPathInfo() != null ) {
- // this lets you handle /update/commit when /update is a servlet
- path += req.getPathInfo();
- }
- System.out.println("###################### FILTER request " + servletRequest);
- System.out.println("\t\tgetServletPath="+req.getServletPath());
- System.out.println("\t\tgetPathInfo="+req.getPathInfo());
- ***/
-
filterChain.doFilter(servletRequest, servletResponse);
}
@@ -152,81 +128,111 @@ public class JettySolrRunner {
public JettySolrRunner(String solrHome, String context, int port) {
- this.init(solrHome, context, port, true);
- this.name = "jetty-" + JETTY_ID_COUNTER.incrementAndGet();
- this.coreRootDirectory = System.getProperty("coreRootDirectory", null);
+ this(solrHome, JettyConfig.builder().setContext(context).setPort(port).build());
}
public JettySolrRunner(String solrHome, String context, int port, String solrConfigFilename, String schemaFileName) {
- this.init(solrHome, context, port, true);
- this.solrConfigFilename = solrConfigFilename;
- this.schemaFilename = schemaFileName;
- this.name = "jetty-" + JETTY_ID_COUNTER.incrementAndGet();
- this.coreRootDirectory = System.getProperty("coreRootDirectory", null);
+ this(solrHome, solrConfigFilename, schemaFileName, JettyConfig.builder()
+ .setContext(context)
+ .setPort(port)
+ .build());
}
-
+
+ @Deprecated
public JettySolrRunner(String solrHome, String context, int port,
String solrConfigFilename, String schemaFileName, boolean stopAtShutdown) {
- this.init(solrHome, context, port, stopAtShutdown);
- this.solrConfigFilename = solrConfigFilename;
- this.schemaFilename = schemaFileName;
- this.name = "jetty-" + JETTY_ID_COUNTER.incrementAndGet();
- this.coreRootDirectory = System.getProperty("coreRootDirectory", null);
+ this(solrHome, solrConfigFilename, schemaFileName, JettyConfig.builder()
+ .setContext(context)
+ .setPort(port)
+ .stopAtShutdown(stopAtShutdown)
+ .build());
}
/**
* Constructor taking an ordered list of additional (servlet holder -> path spec) mappings
* to add to the servlet context
+ * @deprecated use {@link #JettySolrRunner(String,String,String,JettyConfig)}
*/
+ @Deprecated
public JettySolrRunner(String solrHome, String context, int port,
String solrConfigFilename, String schemaFileName, boolean stopAtShutdown,
SortedMap<ServletHolder,String> extraServlets) {
- this (solrHome, context, port, solrConfigFilename, schemaFileName,
- stopAtShutdown, extraServlets, null, null);
+ this(solrHome, solrConfigFilename, schemaFileName, JettyConfig.builder()
+ .setContext(context)
+ .setPort(port)
+ .stopAtShutdown(stopAtShutdown)
+ .withServlets(extraServlets)
+ .build());
+ }
+
+ @Deprecated
+ public JettySolrRunner(String solrHome, String context, int port, String solrConfigFilename, String schemaFileName,
+ boolean stopAtShutdown, SortedMap<ServletHolder, String> extraServlets, SSLConfig sslConfig) {
+ this(solrHome, solrConfigFilename, schemaFileName, JettyConfig.builder()
+ .setContext(context)
+ .setPort(port)
+ .stopAtShutdown(stopAtShutdown)
+ .withServlets(extraServlets)
+ .withSSLConfig(sslConfig)
+ .build());
+ }
+
+ @Deprecated
+ public JettySolrRunner(String solrHome, String context, int port, String solrConfigFilename, String schemaFileName,
+ boolean stopAtShutdown, SortedMap<ServletHolder, String> extraServlets, SSLConfig sslConfig,
+ SortedMap<Class<? extends Filter>, String> extraRequestFilters) {
+ this(solrHome, solrConfigFilename, schemaFileName, JettyConfig.builder()
+ .setContext(context)
+ .setPort(port)
+ .stopAtShutdown(stopAtShutdown)
+ .withServlets(extraServlets)
+ .withFilters(extraRequestFilters)
+ .withSSLConfig(sslConfig)
+ .build());
}
-
- public JettySolrRunner(String solrHome, String context, int port,
- String solrConfigFilename, String schemaFileName, boolean stopAtShutdown,
- SortedMap<ServletHolder,String> extraServlets, SSLConfig sslConfig) {
- this (solrHome, context, port, solrConfigFilename, schemaFileName,
- stopAtShutdown, extraServlets, sslConfig, null);
+
+ /**
+ * Construct a JettySolrRunner
+ *
+ * @param solrHome the base path to run from
+ * @param jettyConfig the configuration
+ */
+ public JettySolrRunner(String solrHome, JettyConfig jettyConfig) {
+ this(solrHome, null, null, jettyConfig);
}
/**
- * Constructor taking an ordered list of additional (filter holder -> path spec) mappings.
- * Filters are placed after the DebugFilter but before the SolrDispatchFilter.
+ * Construct a JettySolrRunner
+ *
+ * @param solrHome the base path to run from
+ * @param solrConfigFilename the name of the solrconfig file to use
+ * @param schemaFileName the name of the schema file to use
+ * @param jettyConfig the configuration
*/
- public JettySolrRunner(String solrHome, String context, int port,
- String solrConfigFilename, String schemaFileName, boolean stopAtShutdown,
- SortedMap<ServletHolder,String> extraServlets, SSLConfig sslConfig,
- SortedMap<Class,String> extraRequestFilters) {
- if (null != extraServlets) { this.extraServlets.putAll(extraServlets); }
- if (null != extraRequestFilters) {
- this.extraRequestFilters = new TreeMap<>(extraRequestFilters.comparator());
- this.extraRequestFilters.putAll(extraRequestFilters);
- }
+ public JettySolrRunner(String solrHome, String solrConfigFilename, String schemaFileName, JettyConfig jettyConfig) {
+
this.solrConfigFilename = solrConfigFilename;
this.schemaFilename = schemaFileName;
- this.sslConfig = sslConfig;
this.name = "jetty-" + JETTY_ID_COUNTER.incrementAndGet();
this.coreRootDirectory = System.getProperty("coreRootDirectory", null);
- this.init(solrHome, context, port, stopAtShutdown);
+ this.config = jettyConfig;
+ this.solrHome = solrHome;
+
+ this.init(this.config.port);
}
-
- private void init(String solrHome, String context, int port, boolean stopAtShutdown) {
- this.context = context;
- server = new Server(port);
- this.solrHome = solrHome;
- this.stopAtShutdown = stopAtShutdown;
- server.setStopAtShutdown(stopAtShutdown);
- if (!stopAtShutdown) {
+ private void init(int port) {
+
+ server = new Server(port);
+ server.setStopAtShutdown(config.stopAtShutdown);
+ if (!config.stopAtShutdown) {
server.setGracefulShutdown(0);
}
System.setProperty("solr.solr.home", solrHome);
+
if (System.getProperty("jetty.testMode") != null) {
final String connectorName = System.getProperty("tests.jettyConnector", "SelectChannel");
@@ -239,13 +245,11 @@ public class JettySolrRunner {
// the server as well as any client actions taken by this JVM in
// talking to that server, but for the purposes of testing that should
// be good enough
- final boolean useSsl = sslConfig == null ? false : sslConfig.isSSLMode();
- final SslContextFactory sslcontext = new SslContextFactory(false);
- sslInit(useSsl, sslcontext);
+ final SslContextFactory sslcontext = SSLConfig.createContextFactory(config.sslConfig);
final Connector connector;
if ("SelectChannel".equals(connectorName)) {
- final SelectChannelConnector c = useSsl
+ final SelectChannelConnector c = sslcontext != null
? new SslSelectChannelConnector(sslcontext)
: new SelectChannelConnector();
c.setReuseAddress(true);
@@ -253,7 +257,7 @@ public class JettySolrRunner {
c.setSoLingerTime(0);
connector = c;
} else if ("Socket".equals(connectorName)) {
- final SocketConnector c = useSsl
+ final SocketConnector c = sslcontext != null
? new SslSocketConnector(sslcontext)
: new SocketConnector();
c.setReuseAddress(true);
@@ -287,7 +291,7 @@ public class JettySolrRunner {
}
// Initialize the servlets
- final ServletContextHandler root = new ServletContextHandler(server,context,ServletContextHandler.SESSIONS);
+ final ServletContextHandler root = new ServletContextHandler(server, config.context, ServletContextHandler.SESSIONS);
root.setHandler(new GzipHandler());
server.addLifeCycleListener(new LifeCycle.Listener() {
@@ -309,7 +313,9 @@ public class JettySolrRunner {
@Override
public void lifeCycleStarted(LifeCycle arg0) {
+
lastPort = getFirstConnectorPort();
+
System.setProperty("hostPort", Integer.toString(lastPort));
if (solrConfigFilename != null) System.setProperty("solrconfig",
solrConfigFilename);
@@ -317,21 +323,20 @@ public class JettySolrRunner {
schemaFilename);
if (coreRootDirectory != null)
System.setProperty("coreRootDirectory", coreRootDirectory);
-// SolrDispatchFilter filter = new SolrDispatchFilter();
-// FilterHolder fh = new FilterHolder(filter);
+
debugFilter = root.addFilter(DebugFilter.class, "*", EnumSet.of(DispatcherType.REQUEST) );
- if (extraRequestFilters != null) {
- extraFilters = new LinkedList<>();
- for (Class filterClass : extraRequestFilters.keySet()) {
- extraFilters.add(root.addFilter(filterClass, extraRequestFilters.get(filterClass),
+ extraFilters = new LinkedList<>();
+ for (Class<? extends Filter> filterClass : config.extraFilters.keySet()) {
+ extraFilters.add(root.addFilter(filterClass, config.extraFilters.get(filterClass),
EnumSet.of(DispatcherType.REQUEST)));
- }
}
+
dispatchFilter = root.addFilter(SolrDispatchFilter.class, "*", EnumSet.of(DispatcherType.REQUEST) );
- for (ServletHolder servletHolder : extraServlets.keySet()) {
- String pathSpec = extraServlets.get(servletHolder);
+ for (ServletHolder servletHolder : config.extraServlets.keySet()) {
+ String pathSpec = config.extraServlets.get(servletHolder);
root.addServlet(servletHolder, pathSpec);
}
+
if (solrConfigFilename != null) System.clearProperty("solrconfig");
if (schemaFilename != null) System.clearProperty("schema");
System.clearProperty("solr.solr.home");
@@ -348,47 +353,6 @@ public class JettySolrRunner {
}
- private void sslInit(final boolean useSsl, final SslContextFactory sslcontext) {
- if (useSsl && sslConfig != null) {
- if (null != sslConfig.getKeyStore()) {
- sslcontext.setKeyStorePath(sslConfig.getKeyStore());
- }
- if (null != sslConfig.getKeyStorePassword()) {
- sslcontext.setKeyStorePassword(sslConfig.getKeyStorePassword());
- }
- if (null != sslConfig.getTrustStore()) {
- sslcontext.setTrustStore(System
- .getProperty(sslConfig.getTrustStore()));
- }
- if (null != sslConfig.getTrustStorePassword()) {
- sslcontext.setTrustStorePassword(sslConfig.getTrustStorePassword());
- }
- sslcontext.setNeedClientAuth(sslConfig.isClientAuthMode());
- } else {
- boolean jettySsl = Boolean.getBoolean(System.getProperty("tests.jettySsl"));
-
- if (jettySsl) {
- if (null != System.getProperty("javax.net.ssl.keyStore")) {
- sslcontext.setKeyStorePath
- (System.getProperty("javax.net.ssl.keyStore"));
- }
- if (null != System.getProperty("javax.net.ssl.keyStorePassword")) {
- sslcontext.setKeyStorePassword
- (System.getProperty("javax.net.ssl.keyStorePassword"));
- }
- if (null != System.getProperty("javax.net.ssl.trustStore")) {
- sslcontext.setTrustStore
- (System.getProperty("javax.net.ssl.trustStore"));
- }
- if (null != System.getProperty("javax.net.ssl.trustStorePassword")) {
- sslcontext.setTrustStorePassword
- (System.getProperty("javax.net.ssl.trustStorePassword"));
- }
- sslcontext.setNeedClientAuth(Boolean.getBoolean("tests.jettySsl.clientAuth"));
- }
- }
- }
-
public FilterHolder getDispatchFilter() {
return dispatchFilter;
}
@@ -412,7 +376,7 @@ public class JettySolrRunner {
// if started before, make a new server
if (startedBefore) {
waitOnSolr = false;
- init(solrHome, context, lastPort, stopAtShutdown);
+ init(lastPort);
} else {
startedBefore = true;
}
@@ -523,7 +487,7 @@ public class JettySolrRunner {
c.getLocalPort());
}
protocol = (c instanceof SslConnector) ? "https" : "http";
- return new URL(protocol, c.getHost(), c.getLocalPort(), context);
+ return new URL(protocol, c.getHost(), c.getLocalPort(), config.context);
} catch (MalformedURLException e) {
throw new IllegalStateException
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/SSLConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/SSLConfig.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/SSLConfig.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/client/solrj/embedded/SSLConfig.java Thu Feb 26 15:01:39 2015
@@ -17,6 +17,8 @@ package org.apache.solr.client.solrj.emb
* limitations under the License.
*/
+import org.eclipse.jetty.util.ssl.SslContextFactory;
+
public class SSLConfig {
private boolean useSsl;
@@ -66,4 +68,55 @@ public class SSLConfig {
public String getTrustStorePassword() {
return trustStorePassword;
}
+
+ public static SslContextFactory createContextFactory(SSLConfig sslConfig) {
+
+ if (sslConfig == null) {
+ if (Boolean.getBoolean(System.getProperty("tests.jettySsl"))) {
+ return configureSslFromSysProps();
+ }
+ return null;
+ }
+
+ if (!sslConfig.useSsl)
+ return null;
+
+ SslContextFactory factory = new SslContextFactory(false);
+ if (sslConfig.getKeyStore() != null)
+ factory.setKeyStorePath(sslConfig.getKeyStore());
+ if (sslConfig.getKeyStorePassword() != null)
+ factory.setKeyStorePassword(sslConfig.getKeyStorePassword());
+ if (sslConfig.getTrustStore() != null)
+ factory.setTrustStore(System.getProperty(sslConfig.getTrustStore()));
+ if (sslConfig.getTrustStorePassword() != null)
+ factory.setTrustStorePassword(sslConfig.getTrustStorePassword());
+
+ return factory;
+
+ }
+
+ private static SslContextFactory configureSslFromSysProps() {
+
+ SslContextFactory sslcontext = new SslContextFactory(false);
+
+ if (null != System.getProperty("javax.net.ssl.keyStore")) {
+ sslcontext.setKeyStorePath
+ (System.getProperty("javax.net.ssl.keyStore"));
+ }
+ if (null != System.getProperty("javax.net.ssl.keyStorePassword")) {
+ sslcontext.setKeyStorePassword
+ (System.getProperty("javax.net.ssl.keyStorePassword"));
+ }
+ if (null != System.getProperty("javax.net.ssl.trustStore")) {
+ sslcontext.setTrustStore
+ (System.getProperty("javax.net.ssl.trustStore"));
+ }
+ if (null != System.getProperty("javax.net.ssl.trustStorePassword")) {
+ sslcontext.setTrustStorePassword
+ (System.getProperty("javax.net.ssl.trustStorePassword"));
+ }
+ sslcontext.setNeedClientAuth(Boolean.getBoolean("tests.jettySsl.clientAuth"));
+
+ return sslcontext;
+ }
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/TestSolrCoreProperties.java Thu Feb 26 15:01:39 2015
@@ -73,7 +73,7 @@ public class TestSolrCoreProperties exte
Files.createFile(collDir.toPath().resolve("core.properties"));
- jetty = new JettySolrRunner(homeDir.getAbsolutePath(), "/solr", 0, null, null, true, null, sslConfig);
+ jetty = new JettySolrRunner(homeDir.getAbsolutePath(), buildJettyConfig("/solr"));
// this sets the property for jetty starting SolrDispatchFilter
if (System.getProperty("solr.data.dir") == null && System.getProperty("solr.hdfs.home") == null) {
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/SSLMigrationTest.java Thu Feb 26 15:01:39 2015
@@ -17,16 +17,12 @@ package org.apache.solr.cloud;
* limitations under the License.
*/
-import static org.apache.solr.common.cloud.ZkNodeProps.makeMap;
-import org.apache.lucene.util.LuceneTestCase.BadApple;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
import org.apache.commons.lang.StringUtils;
+import org.apache.lucene.util.LuceneTestCase.BadApple;
+import org.apache.lucene.util.LuceneTestCase.Slow;
+import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.impl.HttpClientUtil;
import org.apache.solr.client.solrj.impl.LBHttpSolrClient;
@@ -39,10 +35,15 @@ import org.apache.solr.common.params.Col
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.util.SSLTestConfig;
-import org.apache.solr.SolrTestCaseJ4.SuppressSSL;
-import org.apache.lucene.util.LuceneTestCase.Slow;
import org.junit.Test;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import static org.apache.solr.common.cloud.ZkNodeProps.makeMap;
+
/**
* We want to make sure that when migrating between http and https modes the
* replicas will not be rejoined as new nodes, but rather take off where it left
@@ -72,9 +73,15 @@ public class SSLMigrationTest extends Ab
HttpClientUtil.setConfigurer(sslConfig.getHttpClientConfigurer());
for(int i = 0; i < this.jettys.size(); i++) {
JettySolrRunner runner = jettys.get(i);
- JettySolrRunner newRunner = new JettySolrRunner(runner.getSolrHome(),
- context, runner.getLocalPort(), getSolrConfigFile(), getSchemaFile(),
- false, getExtraServlets(), sslConfig, getExtraRequestFilters());
+ JettyConfig config = JettyConfig.builder()
+ .setContext(context)
+ .setPort(runner.getLocalPort())
+ .stopAtShutdown(false)
+ .withServlets(getExtraServlets())
+ .withFilters(getExtraRequestFilters())
+ .withSSLConfig(sslConfig)
+ .build();
+ JettySolrRunner newRunner = new JettySolrRunner(runner.getSolrHome(), getSolrConfigFile(), getSchemaFile(), config);
newRunner.setDataDir(getDataDir(testDir + "/shard" + i + "/data"));
newRunner.start(true);
jettys.set(i, newRunner);
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/OpenCloseCoreStressTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/OpenCloseCoreStressTest.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/OpenCloseCoreStressTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/core/OpenCloseCoreStressTest.java Thu Feb 26 15:01:39 2015
@@ -87,7 +87,7 @@ public class OpenCloseCoreStressTest ext
solrHomeDirectory = createTempDir().toFile();
- jetty = new JettySolrRunner(solrHomeDirectory.getAbsolutePath(), "/solr", 0, null, null, true, null, sslConfig);
+ jetty = new JettySolrRunner(solrHomeDirectory.getAbsolutePath(), buildJettyConfig("/solr"));
}
@After
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/admin/CoreAdminHandlerTest.java Thu Feb 26 15:01:39 2015
@@ -200,7 +200,7 @@ public class CoreAdminHandlerTest extend
copySolrHomeToTemp(solrHomeDirectory, "corex", true);
File corex = new File(solrHomeDirectory, "corex");
FileUtils.write(new File(corex, "core.properties"), "", Charsets.UTF_8.toString());
- JettySolrRunner runner = new JettySolrRunner(solrHomeDirectory.getAbsolutePath(), "/solr", 0, null, null, true, null, sslConfig);
+ JettySolrRunner runner = new JettySolrRunner(solrHomeDirectory.getAbsolutePath(), buildJettyConfig("/solr"));
runner.start();
try (HttpSolrClient client = new HttpSolrClient(runner.getBaseUrl() + "/corex")) {
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestFieldCollectionResource.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestFieldCollectionResource.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestFieldCollectionResource.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/rest/schema/TestFieldCollectionResource.java Thu Feb 26 15:01:39 2015
@@ -16,6 +16,7 @@ package org.apache.solr.rest.schema;
* limitations under the License.
*/
+import com.carrotsearch.randomizedtesting.annotations.Seed;
import org.apache.solr.rest.SolrRestletTestBase;
import org.junit.Test;
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/TestLBHttpSolrClient.java Thu Feb 26 15:01:39 2015
@@ -26,6 +26,7 @@ import org.apache.lucene.util.LuceneTest
import org.apache.lucene.util.QuickPatchThreadsFilter;
import org.apache.solr.SolrIgnoredThreadsFilter;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.impl.HttpClientUtil;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
@@ -308,7 +309,12 @@ public class TestLBHttpSolrClient extend
}
public void startJetty() throws Exception {
- jetty = new JettySolrRunner(getHomeDir(), "/solr", port, "bad_solrconfig.xml", null, true, null, sslConfig);
+ jetty = new JettySolrRunner(getHomeDir(), "bad_solrconfig.xml", null, JettyConfig.builder()
+ .setContext("/solr")
+ .stopAtShutdown(true)
+ .setPort(port)
+ .withSSLConfig(sslConfig)
+ .build());
jetty.setDataDir(getDataDir());
jetty.start();
int newPort = jetty.getLocalPort();
Modified: lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java (original)
+++ lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java Thu Feb 26 15:01:39 2015
@@ -24,6 +24,7 @@ import org.apache.lucene.util.TestUtil;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrResponse;
import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.UpdateRequest;
@@ -46,6 +47,7 @@ import org.junit.runners.model.Statement
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.servlet.Filter;
import java.io.File;
import java.io.IOException;
import java.lang.annotation.ElementType;
@@ -389,10 +391,13 @@ public abstract class BaseDistributedSea
public JettySolrRunner createJetty(File solrHome, String dataDir, String shardList, String solrConfigOverride, String schemaOverride, boolean explicitCoreNodeName) throws Exception {
- boolean stopAtShutdown = true;
- JettySolrRunner jetty = new JettySolrRunner
- (solrHome.getAbsolutePath(), context, 0, solrConfigOverride, schemaOverride, stopAtShutdown,
- getExtraServlets(), sslConfig, getExtraRequestFilters());
+ JettySolrRunner jetty = new JettySolrRunner(solrHome.getAbsolutePath(), solrConfigOverride, schemaOverride, JettyConfig.builder()
+ .stopAtShutdown(true)
+ .setContext(context)
+ .withFilters(getExtraRequestFilters())
+ .withServlets(getExtraServlets())
+ .withSSLConfig(sslConfig)
+ .build());
jetty.setShards(shardList);
jetty.setDataDir(dataDir);
if (explicitCoreNodeName) {
@@ -409,7 +414,7 @@ public abstract class BaseDistributedSea
}
/** Override this method to insert extra filters into the JettySolrRunners that are created using createJetty() */
- public SortedMap<Class,String> getExtraRequestFilters() {
+ public SortedMap<Class<? extends Filter>,String> getExtraRequestFilters() {
return null;
}
Modified: lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java (original)
+++ lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrJettyTestBase.java Thu Feb 26 15:01:39 2015
@@ -21,6 +21,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
+import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.util.ExternalPaths;
@@ -75,7 +76,15 @@ abstract public class SolrJettyTestBase
context = context==null ? "/solr" : context;
SolrJettyTestBase.context = context;
- jetty = new JettySolrRunner(solrHome, context, 0, configFile, schemaFile, stopAtShutdown, extraServlets, sslConfig);
+
+ JettyConfig jettyConfig = JettyConfig.builder()
+ .setContext(context)
+ .stopAtShutdown(stopAtShutdown)
+ .withServlets(extraServlets)
+ .withSSLConfig(sslConfig)
+ .build();
+
+ jetty = new JettySolrRunner(solrHome, configFile, schemaFile, jettyConfig);
// this sets the property for jetty starting SolrDispatchFilter
if (System.getProperty("solr.data.dir") == null && System.getProperty("solr.hdfs.home") == null) {
Modified: lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java Thu Feb 26 15:01:39 2015
@@ -32,6 +32,7 @@ import org.apache.lucene.util.LuceneTest
import org.apache.lucene.util.LuceneTestCase.SuppressSysoutChecks;
import org.apache.lucene.util.QuickPatchThreadsFilter;
import org.apache.lucene.util.TestUtil;
+import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.impl.HttpClientConfigurer;
import org.apache.solr.client.solrj.impl.HttpClientUtil;
import org.apache.solr.client.solrj.util.ClientUtils;
@@ -46,14 +47,14 @@ import org.apache.solr.common.params.Mod
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.ObjectReleaseTracker;
import org.apache.solr.common.util.XML;
-import org.apache.solr.core.CoresLocator;
-import org.apache.solr.core.NodeConfig;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.CoreDescriptor;
-import org.apache.solr.core.SolrXmlConfig;
+import org.apache.solr.core.CoresLocator;
+import org.apache.solr.core.NodeConfig;
import org.apache.solr.core.SolrConfig;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrResourceLoader;
+import org.apache.solr.core.SolrXmlConfig;
import org.apache.solr.handler.UpdateRequestHandler;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
@@ -303,6 +304,10 @@ public abstract class SolrTestCaseJ4 ext
return new SSLTestConfig(trySsl, trySslClientAuth);
}
+
+ protected static JettyConfig buildJettyConfig(String context) {
+ return JettyConfig.builder().setContext(context).withSSLConfig(sslConfig).build();
+ }
protected static String buildUrl(final int port, final String context) {
return (isSSLMode() ? "https" : "http") + "://127.0.0.1:" + port + context;
Modified: lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java (original)
+++ lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java Thu Feb 26 15:01:39 2015
@@ -24,6 +24,7 @@ import org.apache.solr.client.solrj.Solr
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
@@ -494,8 +495,16 @@ public abstract class AbstractFullDistri
public JettySolrRunner createJetty(String dataDir, String ulogDir, String shardList,
String solrConfigOverride) throws Exception {
- JettySolrRunner jetty = new JettySolrRunner(getSolrHome(), context, 0,
- solrConfigOverride, null, false, getExtraServlets(), sslConfig, getExtraRequestFilters());
+ JettyConfig jettyconfig = JettyConfig.builder()
+ .setContext(context)
+ .stopAtShutdown(false)
+ .withServlets(getExtraServlets())
+ .withFilters(getExtraRequestFilters())
+ .withSSLConfig(sslConfig)
+ .build();
+
+ JettySolrRunner jetty = new JettySolrRunner(getSolrHome(), solrConfigOverride, null, jettyconfig);
+
jetty.setShards(shardList);
jetty.setDataDir(getDataDir(dataDir));
jetty.start();
@@ -509,7 +518,16 @@ public abstract class AbstractFullDistri
solrHome = getRelativeSolrHomePath(solrHome);
}
- JettySolrRunner jetty = new JettySolrRunner(solrHome.getPath(), context, 0, solrConfigOverride, schemaOverride, false, getExtraServlets(), sslConfig, getExtraRequestFilters());
+ JettyConfig jettyconfig = JettyConfig.builder()
+ .setContext(context)
+ .stopAtShutdown(false)
+ .withServlets(getExtraServlets())
+ .withFilters(getExtraRequestFilters())
+ .withSSLConfig(sslConfig)
+ .build();
+
+ JettySolrRunner jetty = new JettySolrRunner(solrHome.getPath(), solrConfigOverride, schemaOverride, jettyconfig);
+
jetty.setShards(shardList);
jetty.setDataDir(getDataDir(dataDir));
jetty.start();
@@ -526,13 +544,19 @@ public abstract class AbstractFullDistri
String shardList, String solrConfigOverride, String schemaOverride)
throws Exception {
- JettySolrRunner jetty = new JettySolrRunner(solrHome.getPath(), context,
- 0, solrConfigOverride, schemaOverride, false,
- getExtraServlets(), sslConfig, getExtraRequestFilters());
+ JettyConfig jettyconfig = JettyConfig.builder()
+ .setContext(context)
+ .stopAtShutdown(false)
+ .withServlets(getExtraServlets())
+ .withFilters(getExtraRequestFilters())
+ .withSSLConfig(sslConfig)
+ .build();
+
+ JettySolrRunner jetty = new JettySolrRunner(solrHome.getPath(), solrConfigOverride, schemaOverride, jettyconfig);
jetty.setShards(shardList);
jetty.setDataDir(getDataDir(dataDir));
- SocketProxy proxy = new SocketProxy(0, sslConfig == null ? false : sslConfig.isSSLMode());
+ SocketProxy proxy = new SocketProxy(0, sslConfig != null && sslConfig.isSSLMode());
jetty.setProxyPort(proxy.getListenPort());
jetty.start();
proxy.open(jetty.getBaseUrl().toURI());
Modified: lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java?rev=1662471&r1=1662470&r2=1662471&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java (original)
+++ lucene/dev/branches/branch_5x/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java Thu Feb 26 15:01:39 2015
@@ -18,6 +18,7 @@ package org.apache.solr.cloud;
*/
import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.embedded.JettyConfig;
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
import org.apache.solr.client.solrj.embedded.SSLConfig;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
@@ -33,6 +34,7 @@ import org.eclipse.jetty.servlet.Servlet
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.servlet.Filter;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
@@ -45,10 +47,11 @@ public class MiniSolrCloudCluster {
private static Logger log = LoggerFactory.getLogger(MiniSolrCloudCluster.class);
- private ZkTestServer zkServer;
- private List<JettySolrRunner> jettys;
- private File testDir;
- private CloudSolrClient solrClient;
+ private final ZkTestServer zkServer;
+ private final List<JettySolrRunner> jettys;
+ private final File testDir;
+ private final CloudSolrClient solrClient;
+ private final JettyConfig jettyConfig;
/**
* "Mini" SolrCloud cluster to be used for testing
@@ -61,7 +64,7 @@ public class MiniSolrCloudCluster {
*/
public MiniSolrCloudCluster(int numServers, String hostContext, File baseDir, File solrXml,
SortedMap<ServletHolder, String> extraServlets,
- SortedMap<Class, String> extraRequestFilters) throws Exception {
+ SortedMap<Class<? extends Filter>, String> extraRequestFilters) throws Exception {
this(numServers, hostContext, baseDir, solrXml, extraServlets, extraRequestFilters, null);
}
@@ -77,9 +80,20 @@ public class MiniSolrCloudCluster {
*/
public MiniSolrCloudCluster(int numServers, String hostContext, File baseDir, File solrXml,
SortedMap<ServletHolder, String> extraServlets,
- SortedMap<Class, String> extraRequestFilters,
+ SortedMap<Class<? extends Filter>, String> extraRequestFilters,
SSLConfig sslConfig) throws Exception {
- testDir = baseDir;
+ this(numServers, baseDir, solrXml, JettyConfig.builder()
+ .setContext(hostContext)
+ .withSSLConfig(sslConfig)
+ .withFilters(extraRequestFilters)
+ .withServlets(extraServlets)
+ .build());
+ }
+
+ public MiniSolrCloudCluster(int numServers, File baseDir, File solrXml, JettyConfig jettyConfig) throws Exception {
+
+ this.testDir = baseDir;
+ this.jettyConfig = jettyConfig;
String zkDir = testDir.getAbsolutePath() + File.separator
+ "zookeeper/server1/data";
@@ -95,13 +109,9 @@ public class MiniSolrCloudCluster {
System.setProperty("solr.solrxml.location","zookeeper");
System.setProperty("zkHost", zkServer.getZkAddress());
- jettys = new LinkedList<JettySolrRunner>();
+ jettys = new LinkedList<>();
for (int i = 0; i < numServers; ++i) {
- if (sslConfig == null) {
- startJettySolrRunner(hostContext, extraServlets, extraRequestFilters);
- } else {
- startJettySolrRunner(hostContext, extraServlets, extraRequestFilters, sslConfig);
- }
+ startJettySolrRunner(jettyConfig);
}
solrClient = buildSolrClient();
@@ -123,37 +133,78 @@ public class MiniSolrCloudCluster {
/**
* Start a new Solr instance
+ *
* @param hostContext context path of Solr servers used by Jetty
* @param extraServlets Extra servlets to be started by Jetty
* @param extraRequestFilters extra filters to be started by Jetty
+ *
* @return new Solr instance
+ *
*/
public JettySolrRunner startJettySolrRunner(String hostContext,
SortedMap<ServletHolder, String> extraServlets,
- SortedMap<Class, String> extraRequestFilters) throws Exception {
+ SortedMap<Class<? extends Filter>, String> extraRequestFilters) throws Exception {
return startJettySolrRunner(hostContext, extraServlets, extraRequestFilters, null);
}
/**
* Start a new Solr instance
+ *
* @param hostContext context path of Solr servers used by Jetty
* @param extraServlets Extra servlets to be started by Jetty
* @param extraRequestFilters extra filters to be started by Jetty
* @param sslConfig SSL configuration
+ *
* @return new Solr instance
*/
public JettySolrRunner startJettySolrRunner(String hostContext,
SortedMap<ServletHolder, String> extraServlets,
- SortedMap<Class, String> extraRequestFilters, SSLConfig sslConfig) throws Exception {
+ SortedMap<Class<? extends Filter>, String> extraRequestFilters, SSLConfig sslConfig) throws Exception {
+ return startJettySolrRunner(hostContext, JettyConfig.builder()
+ .withServlets(extraServlets)
+ .withFilters(extraRequestFilters)
+ .withSSLConfig(sslConfig)
+ .build());
+ }
+
+ /**
+ * Start a new Solr instance
+ *
+ * @param config a JettyConfig for the instance's {@link org.apache.solr.client.solrj.embedded.JettySolrRunner}
+ *
+ * @return a JettySolrRunner
+ */
+ public JettySolrRunner startJettySolrRunner(JettyConfig config) throws Exception {
+ return startJettySolrRunner(config.context, config);
+ }
+
+ /**
+ * Start a new Solr instance on a particular servlet context
+ *
+ * @param hostContext the context to run on
+ * @param config a JettyConfig for the instance's {@link org.apache.solr.client.solrj.embedded.JettySolrRunner}
+ *
+ * @return a JettySolrRunner
+ */
+ public JettySolrRunner startJettySolrRunner(String hostContext, JettyConfig config) throws Exception {
String context = getHostContextSuitableForServletContext(hostContext);
- JettySolrRunner jetty = new JettySolrRunner(testDir.getAbsolutePath(), context,
- 0, null, null, true, extraServlets, sslConfig, extraRequestFilters);
+ JettyConfig newConfig = JettyConfig.builder(config).setContext(context).build();
+ JettySolrRunner jetty = new JettySolrRunner(testDir.getAbsolutePath(), newConfig);
jetty.start();
jettys.add(jetty);
return jetty;
}
/**
+ * Start a new Solr instance, using the default config
+ *
+ * @return a JettySolrRunner
+ */
+ public JettySolrRunner startJettySolrRunner() throws Exception {
+ return startJettySolrRunner(jettyConfig);
+ }
+
+ /**
* Stop a Solr instance
* @param index the index of node in collection returned by {@link #getJettySolrRunners()}
* @return the shut down node
@@ -222,7 +273,7 @@ public class MiniSolrCloudCluster {
private static String getHostContextSuitableForServletContext(String ctx) {
if (ctx == null || "".equals(ctx)) ctx = "/solr";
- if (ctx.endsWith("/")) ctx = ctx.substring(0,ctx.length()-1);;
+ if (ctx.endsWith("/")) ctx = ctx.substring(0,ctx.length()-1);
if (!ctx.startsWith("/")) ctx = "/" + ctx;
return ctx;
}