You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2014/01/17 18:23:44 UTC

svn commit: r1559196 [19/19] - in /lucene/dev/branches/lucene5376: ./ dev-tools/ dev-tools/idea/solr/contrib/morphlines-cell/ dev-tools/maven/lucene/facet/ lucene/ lucene/analysis/ lucene/analysis/common/ lucene/analysis/common/src/java/org/apache/luce...

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/impl/ConcurrentUpdateSolrServer.java Fri Jan 17 17:23:33 2014
@@ -250,6 +250,9 @@ public class ConcurrentUpdateSolrServer 
           }
         }
       } catch (Throwable e) {
+        if (e instanceof OutOfMemoryError) {
+          throw (OutOfMemoryError) e;
+        }
         handleError(e);
       } finally {
 
@@ -341,7 +344,6 @@ public class ConcurrentUpdateSolrServer 
             // successfully, *and*
             // while we are still holding the runners lock to prevent race
             // conditions.
-            // race conditions.
             if (success)
               break;
           }
@@ -384,10 +386,18 @@ public class ConcurrentUpdateSolrServer 
         synchronized (runners) {
           runner = runners.peek();
         }
-        if (runner == null || scheduler.isTerminated())
+
+        if ((runner == null && queue.isEmpty()) || scheduler.isTerminated())
           break;
-        runner.runnerLock.lock();
-        runner.runnerLock.unlock();
+        
+        if (runner != null) {
+          runner.runnerLock.lock();
+          runner.runnerLock.unlock();
+        } else if (!queue.isEmpty()) {
+          Runner r = new Runner();
+          runners.add(r);
+          scheduler.execute(r);
+        }
       }
     } finally {
       lock.countDown();

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrServer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrServer.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrServer.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrServer.java Fri Jan 17 17:23:33 2014
@@ -510,9 +510,12 @@ public class HttpSolrServer extends Solr
       if (respBody != null && shouldClose) {
         try {
           respBody.close();
-        } catch (Throwable t) {} // ignore
-        if (!success) {
-          method.abort();
+        } catch (IOException e) {
+          log.error("", e);
+        } finally {
+          if (!success) {
+            method.abort();
+          }
         }
       }
     }

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/client/solrj/response/QueryResponse.java Fri Jan 17 17:23:33 2014
@@ -22,6 +22,7 @@ import org.apache.solr.client.solrj.bean
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.common.params.CursorMarkParams;
 
 import java.util.*;
 
@@ -43,6 +44,7 @@ public class QueryResponse extends SolrR
   private NamedList<NamedList<Object>> _spellInfo = null;
   private NamedList<Object> _statsInfo = null;
   private NamedList<NamedList<Number>> _termsInfo = null;
+  private String _cursorMarkNext = null;
 
   // Grouping response
   private NamedList<Object> _groupedInfo = null;
@@ -133,6 +135,9 @@ public class QueryResponse extends SolrR
         _termsInfo = (NamedList<NamedList<Number>>) res.getVal( i );
         extractTermsInfo( _termsInfo );
       }
+      else if ( CursorMarkParams.CURSOR_MARK_NEXT.equals( n ) ) {
+        _cursorMarkNext = (String) res.getVal( i );
+      }
     }
     if(_facetInfo != null) extractFacetInfo( _facetInfo );
   }
@@ -487,6 +492,10 @@ public class QueryResponse extends SolrR
   public Map<String, FieldStatsInfo> getFieldStatsInfo() {
     return _fieldStatsInfo;
   }
+
+  public String getNextCursorMark() {
+    return _cursorMarkNext;
+  }
 }
 
 

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ConnectionManager.java Fri Jan 17 17:23:33 2014
@@ -34,10 +34,9 @@ public class ConnectionManager implement
       .getLogger(ConnectionManager.class);
 
   private final String name;
-  private CountDownLatch clientConnected;
-  private KeeperState state;
-  private boolean connected;
-  private boolean likelyExpired = true;
+  private final CountDownLatch clientConnected = new CountDownLatch(1);
+  
+  private boolean connected = false;
 
   private final ZkClientConnectionStrategy connectionStrategy;
 
