示例#1
0
  @Test
  public void testRequireAction() throws JsonException {
    LocalQuery q = new LocalQuery();
    q.requireAction(Action.UPDATE);
    List<DatabaseDocument<MongoType>> ds =
        mdc.getDocumentReader().getDocuments(new MongoQuery(q.toJson()), 3);
    if (ds.size() != 0) {
      fail("Got documents for UPDATE, shouldn't have.");
    }

    q = new LocalQuery();
    q.requireAction(Action.ADD);
    ds = mdc.getDocumentReader().getDocuments(new MongoQuery(q.toJson()), 3);
    if (ds.size() != 1) {
      fail("Should have gotten a document back for ADD...");
    }

    if (ds.get(0).getAction() != Action.ADD
        || !ds.get(0).getContentField("name").equals(test.getContentField("name"))) {
      fail("Didn't get the correct document for ADD...");
    }

    q = new LocalQuery();
    q.requireAction(Action.DELETE);
    ds = mdc.getDocumentReader().getDocuments(new MongoQuery(q.toJson()), 3);
    if (ds.size() != 1) {
      fail("Should have gotten a document back for DELETE...");
    }
  }
示例#2
0
  private void createAndConnect() throws Exception {
    mdc =
        Guice.createInjector(new TestModule("junit-TaggingModelTest"))
            .getInstance(MongoConnector.class);

    mdc.waitForWrites(true);

    mdc.connect();
  }
示例#3
0
 @Test
 public void testRequireID() {
   Document d = mdc.getDocumentReader().getDocument(new MongoQuery());
   MongoQuery mdq = new MongoQuery();
   mdq.requireID(d.getID());
   if (null == mdc.getDocumentReader().getDocument(mdq)) {
     fail("Did not find a document with expected ID");
   }
   if (!mdc.getDocumentReader().getDocument(mdq).isEqual(d)) {
     fail("Found wrong document! " + d.getID());
   }
 }
示例#4
0
 @Test
 public void testMongoDatabaseQuery() throws JsonException {
   LocalQuery lq = new LocalQuery();
   lq.requireTouchedByStage("test");
   lq.requireNotTouchedByStage("test2");
   lq.requireContentFieldExists("exists");
   MongoQuery q = new MongoQuery(lq.toJson());
   Document d = mdc.getDocumentReader().getDocument(q);
   if (d != null) {
     fail("Expected no document to be returned");
   }
   lq = new LocalQuery();
   if (mdc.getDocumentReader().getDocument(new MongoQuery(lq.toJson())) == null) {
     fail("Expected to find a document");
   }
 }
示例#5
0
 @Test
 public void testRequireContentFieldNotExists() throws JsonException {
   LocalQuery q = new LocalQuery();
   q.requireContentFieldNotExists("number");
   List<DatabaseDocument<MongoType>> ds =
       mdc.getDocumentReader().getDocuments(new MongoQuery(q.toJson()), 3);
   if (ds.size() != 2) {
     fail("Received incorrect number of documents..");
   }
   q = new LocalQuery();
   q.requireContentFieldNotExists("name");
   ds = mdc.getDocumentReader().getDocuments(new MongoQuery(q.toJson()), 3);
   if (ds.size() != 1) {
     fail("Received incorrect number of documents..");
   }
 }
示例#6
0
 public long insertCurrentDocuments(int count) throws Exception {
   long start = System.currentTimeMillis();
   for (int i = 0; i < count; i++) {
     MongoDocument d = new MongoDocument();
     d.putContentField(getRandomString(5), getRandomString(20));
     mdc.getDocumentWriter().insert(d);
   }
   return System.currentTimeMillis() - start;
 }
示例#7
0
  @Test
  public void testRequireNotTouchedByStage() throws JsonException {
    LocalQuery q = new LocalQuery();
    q.requireNotTouchedByStage("xyz");
    List<DatabaseDocument<MongoType>> ds =
        mdc.getDocumentReader().getDocuments(new MongoQuery(q.toJson()), 3);
    if (ds.size() != 3) {
      fail("Received incorrect number of documents..");
    }

    Document d = mdc.getDocumentWriter().getAndTag(new MongoQuery(), "xyz");
    if (d == null) {
      fail("Should have gotten a document back...");
    }
    mdc.getDocumentWriter().markTouched(d.getID(), "xyz");

    ds = mdc.getDocumentReader().getDocuments(new MongoQuery(q.toJson()), 3);
    if (ds.size() != 2) {
      fail("Received incorrect number of documents..");
    }
  }
示例#8
0
  @Before
  public void setUp() throws Exception {
    mdc =
        new MongoConnector(
            DatabaseConfigurationFactory.getDatabaseConfiguration("junit-QueryTest"));
    mdc.waitForWrites(true);

    test = new MongoDocument();
    test.setAction(Action.ADD);
    test.putContentField("name", "test");
    test.putMetadataField("date", new Date());

    test2 = new MongoDocument();
    test2.setAction(Action.DELETE);
    test2.putContentField("name", "test");
    test2.putContentField("number", 2);
    test2.putMetadataField("date", new Date());

    random = new MongoDocument();

    try {
      mdc.connect();
    } catch (IOException e) {
      fail("IOException when establishing connection");
    }

    DatabaseDocument<MongoType> d;
    while ((d = mdc.getDocumentReader().getDocument(new MongoQuery())) != null) {
      mdc.getDocumentWriter().delete(d);
    }

    mdc.getDocumentWriter().insert(test);
    mdc.getDocumentWriter().insert(test2);
    mdc.getDocumentWriter().insert(random);
  }
示例#9
0
 public long getCurrent(int count, String tag) {
   long start = System.currentTimeMillis();
   System.out.println("Getting " + count + " documents for '" + tag + "'");
   MongoQuery mq = new MongoQuery();
   MongoDocumentIO reader = mdc.getDocumentReader();
   for (int i = 0; i < count; i++) {
     if (i % (count / 10) == 0) {
       System.out.print('.');
     }
     reader.getAndTag(mq, tag);
   }
   System.out.println();
   return System.currentTimeMillis() - start;
 }
示例#10
0
  @Test
  public void testFromJSON() throws JsonException {
    LocalQuery q = new LocalQuery();
    MongoQuery mdq = new MongoQuery();
    mdq.fromJson(q.toJson());
    if (mdq.toDBObject().keySet().size() != 0) {
      fail("Expected query to be empty");
    }

    q.requireContentFieldExists("name");
    mdq.fromJson(q.toJson());
    if (mdq.toDBObject().keySet().size() != 1) {
      fail("Expected query to have one value");
    }
    List<DatabaseDocument<MongoType>> list = mdc.getDocumentReader().getDocuments(mdq, 142);
    if (list.size() != 2) {
      fail("Expected to find two documents");
    }
    for (Document d : list) {
      if (!d.hasContentField("name")) {
        fail("Fetched document is missing content field name");
      }
    }
  }
示例#11
0
 @After
 public void reset() throws Exception {
   mdc.getDB().dropDatabase();
   createAndConnect();
 }