Revision 6770
Added by ben leinfelder over 12 years ago
ReplicationTest.java | ||
---|---|---|
25 | 25 |
|
26 | 26 |
package edu.ucsb.nceas.metacat.replication; |
27 | 27 |
|
28 |
import java.io.InputStream; |
|
28 | 29 |
import java.net.URL; |
29 | 30 |
|
31 |
import org.apache.commons.io.IOUtils; |
|
32 |
|
|
30 | 33 |
import junit.framework.Test; |
31 | 34 |
import junit.framework.TestSuite; |
32 | 35 |
import edu.ucsb.nceas.MCTestCase; |
36 |
import edu.ucsb.nceas.metacat.MetaCatServlet; |
|
37 |
import edu.ucsb.nceas.metacat.client.Metacat; |
|
33 | 38 |
import edu.ucsb.nceas.metacat.client.MetacatFactory; |
34 | 39 |
import edu.ucsb.nceas.metacat.client.MetacatInaccessibleException; |
35 | 40 |
import edu.ucsb.nceas.metacat.properties.PropertyService; |
41 |
import edu.ucsb.nceas.metacat.util.DocumentUtil; |
|
36 | 42 |
import edu.ucsb.nceas.metacat.util.MetacatUtil; |
37 | 43 |
|
38 | 44 |
/** |
... | ... | |
41 | 47 |
public class ReplicationTest |
42 | 48 |
extends MCTestCase { |
43 | 49 |
|
44 |
private String targetReplicationServer = null; |
|
50 |
private static final long forceReplicationSleep = 10000; |
|
51 |
private String targetReplicationServer = null; |
|
52 |
private Metacat targetMetacat = null; |
|
45 | 53 |
|
46 | 54 |
/** |
47 | 55 |
* Constructor to build the test |
... | ... | |
57 | 65 |
*/ |
58 | 66 |
public void setUp() { |
59 | 67 |
try { |
60 |
System.err.println("Test Metacat: " + metacatUrl); |
|
68 |
// get the target ("B server") |
|
69 |
targetReplicationServer = PropertyService.getProperty("test.replication.targetServer"); |
|
61 | 70 |
m = MetacatFactory.createMetacatConnection(metacatUrl); |
62 |
targetReplicationServer = PropertyService.getProperty("test.replication.targetServer"); |
|
71 |
targetMetacat = MetacatFactory.createMetacatConnection(targetReplicationServer + "/metacat"); |
|
72 |
|
|
63 | 73 |
} |
64 | 74 |
catch (MetacatInaccessibleException mie) { |
65 | 75 |
System.err.println("Metacat is: " + metacatUrl); |
... | ... | |
84 | 94 |
suite.addTest(new ReplicationTest("initialize")); |
85 | 95 |
// Test basic functions |
86 | 96 |
suite.addTest(new ReplicationTest("testCertificate")); |
87 |
// suite.addTest(new ReplicationTest("replicateData")); |
|
97 |
suite.addTest(new ReplicationTest("testReplicateData_AtoB")); |
|
98 |
suite.addTest(new ReplicationTest("testReplicateData_BtoA")); |
|
99 |
|
|
88 | 100 |
return suite; |
89 | 101 |
} |
90 | 102 |
|
... | ... | |
98 | 110 |
|
99 | 111 |
public void testCertificate() { |
100 | 112 |
try { |
101 |
URL u = new URL("https://" + targetReplicationServer + "?server=" + MetacatUtil.getLocalReplicationServerName() + "&action=test"); |
|
113 |
URL u = new URL("https://" + targetReplicationServer + "/replication/servlet?server=" + MetacatUtil.getLocalReplicationServerName() + "&action=test");
|
|
102 | 114 |
String test = ReplicationService.getURLContent(u); |
103 | 115 |
assertTrue(test.contains("Test successfully")); |
104 | 116 |
|
... | ... | |
107 | 119 |
fail(e.getMessage()); |
108 | 120 |
} |
109 | 121 |
} |
122 |
|
|
123 |
public void testReplicateData_AtoB() { |
|
124 |
try { |
|
125 |
// the id |
|
126 |
String docid = DocumentUtil.generateDocumentId("replicationTest", 1); |
|
127 |
|
|
128 |
// the test data |
|
129 |
String object = "test"; |
|
130 |
|
|
131 |
// insert data locally |
|
132 |
m.login(username, password); |
|
133 |
m.upload(docid, "testObject", IOUtils.toInputStream(object, MetaCatServlet.DEFAULT_ENCODING), object.getBytes(MetaCatServlet.DEFAULT_ENCODING).length); |
|
134 |
|
|
135 |
// wait for replication (forced) |
|
136 |
Thread.sleep(forceReplicationSleep); |
|
137 |
|
|
138 |
// check the target for the same data |
|
139 |
targetMetacat.login(username, password); |
|
140 |
InputStream is = targetMetacat.read(docid); |
|
141 |
String replicatedObject = IOUtils.toString(is, MetaCatServlet.DEFAULT_ENCODING); |
|
142 |
|
|
143 |
assertEquals(object, replicatedObject); |
|
144 |
|
|
145 |
} catch (Exception e) { |
|
146 |
e.printStackTrace(); |
|
147 |
fail(e.getMessage()); |
|
148 |
} |
|
149 |
} |
|
150 |
|
|
151 |
public void testReplicateData_BtoA() { |
|
152 |
try { |
|
153 |
// the id |
|
154 |
String docid = DocumentUtil.generateDocumentId("replicationTest", 1); |
|
155 |
|
|
156 |
// the test data |
|
157 |
String object = "test"; |
|
158 |
|
|
159 |
// insert data locally |
|
160 |
targetMetacat.login(username, password); |
|
161 |
targetMetacat.upload(docid, "testObject", IOUtils.toInputStream(object, MetaCatServlet.DEFAULT_ENCODING), object.getBytes(MetaCatServlet.DEFAULT_ENCODING).length); |
|
162 |
|
|
163 |
// wait for replication (forced) |
|
164 |
Thread.sleep(forceReplicationSleep); |
|
165 |
|
|
166 |
// check the target for the same data |
|
167 |
m.login(username, password); |
|
168 |
InputStream is = m.read(docid); |
|
169 |
String replicatedObject = IOUtils.toString(is, MetaCatServlet.DEFAULT_ENCODING); |
|
170 |
|
|
171 |
assertEquals(object, replicatedObject); |
|
172 |
|
|
173 |
} catch (Exception e) { |
|
174 |
e.printStackTrace(); |
|
175 |
fail(e.getMessage()); |
|
176 |
} |
|
177 |
} |
|
110 | 178 |
|
111 | 179 |
|
112 | 180 |
} |
Also available in: Unified diff
simple tests for 2-way data replication
http://bugzilla.ecoinformatics.org/show_bug.cgi?id=5520