34 |
34 |
import java.io.Reader;
|
35 |
35 |
import java.io.StringReader;
|
36 |
36 |
import java.io.StringWriter;
|
|
37 |
import java.text.DateFormat;
|
|
38 |
import java.util.Calendar;
|
|
39 |
import java.util.GregorianCalendar;
|
|
40 |
import java.util.Date;
|
|
41 |
import java.util.SimpleTimeZone;
|
|
42 |
import java.util.TimeZone;
|
37 |
43 |
|
38 |
44 |
import junit.framework.Test;
|
39 |
45 |
import junit.framework.TestCase;
|
... | ... | |
47 |
53 |
{
|
48 |
54 |
private String metacatUrl =
|
49 |
55 |
"http://knb.ecoinformatics.org/knb/servlet/metacat";
|
|
56 |
//"http://dev.nceas.ucsb.edu/tao/servlet/metacat";
|
50 |
57 |
private String username = "@mcuser@";
|
51 |
58 |
private String password = "@mcpassword@";
|
52 |
59 |
private String failpass = "uidfnkj43987yfdn";
|
53 |
60 |
private String docid = "jones.204.22";
|
54 |
|
private String newdocid = "@newdocid@";
|
|
61 |
private String prefix = "test";
|
|
62 |
private String newdocid = null;
|
55 |
63 |
private String testfile = "test/jones.204.22.xml";
|
56 |
64 |
private String queryFile = "test/query.xml";
|
57 |
65 |
//private String docid = "Gramling.61.26";
|
... | ... | |
67 |
75 |
public MetacatClientTest(String name)
|
68 |
76 |
{
|
69 |
77 |
super(name);
|
|
78 |
newdocid = generateDocid();
|
70 |
79 |
}
|
71 |
80 |
|
72 |
81 |
/**
|
... | ... | |
77 |
86 |
try {
|
78 |
87 |
FileReader fr = new FileReader(testfile);
|
79 |
88 |
testdocument = IOUtil.getAsString(fr, true);
|
80 |
|
//StringBuffer buf = IOUtil.getAsStringBuffer(fr, true);
|
81 |
|
//testdocument = buf.toString();
|
82 |
89 |
} catch (IOException ioe) {
|
83 |
90 |
fail("Can't read test data to run the test: " + testfile);
|
84 |
91 |
}
|
... | ... | |
159 |
166 |
{
|
160 |
167 |
try {
|
161 |
168 |
m.login(username, password);
|
162 |
|
Reader r = m.read(docid);
|
|
169 |
Reader r = m.read(newdocid+".1");
|
163 |
170 |
String doc = IOUtil.getAsString(r, true);
|
164 |
171 |
System.err.println(doc);
|
165 |
172 |
assertTrue(doc.equals(testdocument));
|
166 |
|
|
167 |
173 |
} catch (MetacatAuthException mae) {
|
168 |
174 |
fail("Authorization failed:\n" + mae.getMessage());
|
169 |
175 |
} catch (MetacatInaccessibleException mie) {
|
... | ... | |
182 |
188 |
FileReader fr = new FileReader(queryFile);
|
183 |
189 |
Reader r = m.query(fr);
|
184 |
190 |
String result = IOUtil.getAsString(r, true);
|
185 |
|
assertTrue(result.indexOf("obfs.100.3")!=-1);
|
|
191 |
assertTrue(result.indexOf("jones.204.22")!=-1);
|
186 |
192 |
} catch (MetacatInaccessibleException mie) {
|
187 |
193 |
fail("Metacat Inaccessible:\n" + mie.getMessage());
|
188 |
194 |
} catch (Exception e) {
|
... | ... | |
196 |
202 |
public void insert()
|
197 |
203 |
{
|
198 |
204 |
try {
|
|
205 |
String identifier = newdocid + ".1";
|
199 |
206 |
m.login(username, password);
|
200 |
|
String response = m.insert(newdocid,
|
|
207 |
String response = m.insert(identifier,
|
201 |
208 |
new StringReader(testdocument), null);
|
|
209 |
System.err.println(
|
|
210 |
DateFormat.getDateTimeInstance().format(new Date()));
|
|
211 |
//Thread.sleep(20000);
|
|
212 |
System.err.println(
|
|
213 |
DateFormat.getDateTimeInstance().format(new Date()));
|
202 |
214 |
assertTrue(response.indexOf("<success>") != -1);
|
203 |
|
assertTrue(response.indexOf(newdocid) != -1);
|
|
215 |
assertTrue(response.indexOf(identifier) != -1);
|
|
216 |
System.err.println(response);
|
204 |
217 |
|
205 |
218 |
} catch (MetacatAuthException mae) {
|
206 |
219 |
fail("Authorization failed:\n" + mae.getMessage());
|
... | ... | |
214 |
227 |
fail("General exception:\n" + e.getMessage());
|
215 |
228 |
}
|
216 |
229 |
}
|
|
230 |
|
|
231 |
/**
|
|
232 |
* Create a hopefully unique docid for testing insert and update. Does
|
|
233 |
* not include the 'revision' part of the id.
|
|
234 |
*
|
|
235 |
* @return a String docid based on the current date and time
|
|
236 |
*/
|
|
237 |
private String generateDocid()
|
|
238 |
{
|
|
239 |
StringBuffer docid = new StringBuffer(prefix);
|
|
240 |
docid.append(".");
|
|
241 |
|
|
242 |
// Create a calendar to get the date formatted properly
|
|
243 |
String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
|
|
244 |
SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
|
|
245 |
pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2*60*60*1000);
|
|
246 |
pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2*60*60*1000);
|
|
247 |
Calendar calendar = new GregorianCalendar(pdt);
|
|
248 |
Date trialTime = new Date();
|
|
249 |
calendar.setTime(trialTime);
|
|
250 |
docid.append(calendar.get(Calendar.YEAR));
|
|
251 |
docid.append(calendar.get(Calendar.DAY_OF_YEAR));
|
|
252 |
docid.append(calendar.get(Calendar.HOUR_OF_DAY));
|
|
253 |
docid.append(calendar.get(Calendar.MINUTE));
|
|
254 |
docid.append(calendar.get(Calendar.SECOND));
|
|
255 |
|
|
256 |
return docid.toString();
|
|
257 |
}
|
217 |
258 |
}
|
New test code for metacat client. Auto-generate id. Query and read from
the inserted document. Still having some problems with the tests.