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>