You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@rya.apache.org by mi...@apache.org on 2015/12/23 16:11:12 UTC

[2/3] incubator-rya git commit: RYA-17, RYA-19, RYA-20 issue with mongo deletes, typo in constructor, redundant indices

RYA-17, RYA-19, RYA-20 issue with mongo deletes, typo in constructor, redundant indices


Project: http://git-wip-us.apache.org/repos/asf/incubator-rya/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-rya/commit/1007611e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-rya/tree/1007611e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-rya/diff/1007611e

Branch: refs/heads/develop
Commit: 1007611ee5955ff1371f50dbe9c646f6452f290e
Parents: 1eae901
Author: pujav65 <pu...@gmail.com>
Authored: Wed Dec 16 23:23:25 2015 -0500
Committer: Aaron Mihalik <mi...@alum.mit.edu>
Committed: Tue Dec 22 11:48:32 2015 -0500

----------------------------------------------------------------------
 dao/mongodb.rya/pom.xml                         |   5 +
 .../java/mvm/rya/mongodb/MongoDBRyaDAO.java     |  44 ++++++-
 .../dao/SimpleMongoDBStorageStrategy.java       |   9 +-
 .../java/mvm/rya/mongodb/MongoDBRyaDAOTest.java | 121 +++++++++++++++++++
 4 files changed, 167 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/1007611e/dao/mongodb.rya/pom.xml
----------------------------------------------------------------------
diff --git a/dao/mongodb.rya/pom.xml b/dao/mongodb.rya/pom.xml
index 0d87fa5..b7d0c0e 100644
--- a/dao/mongodb.rya/pom.xml
+++ b/dao/mongodb.rya/pom.xml
@@ -43,6 +43,11 @@ under the License.
             <groupId>de.flapdoodle.embed</groupId>
             <artifactId>de.flapdoodle.embed.mongo</artifactId>
         </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/1007611e/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/MongoDBRyaDAO.java
