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);
+
+ }
+
+}