Package com.google.enterprise.connector.jcr

Source Code of com.google.enterprise.connector.jcr.JcrTraversalManagerTest

// Copyright (C) 2006-2009 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.enterprise.connector.jcr;

import com.google.enterprise.connector.mock.MockRepository;
import com.google.enterprise.connector.mock.MockRepositoryDocument;
import com.google.enterprise.connector.mock.MockRepositoryEventList;
import com.google.enterprise.connector.mock.jcr.MockJcrNode;
import com.google.enterprise.connector.mock.jcr.MockJcrQueryManager;
import com.google.enterprise.connector.spi.Document;
import com.google.enterprise.connector.spi.DocumentList;
import com.google.enterprise.connector.spi.RepositoryException;
import com.google.enterprise.connector.spi.SpiConstants;
import com.google.enterprise.connector.spi.TraversalManager;
import com.google.enterprise.connector.spi.Value;

import junit.framework.Assert;
import junit.framework.TestCase;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.Calendar;
import java.util.logging.Logger;

import javax.jcr.query.QueryManager;

public class JcrTraversalManagerTest extends TestCase {
  private static final Logger logger =
      Logger.getLogger(JcrTraversalManagerTest.class.getName());

  @Override
  public void tearDown() {
    // Reset the default time zone.
    Value.setFeedTimeZone("");
  }

  /**
   * Test generating checkpoints.
   *
   * @throws RepositoryException
   * @throws JSONException
   */
  public void testCheckpoint() throws RepositoryException, JSONException {
    // We're comparing date strings here, so we need a fixed time zone.
    Value.setFeedTimeZone("GMT");

    MockRepositoryEventList mrel =
        new MockRepositoryEventList("MockRepositoryEventLog1.txt");
    MockRepository r = new MockRepository(mrel);
    MockRepositoryDocument mockDoc = r.getStore().getDocByID("doc1");
    Document doc = new JcrDocument(new MockJcrNode(mockDoc));
    String checkpointString = JcrDocumentList.checkpoint(doc);
    logger.info(checkpointString);

    JSONObject jo = new JSONObject(checkpointString);

    String lastModified = jo.getString("lastModified");
    Assert.assertEquals("1970-01-01T00:00:10.000Z", lastModified);
    String uuid = jo.getString("uuid");
    Assert.assertEquals("doc1", uuid);
  }

  public void testExtractFromCheckpoint() throws JSONException {
    String checkpointString =
        "{\"uuid\":\"doc1\",\"lastModified\":\"1970-01-01T00:00:10.000Z\"}";
    JcrTraversalManager qtm =
        new JcrTraversalManager(null);

    JSONObject jo = new JSONObject(checkpointString);
    Calendar c = qtm.extractCalendarFromCheckpoint(jo, checkpointString);
    long millis = c.getTimeInMillis();
    Assert.assertEquals(millis, 10000);

    String id = qtm.extractDocidFromCheckpoint(jo, checkpointString);
    Assert.assertEquals(id, "doc1");
  }

  public void testResumeTraversal() throws RepositoryException {
    MockRepositoryEventList mrel =
        new MockRepositoryEventList("MockRepositoryEventLog1.txt");
    MockRepository r = new MockRepository(mrel);
    QueryManager qm = new MockJcrQueryManager(r.getStore());
    TraversalManager qtm = new JcrTraversalManager(qm);

    {
      MockRepositoryDocument mockDoc = r.getStore().getDocByID("doc2");
      Document doc = new JcrDocument(new MockJcrNode(mockDoc));
      String checkpointString = JcrDocumentList.checkpoint(doc);
      DocumentList documentList = qtm.resumeTraversal(checkpointString);
      int counter = countDocuments(documentList);
      Assert.assertEquals(2, counter);
    }

    {
      MockRepositoryDocument mockDoc = r.getStore().getDocByID("doc4");
      Document doc = new JcrDocument(new MockJcrNode(mockDoc));
      String checkpointString = JcrDocumentList.checkpoint(doc);
      DocumentList documentList = qtm.resumeTraversal(checkpointString);
      int counter = countDocuments(documentList);
      Assert.assertEquals(0, counter);
    }
  }

  public void testStartTraversal() throws RepositoryException {
    MockRepositoryEventList mrel =
        new MockRepositoryEventList("MockRepositoryEventLog1.txt");
    MockRepository r = new MockRepository(mrel);
    QueryManager qm = new MockJcrQueryManager(r.getStore());
    TraversalManager qtm = new JcrTraversalManager(qm);
    {
      DocumentList documentList = qtm.startTraversal();
      int counter = countDocuments(documentList);
      Assert.assertEquals(4, counter);
    }
  }

  private int countDocuments(DocumentList documentList)
      throws RepositoryException {
    int counter = 0;
    if (documentList != null) {
      Document document = null;
      while ((document = documentList.nextDocument()) != null) {
        logger.info(Value.getSingleValueString(document,
            SpiConstants.PROPNAME_DOCID));
        counter++;
      }
    }
    return counter;
  }
}
TOP

Related Classes of com.google.enterprise.connector.jcr.JcrTraversalManagerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.