----------------------------------------------------------------------
diff --git a/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/MongoDBRyaDAO.java b/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/MongoDBRyaDAO.java
index 1f341dc..b9124e3 100644
--- a/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/MongoDBRyaDAO.java
+++ b/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/MongoDBRyaDAO.java
@@ -69,18 +69,39 @@ public class MongoDBRyaDAO implements RyaDAO<MongoDBRdfConfiguration>{
 	
 	public MongoDBRyaDAO(MongoDBRdfConfiguration conf) throws RyaDAOException{
 		this.conf = conf;
+		initConnection();
+		init();
+	}
+
+	
+	public MongoDBRyaDAO(MongoDBRdfConfiguration conf, MongoClient mongoClient) throws RyaDAOException{
+		this.conf = conf;
+		this.mongoClient = mongoClient;
 		init();
 	}
 
 	public void setConf(MongoDBRdfConfiguration conf) {
 		this.conf = conf;
 	}
+	
+	public void setMongoClient(MongoClient mongoClient) {
+		this.mongoClient = mongoClient;
+	}
+
+	public void setDB(DB db) {
+		this.db = db;
+	}
+
+	
+	public void setDBCollection(DBCollection coll) {
+		this.coll = coll;
+	}
 
     public MongoDBRdfConfiguration getConf() {
         return conf;
     }
 
-    public void init() throws RyaDAOException {
+    public void initConnection() throws RyaDAOException {
         try {
             boolean useMongoTest = conf.getUseTestMongo();
             if (useMongoTest) {
@@ -94,13 +115,26 @@ public class MongoDBRyaDAO implements RyaDAO<MongoDBRdfConfiguration>{
                 if (conf.get(MongoDBRdfConfiguration.MONGO_USER) != null) {
                     MongoCredential cred = MongoCredential.createCredential(
                             conf.get(MongoDBRdfConfiguration.MONGO_USER),
-                            conf.get(MongoDBRdfConfiguration.MONGO_USER_PASSWORD),
-                            conf.get(MongoDBRdfConfiguration.MONGO_DB_NAME).toCharArray());
+                            conf.get(MongoDBRdfConfiguration.MONGO_DB_NAME),
+                            conf.get(MongoDBRdfConfiguration.MONGO_USER_PASSWORD).toCharArray());
                     mongoClient = new MongoClient(server, Arrays.asList(cred));
                 } else {
                     mongoClient = new MongoClient(server);
                 }
             }
+        } catch (UnknownHostException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (IOException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+
+    }
+
+    
+    public void init() throws RyaDAOException {
+        try {
             secondaryIndexers = conf.getAdditionalIndexers();
             for(RyaSecondaryIndexer index: secondaryIndexers) {
                 index.setConf(conf);
@@ -179,7 +213,7 @@ public class MongoDBRyaDAO implements RyaDAO<MongoDBRdfConfiguration>{
 
 	public void delete(RyaStatement statement, MongoDBRdfConfiguration conf)
 			throws RyaDAOException {
-		DBObject obj = storageStrategy.serialize(statement);
+		DBObject obj = storageStrategy.getQuery(statement);
 		coll.remove(obj);
 	}
 
@@ -192,7 +226,7 @@ public class MongoDBRyaDAO implements RyaDAO<MongoDBRdfConfiguration>{
 			MongoDBRdfConfiguration conf) throws RyaDAOException {
 		while (statements.hasNext()){
 			RyaStatement ryaStatement = statements.next();
-			coll.remove(storageStrategy.serialize(ryaStatement));
+			coll.remove(storageStrategy.getQuery(ryaStatement));
 		}
 		
 	}

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/1007611e/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
----------------------------------------------------------------------
diff --git a/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java b/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
index 24d16c1..3ecc0dc 100644
--- a/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
+++ b/dao/mongodb.rya/src/main/java/mvm/rya/mongodb/dao/SimpleMongoDBStorageStrategy.java
@@ -52,17 +52,12 @@ public class SimpleMongoDBStorageStrategy implements MongoDBStorageStrategy {
 	
 	@Override
 	public void createIndices(DBCollection coll){
-		coll.createIndex("subject");
-		coll.createIndex("predicate");
 		BasicDBObject doc = new BasicDBObject();
 	    doc.put(SUBJECT, 1);
 	    doc.put(PREDICATE, 1);
 		coll.createIndex(doc);
-		doc = new BasicDBObject(OBJECT, 1);
-		doc.put(OBJECT_TYPE, 1);
-		doc.put(PREDICATE, 1);
-		coll.createIndex(doc);
-		doc = new BasicDBObject(OBJECT, 1);
+		doc = new BasicDBObject(PREDICATE, 1);
+		doc.put(OBJECT, 1);
 		doc.put(OBJECT_TYPE, 1);
 		coll.createIndex(doc);
 		doc = new BasicDBObject(OBJECT, 1);

http://git-wip-us.apache.org/repos/asf/incubator-rya/blob/1007611e/dao/mongodb.rya/src/test/java/mvm/rya/mongodb/MongoDBRyaDAOTest.java
----------------------------------------------------------------------
diff --git a/dao/mongodb.rya/src/test/java/mvm/rya/mongodb/MongoDBRyaDAOTest.java b/dao/mongodb.rya/src/test/java/mvm/rya/mongodb/MongoDBRyaDAOTest.java
new file mode 100644
index 0000000..3d900b0
--- /dev/null
+++ b/dao/mongodb.rya/src/test/java/mvm/rya/mongodb/MongoDBRyaDAOTest.java
@@ -0,0 +1,121 @@
+package mvm.rya.mongodb;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import mvm.rya.api.RdfCloudTripleStoreConfiguration;
+import mvm.rya.api.domain.RyaStatement;
+import mvm.rya.api.domain.RyaStatement.RyaStatementBuilder;
+import mvm.rya.api.domain.RyaURI;
+import mvm.rya.api.persist.RyaDAOException;
+
+import org.apache.hadoop.conf.Configuration;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.mongodb.DB;
+import com.mongodb.DBCollection;
+import com.mongodb.MongoClient;
+import com.mongodb.MongoException;
+
+import de.flapdoodle.embed.mongo.distribution.Version;
+import de.flapdoodle.embed.mongo.tests.MongodForTestsFactory;
+
+public class MongoDBRyaDAOTest {
+	
+	private MongodForTestsFactory testsFactory;
+	private MongoDBRyaDAO dao;
+	private MongoDBRdfConfiguration configuration;
+	private MongoClient mongoClient;
+	
+	@Before
+	public void setUp() throws IOException, RyaDAOException{
+		testsFactory = MongodForTestsFactory.with(Version.Main.PRODUCTION);
+	       Configuration conf = new Configuration();
+	        conf.set(MongoDBRdfConfiguration.USE_TEST_MONGO, "true");
+	        conf.set(MongoDBRdfConfiguration.MONGO_DB_NAME, "test");
+	        conf.set(MongoDBRdfConfiguration.MONGO_COLLECTION_PREFIX, "rya_");
+	        conf.set(RdfCloudTripleStoreConfiguration.CONF_TBL_PREFIX, "rya_");
+	        configuration = new MongoDBRdfConfiguration(conf);
+			mongoClient = testsFactory.newMongo();
+            int port = mongoClient.getServerAddressList().get(0).getPort();
+            configuration.set(MongoDBRdfConfiguration.MONGO_INSTANCE_PORT, Integer.toString(port));
+			dao = new MongoDBRyaDAO(configuration, mongoClient);
+		
+	}
+
+	@Test
+	public void testDeleteWildcard() throws RyaDAOException {
+		RyaStatementBuilder builder = new RyaStatementBuilder();
+		builder.setPredicate(new RyaURI("http://temp.com"));
+		dao.delete(builder.build(), configuration);
+	}
+	
+	
+	@Test
+	public void testAdd() throws RyaDAOException, MongoException, IOException {
+		RyaStatementBuilder builder = new RyaStatementBuilder();
+		builder.setPredicate(new RyaURI("http://temp.com"));
+		builder.setSubject(new RyaURI("http://subject.com"));
+		builder.setObject(new RyaURI("http://object.com"));
+		
+		DB db = mongoClient.getDB(configuration.get(MongoDBRdfConfiguration.MONGO_DB_NAME));
+        DBCollection coll = db.getCollection(configuration.getTriplesCollectionName());
+          
+		dao.add(builder.build());
+
+        assertEquals(coll.count(),1);
+		
+	}
+	
+	@Test
+	public void testDelete() throws RyaDAOException, MongoException, IOException {
+		RyaStatementBuilder builder = new RyaStatementBuilder();
+		builder.setPredicate(new RyaURI("http://temp.com"));
+		builder.setSubject(new RyaURI("http://subject.com"));
+		builder.setObject(new RyaURI("http://object.com"));
+		RyaStatement statement = builder.build();
+		
+		DB db = mongoClient.getDB(configuration.get(MongoDBRdfConfiguration.MONGO_DB_NAME));
+        DBCollection coll = db.getCollection(configuration.getTriplesCollectionName());
+          
+		dao.add(statement);
+
+        assertEquals(coll.count(),1);
+		
+        dao.delete(statement, configuration);
+        
+        assertEquals(coll.count(),0);
+
+	}
+
+	@Test
+	public void testDeleteWildcardSubjectWithContext() throws RyaDAOException, MongoException, IOException {
+		RyaStatementBuilder builder = new RyaStatementBuilder();
+		builder.setPredicate(new RyaURI("http://temp.com"));
+		builder.setSubject(new RyaURI("http://subject.com"));
+		builder.setObject(new RyaURI("http://object.com"));
+		builder.setContext(new RyaURI("http://context.com"));
+		RyaStatement statement = builder.build();
+		
+		DB db = mongoClient.getDB(configuration.get(MongoDBRdfConfiguration.MONGO_DB_NAME));
+        DBCollection coll = db.getCollection(configuration.getTriplesCollectionName());
+          
+		dao.add(statement);
+
+        assertEquals(coll.count(),1);
+        
+		RyaStatementBuilder builder2 = new RyaStatementBuilder();
+		builder2.setPredicate(new RyaURI("http://temp.com"));
+		builder2.setObject(new RyaURI("http://object.com"));
+		builder2.setContext(new RyaURI("http://context3.com"));
+		RyaStatement query = builder2.build();
+		
+        dao.delete(query, configuration);
+        
+        assertEquals(coll.count(),1);
+
+	}
+
+}