Package org.apache.oodt.cas.catalog.system.impl

Source Code of org.apache.oodt.cas.catalog.system.impl.TestCatalogServiceLocal

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.oodt.cas.catalog.system.impl;

//JDK imports
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.Collections;
import java.util.List;
import java.util.Vector;

//OODT imports
import org.apache.commons.io.FileUtils;
import org.apache.oodt.cas.catalog.exception.CatalogServiceException;
import org.apache.oodt.cas.catalog.mapping.InMemoryIngestMapperFactory;
import org.apache.oodt.cas.catalog.metadata.TransactionalMetadata;
import org.apache.oodt.cas.catalog.page.Page;
import org.apache.oodt.cas.catalog.page.PageInfo;
import org.apache.oodt.cas.catalog.page.QueryPager;
import org.apache.oodt.cas.catalog.page.TransactionReceipt;
import org.apache.oodt.cas.catalog.query.QueryExpression;
import org.apache.oodt.cas.catalog.query.parser.ParseException;
import org.apache.oodt.cas.catalog.query.parser.QueryParser;
import org.apache.oodt.cas.catalog.query.parser.TokenMgrError;
import org.apache.oodt.cas.catalog.repository.MemoryBasedCatalogRepositoryFactory;
import org.apache.oodt.cas.catalog.struct.impl.index.DataSourceIndexFactory;
import org.apache.oodt.cas.catalog.struct.impl.index.InMemoryIndexFactory;
import org.apache.oodt.cas.catalog.struct.impl.transaction.UuidTransactionIdFactory;
import org.apache.oodt.cas.catalog.system.CatalogFactory;
import org.apache.oodt.cas.catalog.system.impl.CatalogServiceLocal;
import org.apache.oodt.cas.catalog.system.impl.CatalogServiceLocalFactory;
import org.apache.oodt.cas.metadata.Metadata;

//JUnit imports
import junit.framework.TestCase;

/**
*
* @author bfoster
* @version $Revision$
*
*/
public class TestCatalogServiceLocal extends TestCase {

  private CatalogServiceLocal cs;
  private File testDir;
 
  public void setUp() {
    try {
      File tempFile = File.createTempFile("foo", "bar");
      tempFile.deleteOnExit();
      testDir = new File(tempFile.getParentFile(), "cas-catalog");
 
      CatalogServiceLocalFactory factory = new CatalogServiceLocalFactory();
      factory
          .setCatalogRepositoryFactory(new MemoryBasedCatalogRepositoryFactory());
      factory.setIngestMapperFactory(this
          .getOracleIngestMapperFactory(testDir.getAbsolutePath() + "/mapper"));
      factory.setOneCatalogFailsAllFail(true);
      factory.setSimplifyQueries(true);
      factory.setPluginStorageDir("/dev/null");
      factory.setRestrictIngestPermissions(false);
      factory.setRestrictQueryPermissions(false);
      factory.setTransactionIdFactory(UuidTransactionIdFactory.class
          .getCanonicalName());
      cs = factory.createCatalogService();
 
      CatalogFactory catalogFactory = new CatalogFactory();
      catalogFactory.setCatalogId("TestCatalog1");
      catalogFactory.setDictionaryFactories(null);
      catalogFactory
          .setIndexFactory(getInMemoryDSFactory(testDir.getAbsolutePath() + "/index/1/"));
      catalogFactory.setRestrictIngestPermissions(false);
      catalogFactory.setRestrictQueryPermissions(false);
      cs.addCatalog(catalogFactory.createCatalog());
      catalogFactory.setCatalogId("TestCatalog2");
      catalogFactory
          .setIndexFactory(getInMemoryDSFactory(testDir.getAbsolutePath() + "/index/2/"));
      cs.addCatalog(catalogFactory.createCatalog());
    }catch (Exception e) {
      e.printStackTrace();
      TestCase.fail(e.getMessage());
    }
  }
 
  public void tearDown() {
    try {
      FileUtils.forceDelete(this.testDir);
    } catch (IOException e) {
      e.printStackTrace();
      TestCase.fail(e.getMessage());
    }
  }