@@ -48,7 +47,9 @@ public class ConnectionManager implement
   private final OnReconnect onReconnect;
   private final BeforeReconnect beforeReconnect;
 
+  private volatile KeeperState state = KeeperState.Disconnected;
   private volatile boolean isClosed = false;
+  private volatile boolean likelyExpired = true;
   
   private volatile Timer disconnectedTimer;
 
@@ -59,22 +60,16 @@ public class ConnectionManager implement
     this.zkServerAddress = zkServerAddress;
     this.onReconnect = onConnect;
     this.beforeReconnect = beforeReconnect;
-    reset();
-  }
-
-  private synchronized void reset() {
-    clientConnected = new CountDownLatch(1);
-    state = KeeperState.Disconnected;
-    disconnected();
   }
   
   private synchronized void connected() {
-    connected = true;
     if (disconnectedTimer != null) {
       disconnectedTimer.cancel();
       disconnectedTimer = null;
     }
+    connected = true;
     likelyExpired = false;
+    notifyAll();
   }
 
   private synchronized void disconnected() {
@@ -83,23 +78,22 @@ public class ConnectionManager implement
       disconnectedTimer = null;
     }
     if (!isClosed) {
-      disconnectedTimer = new Timer();
+      disconnectedTimer = new Timer(true);
       disconnectedTimer.schedule(new TimerTask() {
         
         @Override
         public void run() {
-          synchronized (ConnectionManager.this) {
-            likelyExpired = true;
-          }
+          likelyExpired = true;
         }
         
       }, (long) (client.getZkClientTimeout() * 0.90));
     }
     connected = false;
+    notifyAll();
   }
 
   @Override
-  public synchronized void process(WatchedEvent event) {
+  public void process(WatchedEvent event) {
     if (log.isInfoEnabled()) {
       log.info("Watcher " + this + " name:" + name + " got event " + event
           + " path:" + event.getPath() + " type:" + event.getType());
@@ -109,20 +103,31 @@ public class ConnectionManager implement
       log.info("Client->ZooKeeper status change trigger but we are already closed");
       return;
     }
-
+    
     state = event.getState();
+    
     if (state == KeeperState.SyncConnected) {
       connected();
       clientConnected.countDown();
       connectionStrategy.connected();
     } else if (state == KeeperState.Expired) {
-      disconnected();
+      if (disconnectedTimer != null) {
+        disconnectedTimer.cancel();
+        disconnectedTimer = null;
+      }
+      
+      connected = false;
+      likelyExpired = true;
+      
       log.info("Our previous ZooKeeper session was expired. Attempting to reconnect to recover relationship with ZooKeeper...");
+      
       if (beforeReconnect != null) {
         beforeReconnect.command();
       }
+      
       try {
-        connectionStrategy.reconnect(zkServerAddress, client.getZkClientTimeout(), this,
+        connectionStrategy.reconnect(zkServerAddress,
+            client.getZkClientTimeout(), this,
             new ZkClientConnectionStrategy.ZkUpdate() {
               @Override
               public void update(SolrZooKeeper keeper) {
@@ -141,17 +146,27 @@ public class ConnectionManager implement
                   Thread.currentThread().interrupt();
                   // we must have been asked to stop
                   throw new RuntimeException(e);
-                } catch (Throwable t) {
+                } catch (Exception t) {
                   closeKeeper(keeper);
                   throw new RuntimeException(t);
                 }
                 
+                connected();
+                
                 if (onReconnect != null) {
-                  onReconnect.command();
+                  Thread thread = new Thread() {
+                    @Override
+                    public void run() {
+                      try {
+                        onReconnect.command();
+                      } catch (Exception e) {
+                        log.warn("Exception running onReconnect command", e);
+                      }
+                    }
+                  };
+                  thread.start();
                 }
                 
-                connected();
-                
               }
             });
       } catch (Exception e) {
@@ -165,7 +180,6 @@ public class ConnectionManager implement
     } else {
       disconnected();
     }
-    notifyAll();
   }
 
   public synchronized boolean isConnected() {
@@ -185,12 +199,8 @@ public class ConnectionManager implement
       this.disconnectedTimer = null;
     }
   }
-
-  public synchronized KeeperState state() {
-    return state;
-  }
   
-  public synchronized boolean isLikelyExpired() {
+  public boolean isLikelyExpired() {
     return likelyExpired;
   }
 
@@ -241,4 +251,4 @@ public class ConnectionManager implement
           "", e);
     }
   }
