import org.junit.Test;
import org.junit.Assert;
import com.mongodb.*;
import java.util.Set;
import jelectrum.db.mongo.MongoKey;
import jelectrum.db.mongo.MongoEntry;
import jelectrum.db.mongo.MongoMapSet;
import org.bitcoinj.core.Sha256Hash;
public class MongoTest implements java.io.Serializable
{
@Test
public void testCrud()
throws java.io.IOException
{
MongoClientOptions.Builder opts = MongoClientOptions.builder();
opts.connectionsPerHost(100);
MongoClient mc = new MongoClient("localhost", opts.build());
DB db = mc.getDB("test");
DBCollection coll = db.getCollection("crudtest");
coll.drop();
coll.save(new MongoEntry("a",TestUtil.randomByteString()));
coll.save(new MongoEntry("b",TestUtil.randomByteString()));
coll.save(new MongoEntry("c",TestUtil.randomByteString()));
coll.save(new MongoEntry("d",TestUtil.randomByteString()));
coll.save(new MongoEntry("a",TestUtil.randomByteString()));
Assert.assertEquals(4, coll.count());
Assert.assertEquals(1, coll.count(new MongoKey("a")));
Assert.assertEquals(0, coll.count(new MongoKey("aaa")));
}
@Test
public void testMapSet()
throws Exception
{
MongoClientOptions.Builder opts = MongoClientOptions.builder();
opts.connectionsPerHost(100);
MongoClient mc = new MongoClient("localhost", opts.build());
DB db = mc.getDB("test");
DBCollection coll = db.getCollection("mapsettest");
coll.drop();
MongoMapSet m = new MongoMapSet(coll);
m.add("a",TestUtil.randomHash());
m.add("a",TestUtil.randomHash());
m.add("a",TestUtil.randomHash());
m.add("a",TestUtil.randomHash());
Set<Sha256Hash> s = m.getSet("a",10000);
Assert.assertEquals(4, s.size());
Sha256Hash h = TestUtil.randomHash();
m.add("a",h);
m.add("a",h);
m.add("a",h);
m.add("a",h);
m.add("a",h);
s = m.getSet("a",10000);
Assert.assertEquals(5, s.size());
}
/*@Test
public void testUpdate()
throws java.io.IOException
{
MongoClientOptions.Builder opts = MongoClientOptions.builder();
opts.connectionsPerHost(1000);
MongoClient mc = new MongoClient("localhost", opts.build());
DB db = mc.getDB("test");
DBCollection coll = db.getCollection("updatetest");
coll.drop();
coll.save(new MongoEntry("a","1"));
for(int i=0; i<10; i++)
{
DBObject up = new BasicDBObject("item_" + i,"1");
up.markAsPartialObject();
coll.update(new MongoKey("a"), up);
}
DBObject o = coll.findOne(new MongoKey("a"));
System.out.println(o);
}*/
@Test
public void testSaveDirect()
throws java.io.IOException
{
MongoClientOptions.Builder opts = MongoClientOptions.builder();
opts.connectionsPerHost(100);
MongoClient mc = new MongoClient("localhost", opts.build());
DB db = mc.getDB("test");
DBCollection coll = db.getCollection("savedirect");
coll.drop();
long t1 = System.currentTimeMillis();
for(int i=0; i<10000; i++)
{
coll.save(new MongoEntry("a_" + i ,TestUtil.randomByteString()),WriteConcern.ACKNOWLEDGED);
}
long t2 = System.currentTimeMillis();
double sec = (t2 - t1) / 1000.0;
System.out.println("Items saved in: " + sec + "/s");
Assert.assertEquals(10000, coll.count());
}
@Test
public void testSaveBulk()
throws java.io.IOException
{
MongoClientOptions.Builder opts = MongoClientOptions.builder();
opts.connectionsPerHost(100);
MongoClient mc = new MongoClient("localhost", opts.build());
DB db = mc.getDB("test");
DBCollection coll = db.getCollection("savebulk");
coll.drop();
long t1 = System.currentTimeMillis();
BulkWriteOperation bulk = coll.initializeUnorderedBulkOperation();
for(int i=0; i<10000; i++)
{
bulk.insert(new MongoEntry("a_" + i ,TestUtil.randomByteString()));
}
bulk.execute(WriteConcern.ACKNOWLEDGED);
long t2 = System.currentTimeMillis();
double sec = (t2 - t1) / 1000.0;
System.out.println("Bulk items saved in: " + sec + "/s");
Assert.assertEquals(10000, coll.count());
}
public class TestObject implements java.io.Serializable
{
int a,b,c,d,e,f,g;
}
}