storage-manager-trigger/src/test/java/org/gcube/contentmanager/storageserver/store/OplogTest.java

84 lines
2.6 KiB
Java

package org.gcube.contentmanager.storageserver.store;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bson.types.BSONTimestamp;
import org.junit.BeforeClass;
import org.junit.Test;
import com.mongodb.BasicDBObject;
import com.mongodb.Bytes;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ReadPreference;
import com.mongodb.ServerAddress;
public class OplogTest {
private static String[] server={"mongo1-d-d4s.d4science.org","mongo2-d-d4s.d4science.org","mongo3-d-d4s.d4science.org","mongo4-d-d4s.d4science.org"};
// private static MongoDB mongo;
private List<String> srvs;
protected static ReadPreference READ_PREFERENCE=ReadPreference.primary();
protected static final String DEFAULT_DB_NAME="local";
private MongoClient mongoClient;
DB local;
private DBCollection oplog;
// private String user="";
// private String password="";
// @BeforeClass
// public static void init(){
// initBackend();
// }
// @Test
public void initTest(){
initBackend();
DBCursor lastCursor = oplog.find().sort(new BasicDBObject("$natural", -1)).limit(1);
if (!lastCursor.hasNext()) {
System.out.println("no oplog!");
return;
}
DBObject last = lastCursor.next();
BSONTimestamp ts = (BSONTimestamp) last.get("ts");
DBCursor cursor = oplog.find(new BasicDBObject("ts", new BasicDBObject("$gt", ts)));
cursor.addOption(Bytes.QUERYOPTION_TAILABLE);
cursor.addOption(Bytes.QUERYOPTION_AWAITDATA);
if (cursor.hasNext()) {
DBObject x = cursor.next();
System.out.println("oplog current object: "+x);
}
}
private void initBackend() {
List<ServerAddress> srvList=new ArrayList<ServerAddress>();
for(String srv : server){
srvList.add(new ServerAddress(srv));
}
MongoClientOptions options=MongoClientOptions.builder().readPreference(READ_PREFERENCE).build();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
boolean auth =false;
MongoCredential credential = MongoCredential.createMongoCRCredential(user, "admin", password.toCharArray());
mongoClient = new MongoClient(srvList, Arrays.asList(credential), options);//"146.48.123.71"
local = mongoClient.getDB("local");
oplog = local.getCollection("oplog.rs");
}
}