  public void testDataSourceCatalogIngestQueryAndDelete()
      throws CatalogServiceException, ParseException, TokenMgrError {
    // test ingest
    Metadata m = new Metadata();
    m.addMetadata("testkey1", "testval1");
    TransactionReceipt tr = cs.ingest(m);
    Vector<TransactionReceipt> receipts = new Vector<TransactionReceipt>();
    receipts.add(tr);
    List<TransactionalMetadata> metadatas = cs.getMetadata(receipts);
    assertEquals(metadatas.size(), 1);
    Metadata ingestedMetadata = metadatas.get(0).getMetadata();
    assertEquals(ingestedMetadata.getMetadata("testkey1"), "testval1");
    assertEquals(ingestedMetadata.getAllMetadata("testkey1").size(), 2);

    // test ingest update
    m.replaceMetadata(
        CatalogServiceLocal.CATALOG_SERVICE_TRANSACTION_ID_MET_KEY
            .toString(), tr.getTransactionId().toString());
    m.replaceMetadata(CatalogServiceLocal.ENABLE_UPDATE_MET_KEY, "true");
    tr = cs.ingest(m);
    receipts = new Vector<TransactionReceipt>();
    receipts.add(tr);
    metadatas = cs.getMetadata(receipts);
    assertEquals(metadatas.size(), 1);
    ingestedMetadata = metadatas.get(0).getMetadata();
    assertEquals(ingestedMetadata.getMetadata("testkey1"), "testval1");
    assertEquals(ingestedMetadata.getAllMetadata("testkey1").size(), 2);

    // test query using querypager
    QueryExpression qe = QueryParser
        .parseQueryExpression("testkey1 == 'testval1'");
    QueryPager pager = cs.query(qe);
    metadatas = cs.getNextPage(pager);
    assertEquals(metadatas.size(), 1);
    ingestedMetadata = metadatas.get(0).getMetadata();
    assertEquals(ingestedMetadata.getMetadata("testkey1"), "testval1");
    assertEquals(ingestedMetadata.getAllMetadata("testkey1").size(), 2);

    // test query using std paging
    qe = QueryParser.parseQueryExpression("testkey1 == 'testval1'");
    Page page = cs.getPage(new PageInfo(20, PageInfo.FIRST_PAGE), qe);
    metadatas = cs.getMetadata(page);
    assertEquals(metadatas.size(), 1);
    ingestedMetadata = metadatas.get(0).getMetadata();
    assertEquals(ingestedMetadata.getMetadata("testkey1"), "testval1");
    assertEquals(ingestedMetadata.getAllMetadata("testkey1").size(), 2);

    // test query using std paging with catalog restriction
    qe = QueryParser.parseQueryExpression("testkey1 == 'testval1'");
    page = cs.getPage(new PageInfo(20, PageInfo.FIRST_PAGE), qe,
        Collections.singleton("TestCatalog1"));
    metadatas = cs.getMetadata(page);
    assertEquals(metadatas.size(), 1);
    ingestedMetadata = metadatas.get(0).getMetadata();
    assertEquals(ingestedMetadata.getMetadata("testkey1"), "testval1");
    assertEquals(ingestedMetadata.getAllMetadata("testkey1").size(), 1);

    // test delete
    m = new Metadata();
    m.addMetadata(
        CatalogServiceLocal.CATALOG_SERVICE_TRANSACTION_ID_MET_KEY
            .toString(), tr.getTransactionId().toString());
    cs.delete(m);
    assertEquals(cs.getMetadata(Collections.singletonList(tr)).size(), 0);
  }

  private InMemoryIngestMapperFactory getOracleIngestMapperFactory(
      String tmpDirPath) throws SQLException, IOException {
    String user = "sa";
    String pass = "";
    String driver = "org.hsqldb.jdbcDriver";
    String url = "jdbc:hsqldb:file:" + tmpDirPath + ";shutdown=true";

    InMemoryIngestMapperFactory factory = new InMemoryIngestMapperFactory();
    factory.setDriver(driver);
    factory.setJdbcUrl(url);
    factory.setPass(pass);
    factory.setUser(user);
    factory.setTablesFile("./src/testdata/test-mapper-cat.sql");
    return factory;
  }

  private DataSourceIndexFactory getInMemoryDSFactory(String tmpDirPath)
      throws IOException, SQLException {
    String user = "sa";
    String pass = "";
    String driver = "org.hsqldb.jdbcDriver";
    String url = "jdbc:hsqldb:file:" + tmpDirPath + ";shutdown=true";

    InMemoryIndexFactory indexFactory = new InMemoryIndexFactory();
    indexFactory.setDriver(driver);
    indexFactory.setJdbcUrl(url);
    indexFactory.setPass(pass);
    indexFactory.setUser(user);
    indexFactory.setTablesFile("./src/testdata/test-index-cat.sql");
    return indexFactory;
  }

}
TOP

Related Classes of org.apache.oodt.cas.catalog.system.impl.TestCatalogServiceLocal

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.