You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ct...@apache.org on 2017/05/10 12:35:13 UTC
[26/50] [abbrv] lucene-solr:jira/solr-10290: SOLR-10614: remove
static backdoor fields from SimplePostTool. Enabling testTechproductsExample
SOLR-10614: remove static backdoor fields from SimplePostTool.
Enabling testTechproductsExample
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/6de19d0f
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/6de19d0f
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/6de19d0f
Branch: refs/heads/jira/solr-10290
Commit: 6de19d0f48fb1413a46379284928da8b35f0dd85
Parents: 204b54b
Author: Mikhail Khludnev <mk...@apache.org>
Authored: Sat May 6 10:44:57 2017 +0300
Committer: Cassandra Targett <ca...@lucidworks.com>
Committed: Wed May 10 07:30:33 2017 -0500
----------------------------------------------------------------------
solr/CHANGES.txt | 3 +
.../org/apache/solr/util/SimplePostTool.java | 10 +-
.../apache/solr/util/SimplePostToolTest.java | 29 ++--
.../apache/solr/util/TestSolrCLIRunExample.java | 134 +++++++++----------
4 files changed, 90 insertions(+), 86 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6de19d0f/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 21044bb..4dba434 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -371,6 +371,9 @@ Other Changes
* SOLR-10601: StreamExpressionParser should handle white space around = in named parameters (Joel Bernstein)
+* SOLR-10614: Static fields have turned to instance's field in SimplePostTool.
+ Enabled TestSolrCLIRunExample.testTechproductsExample(). (Andrey Kudryavtsev, Mikhail Khludnev)
+
================== 6.5.1 ==================
Bug Fixes
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6de19d0f/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/SimplePostTool.java b/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
index 6e18cf9..327361e 100644
--- a/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
+++ b/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
@@ -125,8 +125,8 @@ public class SimplePostTool {
"Usage: java [SystemProperties] -jar post.jar [-h|-] [<file|folder|url|arg> [<file|folder|url|arg>...]]";
// Used in tests to avoid doing actual network traffic
- static boolean mockMode = false;
- static PageFetcher pageFetcher;
+ boolean mockMode = false;
+ PageFetcher pageFetcher;
static {
DATA_MODES.add(DATA_MODE_FILES);
@@ -810,7 +810,7 @@ public class SimplePostTool {
} else {
if(type == null) type = DEFAULT_CONTENT_TYPE;
}
- info("POSTing file " + file.getName() + (auto?" ("+type+")":"") + " to [base]" + suffix);
+ info("POSTing file " + file.getName() + (auto?" ("+type+")":"") + " to [base]" + suffix + (mockMode ? " MOCK!":""));
is = new FileInputStream(file);
postData(is, file.length(), output, type, url);
} catch (IOException e) {
@@ -851,7 +851,7 @@ public class SimplePostTool {
/**
* Performs a simple get on the given URL
*/
- public static void doGet(String url) {
+ public void doGet(String url) {
try {
doGet(new URL(url));
} catch (MalformedURLException e) {
@@ -862,7 +862,7 @@ public class SimplePostTool {
/**
* Performs a simple get on the given URL
*/
- public static void doGet(URL url) {
+ public void doGet(URL url) {
try {
if(mockMode) return;
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6de19d0f/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java b/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
index c9f8fc5..b9eaa63 100644
--- a/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
+++ b/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
@@ -16,12 +16,6 @@
*/
package org.apache.solr.util;
-import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.util.SimplePostTool.PageFetcher;
-import org.apache.solr.util.SimplePostTool.PageFetcherResult;
-import org.junit.Before;
-import org.junit.Test;
-
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
@@ -34,6 +28,12 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
+import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.util.SimplePostTool.PageFetcher;
+import org.apache.solr.util.SimplePostTool.PageFetcherResult;
+import org.junit.Before;
+import org.junit.Test;
+
/**
* NOTE: do *not* use real hostnames, not even "example.com", in this test.
*
@@ -42,6 +42,7 @@ import java.util.Set;
* the hostnames.
*/
public class SimplePostToolTest extends SolrTestCaseJ4 {
+
SimplePostTool t_file, t_file_auto, t_file_rec, t_web, t_test;
PageFetcher pf;
@@ -70,8 +71,10 @@ public class SimplePostToolTest extends SolrTestCaseJ4 {
t_test = SimplePostTool.parseArgsAndInit(args);
pf = new MockPageFetcher();
- SimplePostTool.pageFetcher = pf;
- SimplePostTool.mockMode = true;
+ for (SimplePostTool mockable : new SimplePostTool[]{t_web, t_file_auto}) {
+ mockable.pageFetcher = pf;
+ mockable.mockMode = true;
+ }
}
@Test
@@ -170,7 +173,7 @@ public class SimplePostToolTest extends SolrTestCaseJ4 {
assertEquals(3, num);
// Without respecting robots.txt
- SimplePostTool.pageFetcher.robotsCache.clear();
+ t_web.pageFetcher.robotsCache.clear();
t_web.recursive = 5;
num = t_web.postWebPages(new String[] {"http://[ff01::114]/#removeme"}, 0, null);
assertEquals(6, num);
@@ -178,9 +181,9 @@ public class SimplePostToolTest extends SolrTestCaseJ4 {
@Test
public void testRobotsExclusion() throws MalformedURLException {
- assertFalse(SimplePostTool.pageFetcher.isDisallowedByRobots(new URL("http://[ff01::114]/")));
- assertTrue(SimplePostTool.pageFetcher.isDisallowedByRobots(new URL("http://[ff01::114]/disallowed")));
- assertTrue("There should be two entries parsed from robots.txt", SimplePostTool.pageFetcher.robotsCache.get("[ff01::114]").size() == 2);
+ assertFalse(t_web.pageFetcher.isDisallowedByRobots(new URL("http://[ff01::114]/")));
+ assertTrue(t_web.pageFetcher.isDisallowedByRobots(new URL("http://[ff01::114]/disallowed")));
+ assertTrue("There should be two entries parsed from robots.txt", t_web.pageFetcher.robotsCache.get("[ff01::114]").size() == 2);
}
static class MockPageFetcher extends PageFetcher {
@@ -219,7 +222,7 @@ public class SimplePostToolTest extends SolrTestCaseJ4 {
sb.append("Disallow: # This is void\n");
sb.append("Disallow: /disallow # Disallow this path\n");
sb.append("Disallow: /nonexistingpath # Disallow this path\n");
- this.robotsCache.put("[ff01::114]", SimplePostTool.pageFetcher.
+ this.robotsCache.put("[ff01::114]", super.
parseRobotsTxt(new ByteArrayInputStream(sb.toString().getBytes(StandardCharsets.UTF_8))));
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/6de19d0f/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java b/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java
index 8e30b3b..86554b5 100644
--- a/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java
+++ b/solr/core/src/test/org/apache/solr/util/TestSolrCLIRunExample.java
@@ -50,7 +50,6 @@ import org.apache.solr.common.SolrInputDocument;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.BeforeClass;
-import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -298,7 +297,7 @@ public class TestSolrCLIRunExample extends SolrTestCaseJ4 {
}
}
- @Test @Ignore
+ @Test
public void testTechproductsExample() throws Exception {
testExample("techproducts");
}
@@ -317,75 +316,74 @@ public class TestSolrCLIRunExample extends SolrTestCaseJ4 {
File solrExampleDir = tmpDir.toFile();
File solrServerDir = solrHomeDir.getParentFile();
- for (int i =0; i<2; i++){
- // need a port to start the example server on
- int bindPort = -1;
- try (ServerSocket socket = new ServerSocket(0)) {
- bindPort = socket.getLocalPort();
- }
-
- log.info("Selected port "+bindPort+" to start "+exampleName+" example Solr instance on ...");
-
- String[] toolArgs = new String[] {
- "-e", exampleName,
- "-serverDir", solrServerDir.getAbsolutePath(),
- "-exampleDir", solrExampleDir.getAbsolutePath(),
- "-p", String.valueOf(bindPort)
- };
-
- // capture tool output to stdout
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- PrintStream stdoutSim = new PrintStream(baos, true, StandardCharsets.UTF_8.name());
-
- RunExampleExecutor executor = new RunExampleExecutor(stdoutSim);
- closeables.add(executor);
-
- SolrCLI.RunExampleTool tool = new SolrCLI.RunExampleTool(executor, System.in, stdoutSim);
- try {
- final int status = tool.runTool(SolrCLI.processCommandLineArgs(SolrCLI.joinCommonAndToolOptions(tool.getOptions()), toolArgs));
- assertEquals("it should be ok "+tool+" "+Arrays.toString(toolArgs),0, status);
- } catch (Exception e) {
- log.error("RunExampleTool failed due to: " + e +
- "; stdout from tool prior to failure: " + baos.toString(StandardCharsets.UTF_8.name()));
- throw e;
- }
-
- String toolOutput = baos.toString(StandardCharsets.UTF_8.name());
-
- // dump all the output written by the SolrCLI commands to stdout
- //System.out.println("\n\n"+toolOutput+"\n\n");
-
- File exampleSolrHomeDir = new File(solrExampleDir, exampleName+"/solr");
- assertTrue(exampleSolrHomeDir.getAbsolutePath() + " not found! run " +
- exampleName + " example failed; output: " + toolOutput,
- exampleSolrHomeDir.isDirectory());
-
- if ("techproducts".equals(exampleName)) {
- HttpSolrClient solrClient = getHttpSolrClient("http://localhost:" + bindPort + "/solr/" + exampleName);
- try{
- SolrQuery query = new SolrQuery("*:*");
- QueryResponse qr = solrClient.query(query);
- long numFound = qr.getResults().getNumFound();
- if (numFound == 0) {
- // brief wait in case of timing issue in getting the new docs committed
- log.warn("Going to wait for 1 second before re-trying query for techproduct example docs ...");
- try {
- Thread.sleep(1000);
- } catch (InterruptedException ignore) {
- Thread.interrupted();
+ for (int pass = 0; pass<2; pass++){
+ // need a port to start the example server on
+ int bindPort = -1;
+ try (ServerSocket socket = new ServerSocket(0)) {
+ bindPort = socket.getLocalPort();
+ }
+
+ log.info("Selected port "+bindPort+" to start "+exampleName+" example Solr instance on ...");
+
+ String[] toolArgs = new String[] {
+ "-e", exampleName,
+ "-serverDir", solrServerDir.getAbsolutePath(),
+ "-exampleDir", solrExampleDir.getAbsolutePath(),
+ "-p", String.valueOf(bindPort)
+ };
+
+ // capture tool output to stdout
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ PrintStream stdoutSim = new PrintStream(baos, true, StandardCharsets.UTF_8.name());
+
+ RunExampleExecutor executor = new RunExampleExecutor(stdoutSim);
+ closeables.add(executor);
+
+ SolrCLI.RunExampleTool tool = new SolrCLI.RunExampleTool(executor, System.in, stdoutSim);
+ try {
+ final int status = tool.runTool(SolrCLI.processCommandLineArgs(SolrCLI.joinCommonAndToolOptions(tool.getOptions()), toolArgs));
+ assertEquals("it should be ok "+tool+" "+Arrays.toString(toolArgs),0, status);
+ } catch (Exception e) {
+ log.error("RunExampleTool failed due to: " + e +
+ "; stdout from tool prior to failure: " + baos.toString(StandardCharsets.UTF_8.name()));
+ throw e;
+ }
+
+ String toolOutput = baos.toString(StandardCharsets.UTF_8.name());
+
+ // dump all the output written by the SolrCLI commands to stdout
+ //System.out.println("\n\n"+toolOutput+"\n\n");
+
+ File exampleSolrHomeDir = new File(solrExampleDir, exampleName+"/solr");
+ assertTrue(exampleSolrHomeDir.getAbsolutePath() + " not found! run " +
+ exampleName + " example failed; output: " + toolOutput,
+ exampleSolrHomeDir.isDirectory());
+
+ if ("techproducts".equals(exampleName)) {
+ HttpSolrClient solrClient = getHttpSolrClient("http://localhost:" + bindPort + "/solr/" + exampleName);
+ try{
+ SolrQuery query = new SolrQuery("*:*");
+ QueryResponse qr = solrClient.query(query);
+ long numFound = qr.getResults().getNumFound();
+ if (numFound == 0) {
+ // brief wait in case of timing issue in getting the new docs committed
+ log.warn("Going to wait for 1 second before re-trying query for techproduct example docs ...");
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ignore) {
+ Thread.interrupted();
+ }
+ numFound = solrClient.query(query).getResults().getNumFound();
}
- numFound = solrClient.query(query).getResults().getNumFound();
+ assertTrue("expected 32 docs in the " + exampleName + " example but found " + numFound + ", output: " + toolOutput,
+ numFound == 32);
+ }finally{
+ solrClient.close();
}
- assertTrue("expected 32 docs in the " + exampleName + " example but found " + numFound + ", output: " + toolOutput,
- numFound == 32);
- }finally{
-
- solrClient.close();
}
- }
-
- // stop the test instance
- executor.execute(org.apache.commons.exec.CommandLine.parse("bin/solr stop -p " + bindPort));
+
+ // stop the test instance
+ executor.execute(org.apache.commons.exec.CommandLine.parse("bin/solr stop -p " + bindPort));
}
}