You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2015/03/27 12:36:40 UTC
svn commit: r1669542 -
/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
Author: shaie
Date: Fri Mar 27 11:36:39 2015
New Revision: 1669542
URL: http://svn.apache.org/r1669542
Log:
SOLR-7318: AbstractFullDistribZkTestBase.getRelativeSolrHomePath doesn't work on Windows
Modified:
lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java?rev=1669542&r1=1669541&r2=1669542&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/cloud/AbstractFullDistribZkTestBase.java Fri Mar 27 11:36:39 2015
@@ -17,7 +17,27 @@ package org.apache.solr.cloud;
* limitations under the License.
*/
-import org.apache.commons.io.FilenameUtils;
+import static org.apache.solr.cloud.OverseerCollectionProcessor.*;
+import static org.apache.solr.common.cloud.ZkNodeProps.*;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.URI;
+import java.net.URL;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+
import org.apache.http.params.CoreConnectionPNames;
import org.apache.lucene.util.LuceneTestCase.Slow;
import org.apache.solr.client.solrj.SolrClient;
@@ -52,7 +72,6 @@ import org.apache.solr.common.util.Named
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.servlet.SolrDispatchFilter;
import org.apache.solr.update.DirectUpdateHandler2;
import org.apache.zookeeper.CreateMode;
@@ -63,30 +82,6 @@ import org.noggit.JSONWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.File;
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.net.URI;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import static org.apache.solr.cloud.OverseerCollectionProcessor.CREATE_NODE_SET;
-import static org.apache.solr.cloud.OverseerCollectionProcessor.NUM_SLICES;
-import static org.apache.solr.cloud.OverseerCollectionProcessor.SHARDS_PROP;
-import static org.apache.solr.common.cloud.ZkNodeProps.makeMap;
-import static org.apache.solr.common.cloud.ZkStateReader.MAX_SHARDS_PER_NODE;
-import static org.apache.solr.common.cloud.ZkStateReader.REPLICATION_FACTOR;
-
/**
* TODO: we should still test this works as a custom update chain as well as
* what we test now - the default update chain
@@ -632,31 +627,24 @@ public abstract class AbstractFullDistri
}
private File getRelativeSolrHomePath(File solrHome) {
- String path = SolrResourceLoader.normalizeDir(new File(".").getAbsolutePath());
- String base = new File(solrHome.getPath()).getAbsolutePath();
-
- if (base.startsWith(".")) {
- base = 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("..").append(File.separator);
- }
-
- String prefix = FilenameUtils.getPrefix(path);
- if (base.startsWith(prefix)) {
- base = base.substring(prefix.length());
+ final Path solrHomePath = solrHome.toPath();
+ final Path curDirPath = new File("").getAbsoluteFile().toPath();
+
+ if (!solrHomePath.getRoot().equals(curDirPath.getRoot())) {
+ // root of current directory and solrHome are not the same, therefore cannot relativize
+ return solrHome;
}
-
- solrHome = new File(p.toString() + base);
- return solrHome;
+
+ final Path root = solrHomePath.getRoot();
+
+ // relativize current directory to root: /tmp/foo -> /tmp/foo/../..
+ final File relativizedCurDir = new File(curDirPath.toFile(), curDirPath.relativize(root).toString());
+
+ // exclude the root from solrHome: /tmp/foo/solrHome -> tmp/foo/solrHome
+ final Path solrHomeRelativeToRoot = root.relativize(solrHomePath);
+
+ // create the relative solrHome: /tmp/foo/../../tmp/foo/solrHome
+ return new File(relativizedCurDir, solrHomeRelativeToRoot.toString()).getAbsoluteFile();
}
protected void updateMappingsFromZk(List<JettySolrRunner> jettys, List<SolrClient> clients) throws Exception {