You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/02/06 20:21:44 UTC

svn commit: r741684 - in /lucene/solr/trunk: CHANGES.txt src/test/org/apache/solr/handler/TestReplicationHandler.java src/test/test-files/solr/conf/solrconfig-slave.xml

Author: shalin
Date: Fri Feb  6 19:21:44 2009
New Revision: 741684

URL: http://svn.apache.org/viewvc?rev=741684&view=rev
Log:
SOLR-959 -- Refactored TestReplicationHandler to remove hardcoded port numbers

Modified:
    lucene/solr/trunk/CHANGES.txt
    lucene/solr/trunk/src/test/org/apache/solr/handler/TestReplicationHandler.java
    lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig-slave.xml

Modified: lucene/solr/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=741684&r1=741683&r2=741684&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Fri Feb  6 19:21:44 2009
@@ -283,6 +283,8 @@
 
 15. Upgraded to Lucene 2.9-dev r738218 (yonik)
 
+16. SOLR-959: Refactored TestReplicationHandler to remove hardcoded port numbers (hossman, Akshay Ukey via shalin)
+
 Build
 ----------------------
  1. SOLR-776: Added in ability to sign artifacts via Ant for releases (gsingers)

Modified: lucene/solr/trunk/src/test/org/apache/solr/handler/TestReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/org/apache/solr/handler/TestReplicationHandler.java?rev=741684&r1=741683&r2=741684&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/org/apache/solr/handler/TestReplicationHandler.java (original)
+++ lucene/solr/trunk/src/test/org/apache/solr/handler/TestReplicationHandler.java Fri Feb  6 19:21:44 2009
@@ -42,6 +42,9 @@
  */
 public class TestReplicationHandler extends TestCase {
 
+  private static final String CONF_DIR = "." + File.separator + "solr" + File.separator + "conf" + File.separator;
+  private static final String SLAVE_CONFIG = CONF_DIR + "solrconfig-slave.xml";
+
   JettySolrRunner masterJetty, slaveJetty;
   SolrServer masterClient, slaveClient;
   SolrInstance master = null, slave = null;
@@ -49,36 +52,30 @@
   String context = "/solr";
 
   public void setUp() throws Exception {
-    master = new SolrInstance("master", 1);
-    slave = new SolrInstance("slave", 0);
+    master = new SolrInstance("master", null);
     master.setUp();
-    slave.setUp();
-
-    masterJetty = createJetty(master, 9999);
+    masterJetty = createJetty(master);
     masterClient = createNewSolrServer(masterJetty.getLocalPort());
 
-    slaveJetty = createJetty(slave, 0);
+    slave = new SolrInstance("slave", masterJetty.getLocalPort());
+    slave.setUp();
+    slaveJetty = createJetty(slave);
     slaveClient = createNewSolrServer(slaveJetty.getLocalPort());
-
   }
 
   @Override
   public void tearDown() throws Exception {
-    destroyServers();
-    master.tearDown();
-    slave.tearDown();
-  }
-
-  private void destroyServers() throws Exception {
     masterJetty.stop();
     slaveJetty.stop();
+    master.tearDown();
+    slave.tearDown();
   }
 
-  private JettySolrRunner createJetty(SolrInstance instance, int port) throws Exception {
+  private JettySolrRunner createJetty(SolrInstance instance) throws Exception {
     System.setProperty("solr.solr.home", instance.getHomeDir());
     System.setProperty("solr.data.dir", instance.getDataDir());
 
-    JettySolrRunner jetty = new JettySolrRunner("/solr", port);
+    JettySolrRunner jetty = new JettySolrRunner("/solr", 0);
 
     jetty.start();
     return jetty;
@@ -147,16 +144,19 @@
     masterClient.commit();
 
     //change the schema on master
-    copyFile(new File("." + File.separator +
-            "solr" + File.separator +
-            "conf" + File.separator + "schema-replication2.xml"),
-            new File(master.getConfDir(), "schema.xml"));
+    copyFile(new File(CONF_DIR + "schema-replication2.xml"), new File(master.getConfDir(), "schema.xml"));
 
     masterJetty.stop();
 
-    masterJetty = createJetty(master, 9999);
+    masterJetty = createJetty(master);
     masterClient = createNewSolrServer(masterJetty.getLocalPort());
 
+    copyFile(new File(SLAVE_CONFIG), new File(slave.getConfDir(), "solrconfig.xml"), masterJetty.getLocalPort());
+
+    slaveJetty.stop();
+    slaveJetty = createJetty(slave);
+    slaveClient = createNewSolrServer(slaveJetty.getLocalPort());
+
     //add a doc with new field and commit on master to trigger snappull from slave.
     index(masterClient, "id", "2000", "name", "name = " + 2000, "newname", "newname = " + 2000);
     masterClient.commit();
@@ -199,28 +199,25 @@
     masterClient.commit();
 
     //change solrconfig on master
-    copyFile(new File("." + File.separator +
-            "solr" + File.separator +
-            "conf" + File.separator + "solrconfig-master1.xml"),
-            new File(master.getConfDir(), "solrconfig.xml"));
+    copyFile(new File(CONF_DIR + "solrconfig-master1.xml"), new File(master.getConfDir(), "solrconfig.xml"));
 
     //change schema on master
-    copyFile(new File("." + File.separator +
-            "solr" + File.separator +
-            "conf" + File.separator + "schema-replication2.xml"),
-            new File(master.getConfDir(), "schema.xml"));
+    copyFile(new File(CONF_DIR + "schema-replication2.xml"), new File(master.getConfDir(), "schema.xml"));
 
     //keep a copy of the new schema
-    copyFile(new File("." + File.separator +
-            "solr" + File.separator +
-            "conf" + File.separator + "schema-replication2.xml"),
-            new File(master.getConfDir(), "schema-replication2.xml"));
+    copyFile(new File(CONF_DIR + "schema-replication2.xml"), new File(master.getConfDir(), "schema-replication2.xml"));
 
     masterJetty.stop();
 
-    masterJetty = createJetty(master, 9999);
+    masterJetty = createJetty(master);
     masterClient = createNewSolrServer(masterJetty.getLocalPort());
 
+    copyFile(new File(SLAVE_CONFIG), new File(slave.getConfDir(), "solrconfig.xml"), masterJetty.getLocalPort());
+
+    slaveJetty.stop();
+    slaveJetty = createJetty(slave);
+    slaveClient = createNewSolrServer(slaveJetty.getLocalPort());
+
     //add a doc with new field and commit on master to trigger snappull from slave.
     index(masterClient, "id", "2000", "name", "name = " + 2000, "newname", "newname = " + 2000);
     masterClient.commit();
@@ -290,12 +287,9 @@
   public void testSnapPullWithMasterUrl() throws Exception {
     //change solrconfig on slave
     //this has no entry for pollinginterval
-    copyFile(new File("." + File.separator +
-            "solr" + File.separator +
-            "conf" + File.separator + "solrconfig-slave1.xml"),
-            new File(slave.getConfDir(), "solrconfig.xml"));
+    copyFile(new File(CONF_DIR + "solrconfig-slave1.xml"), new File(slave.getConfDir(), "solrconfig.xml"));
     slaveJetty.stop();
-    slaveJetty = createJetty(slave, 0);
+    slaveJetty = createJetty(slave);
     slaveClient = createNewSolrServer(slaveJetty.getLocalPort());
 
     //add 500 docs to master
@@ -327,11 +321,11 @@
     String cmp = TestDistributedSearch.compare(masterQueryResult, slaveQueryResult, 0, null);
     assertEquals(null, cmp);
   }
-  
-  public void testReplicateAfterStartup() throws Exception{
+
+  public void testReplicateAfterStartup() throws Exception {
     //stop slave
     slaveJetty.stop();
-    
+
     //add 500 docs to master
     for (int i = 0; i < 500; i++)
       index(masterClient, "id", i, "name", "name = " + i);
@@ -343,18 +337,18 @@
     assertEquals(500, masterQueryResult.getNumFound());
 
     //change solrconfig having 'replicateAfter startup' option on master
-    copyFile(new File("." + File.separator +
-            "solr" + File.separator +
-            "conf" + File.separator + "solrconfig-master2.xml"),
+    copyFile(new File(CONF_DIR + "solrconfig-master2.xml"),
             new File(master.getConfDir(), "solrconfig.xml"));
 
     masterJetty.stop();
 
-    masterJetty = createJetty(master, 9999);
+    masterJetty = createJetty(master);
     masterClient = createNewSolrServer(masterJetty.getLocalPort());
 
+    copyFile(new File(SLAVE_CONFIG), new File(slave.getConfDir(), "solrconfig.xml"), masterJetty.getLocalPort());
+
     //start slave
-    slaveJetty = createJetty(slave, 0);
+    slaveJetty = createJetty(slave);
     slaveClient = createNewSolrServer(slaveJetty.getLocalPort());
 
     //sleep for pollinterval time 3s, to let slave pull data.
@@ -367,17 +361,27 @@
     //compare results
     String cmp = TestDistributedSearch.compare(masterQueryResult, slaveQueryResult, 0, null);
     assertEquals(null, cmp);
-    
+
   }
 
+  /* character copy of file using UTF-8 */
   void copyFile(File src, File dst) throws IOException {
-    InputStream in = new FileInputStream(src);
-    OutputStream out = new FileOutputStream(dst);
+    copyFile(src, dst, null);
+  }
+
+  /**
+   * character copy of file using UTF-8. If port is non-null, will be substituted any time "TEST_PORT" is found.
+   */
+  private void copyFile(File src, File dst, Integer port) throws IOException {
+    BufferedReader in = new BufferedReader(new FileReader(src));
+    Writer out = new FileWriter(dst);
 
-    byte[] buf = new byte[1024];
-    int len;
-    while ((len = in.read(buf)) > 0)
-      out.write(buf, 0, len);
+    for (String line = in.readLine(); null != line; line = in.readLine()) {
+
+      if (null != port)
+        line = line.replace("TEST_PORT", port.toString());
+      out.write(line);
+    }
     in.close();
     out.close();
   }
@@ -385,13 +389,17 @@
   private class SolrInstance extends AbstractSolrTestCase {
 
     String name;
-    int type;
+    Integer masterPort;
     File homeDir;
     File confDir;
 
-    public SolrInstance(String name, int type) {
+    /**
+     * if masterPort is null, this instance is a master -- otherwise this instance is a slave, and assumes the master is
+     * on localhost at the specified port.
+     */
+    public SolrInstance(String name, Integer port) {
       this.name = name;
-      this.type = type;
+      this.masterPort = port;
     }
 
     public String getHomeDir() {
@@ -400,7 +408,7 @@
 
     @Override
     public String getSchemaFile() {
-      return "." + File.separator + "solr" + File.separator + "conf" + File.separator + "schema-replication1.xml";
+      return CONF_DIR + "schema-replication1.xml";
     }
 
     public String getConfDir() {
@@ -414,11 +422,10 @@
     @Override
     public String getSolrConfigFile() {
       String fname = "";
-      if (type == 1)
-        fname = "." + File.separator + "solr" + File.separator + "conf" + File.separator + "solrconfig-master.xml";
-      if (type == 0)
-        fname = "." + File.separator + "solr" + File.separator + "conf" + File.separator + "solrconfig-slave.xml";
-      System.out.println(fname);
+      if (null == masterPort)
+        fname = CONF_DIR + "solrconfig-master.xml";
+      else
+        fname = SLAVE_CONFIG;
       return fname;
     }
 
@@ -430,12 +437,11 @@
               + File.separator
               + getClass().getName() + "-" + System.currentTimeMillis();
 
-      if (type == 1) {
+      if (null == masterPort) {
         homeDir = new File(home + "master");
         dataDir = new File(home + "master", "data");
         confDir = new File(home + "master", "conf");
-      }
-      if (type == 0) {
+      } else {
         homeDir = new File(home + "slave");
         dataDir = new File(home + "slave", "data");
         confDir = new File(home + "slave", "conf");
@@ -446,7 +452,7 @@
       confDir.mkdirs();
 
       File f = new File(confDir, "solrconfig.xml");
-      copyFile(new File(getSolrConfigFile()), f);
+      copyFile(new File(getSolrConfigFile()), f, masterPort);
       f = new File(confDir, "schema.xml");
       copyFile(new File(getSchemaFile()), f);
     }

Modified: lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig-slave.xml
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig-slave.xml?rev=741684&r1=741683&r2=741684&view=diff
==============================================================================
--- lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig-slave.xml (original)
+++ lucene/solr/trunk/src/test/test-files/solr/conf/solrconfig-slave.xml Fri Feb  6 19:21:44 2009
@@ -60,29 +60,20 @@
 
   <!-- test query parameter defaults -->
   <requestHandler name="defaults" class="solr.StandardRequestHandler">
-    <lst name="defaults">
-      <int name="rows">4</int>
-      <bool name="hl">true</bool>
-      <str name="hl.fl">text,name,subject,title,whitetok</str>
-    </lst>
+
   </requestHandler>
 
   <!-- test query parameter defaults -->
   <requestHandler name="lazy" class="solr.StandardRequestHandler" startup="lazy">
-    <lst name="defaults">
-      <int name="rows">4</int>
-      <bool name="hl">true</bool>
-      <str name="hl.fl">text,name,subject,title,whitetok</str>
-    </lst>
   </requestHandler>
 
   <requestHandler name="/update" class="solr.XmlUpdateRequestHandler"/>
 
   <requestHandler name="/replication" class="solr.ReplicationHandler">
-    <lst name="slave">
-      <str name="masterUrl">http://localhost:9999/solr/replication</str>
-      <str name="pollInterval">00:00:01</str>
-    </lst>
+	<lst name="slave">
+		<str name="masterUrl">http://localhost:TEST_PORT/solr/replication</str>
+		<str name="pollInterval">00:00:01</str>
+	</lst>
   </requestHandler>