mirror of https://github.com/apache/lucene.git
SOLR-5164: add relative solr.home testing to some tests, explicitly check for expected instanceDir handling with relative solr.home
SOLR-5099: explicity check for proper solrcore.properties creation Speed up some tests by setting leaderVoteWait to 0 git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1514857 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d9ad5bfb76
commit
d0bb1cc471
|
@ -26,7 +26,6 @@ import java.util.Random;
|
|||
import java.util.SortedMap;
|
||||
import java.util.TreeMap;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import java.net.URL;
|
||||
import java.net.MalformedURLException;
|
||||
|
||||
|
@ -499,6 +498,10 @@ public class JettySolrRunner {
|
|||
public void setCoreNodeName(String coreNodeName) {
|
||||
this.coreNodeName = coreNodeName;
|
||||
}
|
||||
|
||||
public String getSolrHome() {
|
||||
return solrHome;
|
||||
}
|
||||
}
|
||||
|
||||
class NoLog implements Logger {
|
||||
|
|
|
@ -2241,6 +2241,7 @@ public final class SolrCore implements SolrInfoMBean {
|
|||
lst.add("coreName", name==null ? "(null)" : name);
|
||||
lst.add("startTime", new Date(startTime));
|
||||
lst.add("refCount", getOpenCount());
|
||||
lst.add("instanceDir", resourceLoader.getInstanceDir());
|
||||
lst.add("indexDir", getIndexDir());
|
||||
|
||||
CoreDescriptor cd = getCoreDescriptor();
|
||||
|
|
|
@ -410,7 +410,8 @@ public class CoreAdminHandler extends RequestHandlerBase {
|
|||
"Missing parameter [" + CoreAdminParams.NAME + "]");
|
||||
String instancedir = params.get(CoreAdminParams.INSTANCE_DIR);
|
||||
if (StringUtils.isEmpty(instancedir)) {
|
||||
instancedir = name; // Already relative to solrHome, we haven't been given an absolute path.
|
||||
instancedir = name; // will be resolved later against solr.home
|
||||
//instancedir = container.getSolrHome() + "/" + name;
|
||||
}
|
||||
|
||||
Properties coreProps = new Properties();
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
-->
|
||||
<cores adminPath="/admin/cores" defaultCoreName="collection1" host="127.0.0.1" hostPort="${hostPort:8983}"
|
||||
hostContext="${hostContext:solr}" zkClientTimeout="${solr.zkclienttimeout:30000}" numShards="${numShards:3}" shareSchema="${shareSchema:false}"
|
||||
genericCoreNodeNames="${genericCoreNodeNames:true}"
|
||||
genericCoreNodeNames="${genericCoreNodeNames:true}" leaderVoteWait="0"
|
||||
distribUpdateConnTimeout="${distribUpdateConnTimeout:15000}" distribUpdateSoTimeout="${distribUpdateSoTimeout:120000}">
|
||||
<core name="collection1" instanceDir="collection1" shard="${shard:}" collection="${collection:collection1}" config="${solrconfig:solrconfig.xml}" schema="${schema:schema.xml}"
|
||||
coreNodeName="${coreNodeName:}"/>
|
||||
|
|
|
@ -17,12 +17,39 @@ package org.apache.solr.cloud;
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import static org.apache.solr.cloud.OverseerCollectionProcessor.REPLICATION_FACTOR;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletionService;
|
||||
import java.util.concurrent.ExecutorCompletionService;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.SynchronousQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.MBeanServerFactory;
|
||||
import javax.management.ObjectName;
|
||||
|
||||
import org.apache.lucene.util.Constants;
|
||||
import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||
import org.apache.lucene.util._TestUtil;
|
||||
import org.apache.solr.SolrTestCaseJ4;
|
||||
import org.apache.solr.client.solrj.SolrQuery;
|
||||
import org.apache.solr.client.solrj.SolrServerException;
|
||||
import org.apache.solr.client.solrj.embedded.JettySolrRunner;
|
||||
import org.apache.solr.client.solrj.impl.CloudSolrServer;
|
||||
import org.apache.solr.client.solrj.impl.HttpSolrServer;
|
||||
import org.apache.solr.client.solrj.impl.HttpSolrServer.RemoteSolrException;
|
||||
|
@ -46,8 +73,10 @@ import org.apache.solr.common.params.ModifiableSolrParams;
|
|||
import org.apache.solr.common.util.NamedList;
|
||||
import org.apache.solr.common.util.SimpleOrderedMap;
|
||||
import org.apache.solr.common.util.StrUtils;
|
||||
import org.apache.solr.core.CoreContainer;
|
||||
import org.apache.solr.core.SolrCore;
|
||||
import org.apache.solr.core.SolrInfoMBean.Category;
|
||||
import org.apache.solr.core.SolrResourceLoader;
|
||||
import org.apache.solr.servlet.SolrDispatchFilter;
|
||||
import org.apache.solr.update.DirectUpdateHandler2;
|
||||
import org.apache.solr.update.SolrCmdDistributor.Request;
|
||||
|
@ -55,32 +84,6 @@ import org.apache.solr.util.DefaultSolrThreadFactory;
|
|||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.MBeanServerFactory;
|
||||
import javax.management.ObjectName;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletionService;
|
||||
import java.util.concurrent.ExecutorCompletionService;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.SynchronousQueue;
|
||||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.apache.solr.cloud.OverseerCollectionProcessor.REPLICATION_FACTOR;
|
||||
|
||||
/**
|
||||
* Tests the Cloud Collections API.
|
||||
*/
|
||||
|
@ -500,6 +503,8 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
|||
waitForRecoveriesToFinish("awholynewcollection_" + j, zkStateReader, false);
|
||||
}
|
||||
|
||||
checkInstanceDirs(jettys.get(0));
|
||||
|
||||
List<String> collectionNameList = new ArrayList<String>();
|
||||
collectionNameList.addAll(collectionInfos.keySet());
|
||||
String collectionName = collectionNameList.get(random().nextInt(collectionNameList.size()));
|
||||
|
@ -658,6 +663,24 @@ public class CollectionsAPIDistributedZkTest extends AbstractFullDistribZkTestBa
|
|||
checkNoTwoShardsUseTheSameIndexDir();
|
||||
}
|
||||
|
||||
private void checkInstanceDirs(JettySolrRunner jetty) {
|
||||
CoreContainer cores = ((SolrDispatchFilter) jetty.getDispatchFilter()
|
||||
.getFilter()).getCores();
|
||||
Collection<SolrCore> theCores = cores.getCores();
|
||||
for (SolrCore core : theCores) {
|
||||
// look for core props file
|
||||
assertTrue("Could not find expected core.properties file",
|
||||
new File((String) core.getStatistics().get("instanceDir"),
|
||||
"core.properties").exists());
|
||||
|
||||
assertEquals(
|
||||
SolrResourceLoader.normalizeDir(jetty.getSolrHome() + File.separator
|
||||
+ core.getName()),
|
||||
SolrResourceLoader.normalizeDir((String) core.getStatistics().get(
|
||||
"instanceDir")));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean waitForReloads(String collectionName, Map<String,Long> urlToTimeBefore) throws SolrServerException, IOException {
|
||||
|
||||
|
||||
|
|
|
@ -17,8 +17,10 @@ package org.apache.solr.cloud;
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.apache.http.params.CoreConnectionPNames;
|
||||
import org.apache.lucene.util.LuceneTestCase.Slow;
|
||||
import org.apache.solr.SolrTestCaseJ4;
|
||||
import org.apache.solr.client.solrj.SolrQuery;
|
||||
import org.apache.solr.client.solrj.SolrRequest;
|
||||
import org.apache.solr.client.solrj.SolrServer;
|
||||
|
@ -44,6 +46,7 @@ import org.apache.solr.common.params.CollectionParams.CollectionAction;
|
|||
import org.apache.solr.common.params.ModifiableSolrParams;
|
||||
import org.apache.solr.common.params.SolrParams;
|
||||
import org.apache.solr.common.util.StrUtils;
|
||||
import org.apache.solr.core.SolrResourceLoader;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
|
@ -455,8 +458,12 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
|
|||
}
|
||||
|
||||
public JettySolrRunner createJetty(File solrHome, String dataDir, String shardList, String solrConfigOverride, String schemaOverride) throws Exception {
|
||||
// randomly test a relative solr.home path
|
||||
if (random().nextBoolean()) {
|
||||
solrHome = getRelativeSolrHomePath(solrHome);
|
||||
}
|
||||
|
||||
JettySolrRunner jetty = new JettySolrRunner(solrHome.getAbsolutePath(), context, 0, solrConfigOverride, schemaOverride, false, getExtraServlets());
|
||||
JettySolrRunner jetty = new JettySolrRunner(solrHome.getPath(), context, 0, solrConfigOverride, schemaOverride, false, getExtraServlets());
|
||||
jetty.setShards(shardList);
|
||||
jetty.setDataDir(getDataDir(dataDir));
|
||||
jetty.start();
|
||||
|
@ -464,6 +471,33 @@ public abstract class AbstractFullDistribZkTestBase extends AbstractDistribZkTes
|
|||
return jetty;
|
||||
}
|
||||
|
||||
private File getRelativeSolrHomePath(File solrHome) {
|
||||
String path = SolrResourceLoader.normalizeDir(new File(".").getAbsolutePath());
|
||||
String base = new File(solrHome.getPath()).getAbsolutePath();
|
||||
|
||||
if (base.startsWith("."));
|
||||
base.replaceFirst("\\.", new File(".").getName());
|
||||
|
||||
if (path.endsWith(File.separator + ".")) {
|
||||
path = path.substring(0, path.length() - 2);
|
||||
}
|
||||
|
||||
int splits = path.split(File.separator).length;
|
||||
|
||||
StringBuilder p = new StringBuilder();
|
||||
for (int i = 0; i < splits - 2; i++) {
|
||||
p.append(".." + File.separator);
|
||||
}
|
||||
|
||||
String prefix = FilenameUtils.getPrefix(path);
|
||||
if (base.startsWith(prefix)) {
|
||||
base = base.substring(prefix.length());
|
||||
}
|
||||
|
||||
solrHome = new File(p.toString() + base);
|
||||
return solrHome;
|
||||
}
|
||||
|
||||
protected void updateMappingsFromZk(List<JettySolrRunner> jettys,
|
||||
List<SolrServer> clients) throws Exception {
|
||||
ZkStateReader zkStateReader = cloudClient.getZkStateReader();
|
||||
|
|
Loading…
Reference in New Issue