import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Timer; import java.util.TimerTask; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.mongodb.MongoOptions; import com.mongodb.ServerAddress; import com.mongodb.WriteConcern; public class MongoTester { private static Mongo mongoDB=null; public static void main(String[] args) throws Exception { MongoOptions options = new MongoOptions(); options.threadsAllowedToBlockForConnectionMultiplier = 10; options.connectionsPerHost = 10; options.slaveOk = true; options.autoConnectRetry = true; options.socketKeepAlive = true; mongoDB = new Mongo(new ServerAddress( "localhost", 27017), options); Timer timer = new Timer(); Calendar cal = Calendar.getInstance(); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); cal.add(Calendar.MINUTE, 1); cal.add(Calendar.SECOND, -1); Date deleter = cal.getTime(); cal.add(Calendar.SECOND, 1); cal.add(Calendar.MILLISECOND, 10); Date update = cal.getTime(); cal.add(Calendar.MILLISECOND, 3); Date insert = cal.getTime(); timer.schedule(new TimerTask() { @Override public void run() { try { DBObject removeID = new BasicDBObject().append("_id", new BasicDBObject().append("$lt", 15)); System.out.println("before delete-"+System.currentTimeMillis()); mongoDB.getDB("storage").getCollection("object").remove(removeID, WriteConcern.SAFE); System.out.println("after delete-"+System.currentTimeMillis()); } catch(Exception e) { e.printStackTrace(); } } }, deleter, 30000); timer.schedule(new TimerTask() { @Override public void run() { try { Map map = new HashMap(); map.put("update1", "update_value1"); map.put("update2", "update_value2"); DBObject doc = new BasicDBObject(map); DBObject docID = new BasicDBObject().append("_id", 5); DBObject inDB = mongoDB.getDB("storage").getCollection("object").findOne(docID); if(inDB == null) { System.out.println("before update(doesn't exist):"+System.currentTimeMillis()); } else { System.out.println("before update(already exist):"+System.currentTimeMillis()); } mongoDB.getDB("storage").getCollection("object").update(docID, new BasicDBObject("$set", doc), true, false, WriteConcern.SAFE); System.out.println("update-"+System.currentTimeMillis()); } catch(Exception e) { e.printStackTrace(); } } }, update, 30000); timer.schedule(new TimerTask() { @Override public void run() { try { List docs = new ArrayList(); for(int i=1; i<15;i++) { Map map = new HashMap(); map.put("insert1", "insert_value1"); map.put("insert2", "insert_value2"); DBObject doc = new BasicDBObject(map).append("_id", i); docs.add(doc); } System.out.println("before insert-"+System.currentTimeMillis()); mongoDB.getDB("storage").getCollection("object").insert(docs, WriteConcern.SAFE); System.out.println("insert sucess-"+System.currentTimeMillis()); DBObject doc = mongoDB.getDB("storage").getCollection("object").findOne(5); if(doc== null) { System.out.println("DIDN'T INSERT ANYTHING!!!"); System.exit(0); } if(!doc.containsField("insert1")) { System.out.println("OUR PROPERTIES ARE NOT THERE!!!"); System.exit(0); } } catch(MongoException.DuplicateKey e) { System.out.println("insert failed due to duplicate!!!"); } catch(Exception e) { e.printStackTrace(); } } }, insert, 30000); } }