-}
+}
\ No newline at end of file

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java Fri Jan 17 17:23:33 2014
@@ -123,7 +123,7 @@ public class SolrZkClient {
               }
             }
           });
-    } catch (Throwable e) {
+    } catch (Exception e) {
       connManager.close();
       if (keeper != null) {
         try {
@@ -137,7 +137,7 @@ public class SolrZkClient {
     
     try {
       connManager.waitForConnected(clientConnectTimeout);
-    } catch (Throwable e) {
+    } catch (Exception e) {
       connManager.close();
       try {
         keeper.close();

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ZkClientConnectionStrategy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ZkClientConnectionStrategy.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ZkClientConnectionStrategy.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ZkClientConnectionStrategy.java Fri Jan 17 17:23:33 2014
@@ -43,8 +43,8 @@ public abstract class ZkClientConnection
     for (DisconnectedListener listener : disconnectedListeners) {
       try {
         listener.disconnected();
-      } catch (Throwable t) {
-        SolrException.log(log, "", t);
+      } catch (Exception e) {
+        SolrException.log(log, "", e);
       }
     }
   }
@@ -53,8 +53,8 @@ public abstract class ZkClientConnection
     for (ConnectedListener listener : connectedListeners) {
       try {
         listener.connected();
-      } catch (Throwable t) {
-        SolrException.log(log, "", t);
+      } catch (Exception e) {
+        SolrException.log(log, "", e);
       }
     }
   }

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/cloud/ZkStateReader.java Fri Jan 17 17:23:33 2014
@@ -68,7 +68,8 @@ public class ZkStateReader {
   public static final String LIVE_NODES_ZKNODE = "/live_nodes";
   public static final String ALIASES = "/aliases.json";
   public static final String CLUSTER_STATE = "/clusterstate.json";
-  
+  public static final String ROLES = "/roles.json";
+
   public static final String RECOVERING = "recovering";
   public static final String RECOVERY_FAILED = "recovery_failed";
   public static final String ACTIVE = "active";

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CollectionParams.java Fri Jan 17 17:23:33 2014
@@ -28,7 +28,7 @@ public interface CollectionParams 
 
 
   public enum CollectionAction {
-    CREATE, DELETE, RELOAD, SYNCSHARD, CREATEALIAS, DELETEALIAS, SPLITSHARD, DELETESHARD, CREATESHARD, DELETEREPLICA, MIGRATE;
+    CREATE, DELETE, RELOAD, SYNCSHARD, CREATEALIAS, DELETEALIAS, SPLITSHARD, DELETESHARD, CREATESHARD, DELETEREPLICA, MIGRATE, ADDROLE,REMOVEROLE ;
     
     public static CollectionAction get( String p )
     {

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CommonParams.java Fri Jan 17 17:23:33 2014
@@ -76,15 +76,7 @@ public interface CommonParams {
   /** "ping" value for SolrPing action */
   public static final String PING = "ping";
   // SOLR-4228 end
-  
-  //Issue 1726 start
-  /** score of the last document of the previous page */
-  public static final String PAGESCORE ="pageScore";
-  
-  /** docid of the last document of the previous page */
-  public static final String PAGEDOC ="pageDoc";
-  //Issue 1726 end
-  
+
   /** stylesheet to apply to XML results */
   public static final String XSL ="xsl";
   

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CoreAdminParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CoreAdminParams.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CoreAdminParams.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/CoreAdminParams.java Fri Jan 17 17:23:33 2014
@@ -127,7 +127,8 @@ public abstract class CoreAdminParams
     REQUESTBUFFERUPDATES,
     REQUESTAPPLYUPDATES,
     LOAD_ON_STARTUP,
-    TRANSIENT;
+    TRANSIENT,
+    REJOINOVERSEERELECTION;
     
     public static CoreAdminAction get( String p )
     {

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/QueryElevationParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/QueryElevationParams.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/QueryElevationParams.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/params/QueryElevationParams.java Fri Jan 17 17:23:33 2014
@@ -27,6 +27,8 @@ public interface QueryElevationParams {
   String ENABLE = "enableElevation";
   String EXCLUSIVE = "exclusive";
   String FORCE_ELEVATION = "forceElevation";
+  String IDS = "elevateIds";
+  String EXCLUDE = "excludeIds";
   /**
    * The name of the field that editorial results will be written out as when using the QueryElevationComponent, which
    * automatically configures the EditorialMarkerFactory.  The default name is "elevated"

Modified: lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/util/Base64.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/util/Base64.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/util/Base64.java (original)
+++ lucene/dev/branches/lucene5376/solr/solrj/src/java/org/apache/solr/common/util/Base64.java Fri Jan 17 17:23:33 2014
@@ -57,7 +57,7 @@ public class Base64 {
     int numFullGroups = aLen / 3;
     int numBytesInPartialGroup = aLen - 3 * numFullGroups;
     int resultLen = 4 * ((aLen + 2) / 3);
-    StringBuffer result = new StringBuffer(resultLen);
+    StringBuilder result = new StringBuilder(resultLen);
     char[] intToAlpha = intToBase64;
 
     // Translate all full groups from byte array elements to Base64

Modified: lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java (original)
+++ lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/BaseDistributedSearchTestCase.java Fri Jan 17 17:23:33 2014
@@ -522,6 +522,14 @@ public abstract class BaseDistributedSea
   }
 
   /**
+   * Sets distributed params.
+   * Returns the QueryResponse from {@link #queryServer},
+   */
+  protected QueryResponse query(SolrParams params) throws Exception {
+    return query(true, params);
+  }
+
+  /**
    * Returns the QueryResponse from {@link #queryServer}  
    */
   protected QueryResponse query(boolean setDistribParams, Object[] q) throws Exception {
@@ -531,6 +539,16 @@ public abstract class BaseDistributedSea
     for (int i = 0; i < q.length; i += 2) {
       params.add(q[i].toString(), q[i + 1].toString());
     }
+    return query(setDistribParams, params);
+  }
+
+  /**
+   * Returns the QueryResponse from {@link #queryServer}  
+   */
+  protected QueryResponse query(boolean setDistribParams, SolrParams p) throws Exception {
+    
+    final ModifiableSolrParams params = new ModifiableSolrParams(p);
+
     // TODO: look into why passing true causes fails
     params.set("distrib", "false");
     final QueryResponse controlRsp = controlClient.query(params);

Modified: lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java (original)
+++ lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/SolrTestCaseJ4.java Fri Jan 17 17:23:33 2014
@@ -21,6 +21,8 @@ import static com.google.common.base.Pre
 
 import java.io.File;
 import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -41,6 +43,7 @@ import javax.xml.xpath.XPathExpressionEx
 import org.apache.commons.codec.Charsets;
 import org.apache.commons.io.FileUtils;
 import org.apache.lucene.analysis.MockAnalyzer;
+import org.apache.lucene.analysis.MockTokenizer;
 import org.apache.lucene.index.IndexWriterConfig;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.LuceneTestCase;
@@ -174,6 +177,19 @@ public abstract class SolrTestCaseJ4 ext
     }
   }
 
+
+  protected static MockTokenizer whitespaceMockTokenizer(Reader input) throws IOException {
+    MockTokenizer mockTokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, false);
+    mockTokenizer.setReader(input);
+    return mockTokenizer;
+  }
+
+  protected static MockTokenizer whitespaceMockTokenizer(String input) throws IOException {
+    MockTokenizer mockTokenizer = new MockTokenizer(MockTokenizer.WHITESPACE, false);
+    mockTokenizer.setReader(new StringReader(input));
+    return mockTokenizer;
+  }
+
   /**
    * Call this from @BeforeClass to set up the test harness and update handler with no cores.
    *
@@ -673,9 +689,10 @@ public abstract class SolrTestCaseJ4 ext
    * Validates a query matches some JSON test expressions using the default double delta tolerance.
    * @see JSONTestUtil#DEFAULT_DELTA
    * @see #assertJQ(SolrQueryRequest,double,String...)
+   * @return The request response as a JSON String if all test patterns pass
    */
-  public static void assertJQ(SolrQueryRequest req, String... tests) throws Exception {
-    assertJQ(req, JSONTestUtil.DEFAULT_DELTA, tests);
+  public static String assertJQ(SolrQueryRequest req, String... tests) throws Exception {
+    return assertJQ(req, JSONTestUtil.DEFAULT_DELTA, tests);
   }
   /**
    * Validates a query matches some JSON test expressions and closes the
@@ -690,8 +707,9 @@ public abstract class SolrTestCaseJ4 ext
    * @param req Solr request to execute
    * @param delta tolerance allowed in comparing float/double values
    * @param tests JSON path expression + '==' + expected value
+   * @return The request response as a JSON String if all test patterns pass
    */
-  public static void assertJQ(SolrQueryRequest req, double delta, String... tests) throws Exception {
+  public static String assertJQ(SolrQueryRequest req, double delta, String... tests) throws Exception {
     SolrParams params =  null;
     try {
       params = req.getParams();
@@ -739,6 +757,7 @@ public abstract class SolrTestCaseJ4 ext
           }
         }
       }
+      return response;
     } finally {
       // restore the params
       if (params != null && params != req.getParams()) req.setParams(params);
@@ -871,7 +890,7 @@ public abstract class SolrTestCaseJ4 ext
    */
   public static XmlDoc doc(String... fieldsAndValues) {
     XmlDoc d = new XmlDoc();
-    d.xml = TestHarness.makeSimpleDoc(fieldsAndValues).toString();
+    d.xml = TestHarness.makeSimpleDoc(fieldsAndValues);
     return d;
   }
 
@@ -1767,4 +1786,5 @@ public abstract class SolrTestCaseJ4 ext
     }
   }
 
+
 }

Modified: lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/analysis/MockTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/analysis/MockTokenizerFactory.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/analysis/MockTokenizerFactory.java (original)
+++ lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/analysis/MockTokenizerFactory.java Fri Jan 17 17:23:33 2014
@@ -52,8 +52,8 @@ public class MockTokenizerFactory extend
   }
 
   @Override
-  public MockTokenizer create(AttributeFactory factory, Reader input) {
-    MockTokenizer t = new MockTokenizer(factory, input, pattern, false);
+  public MockTokenizer create(AttributeFactory factory) {
+    MockTokenizer t = new MockTokenizer(factory, pattern, false);
     t.setEnableChecks(enableChecks);
     return t;
   }

Modified: lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java?rev=1559196&r1=1559195&r2=1559196&view=diff
==============================================================================
--- lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java (original)
+++ lucene/dev/branches/lucene5376/solr/test-framework/src/java/org/apache/solr/util/BaseTestHarness.java Fri Jan 17 17:23:33 2014
@@ -103,7 +103,7 @@ abstract public class BaseTestHarness {
    *
    * @param fieldsAndValues 0 and Even numbered args are fields names odds are field values.
    */
-  public static StringBuffer makeSimpleDoc(String... fieldsAndValues) {
+  public static String makeSimpleDoc(String... fieldsAndValues) {
 
     try {
       StringWriter w = new StringWriter();
@@ -113,7 +113,7 @@ abstract public class BaseTestHarness {
             fieldsAndValues[i]);
       }
       w.append("</doc>");
-      return w.getBuffer();
+      return w.toString();
     } catch (IOException e) {
       throw new RuntimeException
           ("this should never happen with a StringWriter", e);