public void testMain() throws Exception {
File tempFile = File.createTempFile("MainTest", "ser");
assertTrue(tempFile.delete());
File bagDir = Util.createTempDirectory("MainTest_bag");
try {
HttpServer ws = Main.createWebServer(new String[]{"--port=10801", "--createmode=OPEN", "-m", tempFile.getAbsolutePath()});
ws.start();
Thread.currentThread().sleep(1000);
try {
baseUrl = "http://localhost:10801";
Object ret;
ret = call("_meta","execute",Util.literalSMap().p("code","repo.getDbNames()"));
//System.out.println(ret.toString());
String pathStr = bagDir.getAbsolutePath().replace('\\', '/');
ret = call("_meta","execute",Util.literalSMap().p("code","repo.setDb(\"testdb\",Packages.dovetaildb.StdLib.makeFsDb(\""+pathStr+"\",false))"));
//System.out.println(ret.toString());
checkDocExamples();
Random random = new Random(43534454);
long jsonSize=0;
ArrayList<Map<String,Object>> allRecs = new ArrayList<Map<String,Object>>();
int NUM_ENTRIES = 25;
for(int i=0; i<NUM_ENTRIES; i++) {
Map<String,Object> entry = makeEntry(i, random);
allRecs.add(entry);
String encodedEntry = Util.jsonEncode(entry);
jsonSize += encodedEntry.length() + 1;
ret = call("testdb","put",Util.literalSMap().p("bag","people").p("entry", encodedEntry));
//System.out.println(ret.toString());
}
System.out.println("load complete");
size(bagDir);
//long preRebuildSize = Util.sizeDir(bagDir);
forceRebuild();
size(bagDir);
//long postRebuildSize = Util.sizeDir(bagDir);
System.out.println("json raw: "+jsonSize);
// test behavior
List<Map<String,Object>> rets;
rets = callQuery("testdb","people","{\"id\":\"0\"}","{}");
System.out.println("WHO? "+rets);
assertEquals(1, rets.size());
rets = callQuery("testdb","people","{}","{}");
System.out.println("WHO? "+rets);
assertEquals(NUM_ENTRIES, rets.size());
List<Map<String,Object>> recs;
Map<String,Object> rec;
recs = callQuery("testdb","people","{}","{}");
assertEquals(NUM_ENTRIES, recs.size());
double midNum =((Number)recs.get(0).get("score")).doubleValue();
recs = callQuery("testdb","people","{}","{\"score\":{\"score\":[\"NumericScore\"]}}");
System.out.println("WHO? "+recs);
double hiNum = ((Number)recs.get(0).get("score")).doubleValue();
assertEquals(NUM_ENTRIES, recs.size());
recs = callQuery("testdb","people","{}","{\"score\":{\"score\":[\"ReverseScore\",[\"NumericScore\"]]}}");
assertEquals(NUM_ENTRIES, recs.size());
rec = recs.get(0);
assertTrue(((String)rec.get("name")).length() > 0);
double loNum = ((Number)rec.get("score")).doubleValue();
assertTrue(loNum < hiNum);
assertTrue(loNum <= midNum);
assertTrue(midNum <= hiNum);
} finally {
ws.stop();
}
} finally {
tempFile.delete();
Util.deleteDirectory(bagDir);
}