OODT-889 update file manager tests
Project: http://git-wip-us.apache.org/repos/asf/oodt/repo Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/d757222b Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/d757222b Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/d757222b Branch: refs/heads/master Commit: d757222b8847e839fb3326bec6cd08e96cea0fad Parents: 4286c92 Author: Tom Barber <[email protected]> Authored: Tue Oct 13 15:01:32 2015 +0100 Committer: Tom Barber <[email protected]> Committed: Tue Oct 13 15:01:32 2015 +0100 ---------------------------------------------------------------------- .../catalog/query/FreeTextQueryExpression.java | 4 +- .../cas/catalog/query/QueryLogicalGroup.java | 4 +- .../oodt/cas/filemgr/catalog/LuceneCatalog.java | 53 +- .../oodt/cas/filemgr/catalog/TestAppender.java | 29 ++ .../filemgr/catalog/TestDataSourceCatalog.java | 159 ++++-- .../cas/filemgr/catalog/TestLuceneCatalog.java | 520 ++++++++++++++++++- .../catalog/TestMappedDataSourceCatalog.java | 1 - .../catalog/TestOrderedDataSourceCatalog.java | 7 +- 8 files changed, 675 insertions(+), 102 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java ---------------------------------------------------------------------- diff --git a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java index 12af21c..c5268a9 100644 --- a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java +++ b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/FreeTextQueryExpression.java @@ -82,9 +82,9 @@ public class FreeTextQueryExpression extends TermQueryExpression { */ public String toString() { StringBuilder serial = new StringBuilder(); - serial.append("({" + this.bucketNames + "} " + this.term.getName() + " :|"); + serial.append("({").append(this.bucketNames).append("} ").append(this.term.getName()).append(" :|"); for (String value : this.term.getValues()) { - serial.append("+" + value); + serial.append("+").append(value); serial.append("|: )"); } return serial.toString(); http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java ---------------------------------------------------------------------- diff --git a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java index c6b764b..df16b6b 100644 --- a/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java +++ b/catalog/src/main/java/org/apache/oodt/cas/catalog/query/QueryLogicalGroup.java @@ -97,9 +97,9 @@ public class QueryLogicalGroup extends QueryExpression { @Override public String toString() { StringBuilder query = new StringBuilder(); - query.append("({" + this.bucketNames + "} " + this.operator + " : "); + query.append("({").append(this.bucketNames).append("} ").append(this.operator).append(" : "); for (QueryExpression queryExpression : this.queryExpressions) { - query.append(queryExpression.toString() + ","); + query.append(queryExpression.toString()).append(","); } return query.substring(0, query.length() - 1) + ")"; } http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java ---------------------------------------------------------------------- diff --git a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java index 5e375c4..98e0eb5 100644 --- a/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java +++ b/filemgr/src/main/java/org/apache/oodt/cas/filemgr/catalog/LuceneCatalog.java @@ -18,55 +18,33 @@ package org.apache.oodt.cas.filemgr.catalog; //JDK imports -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Vector; -import java.util.logging.Level; -import java.util.logging.Logger; - -//Lucene imports import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.Term; -import org.apache.lucene.search.BooleanClause; -import org.apache.lucene.search.BooleanQuery; -import org.apache.lucene.search.Hits; -import org.apache.lucene.search.IndexSearcher; -import org.apache.lucene.search.RangeQuery; -import org.apache.lucene.search.Sort; -import org.apache.lucene.search.SortField; -import org.apache.lucene.search.TermQuery; -import org.apache.lucene.search.WildcardQuery; - -//OODT imports -import org.apache.oodt.cas.filemgr.structs.BooleanQueryCriteria; -import org.apache.oodt.cas.filemgr.structs.Element; -import org.apache.oodt.cas.filemgr.structs.Product; -import org.apache.oodt.cas.filemgr.structs.ProductPage; -import org.apache.oodt.cas.filemgr.structs.ProductType; +import org.apache.lucene.search.*; +import org.apache.oodt.cas.filemgr.structs.*; import org.apache.oodt.cas.filemgr.structs.Query; -import org.apache.oodt.cas.filemgr.structs.QueryCriteria; -import org.apache.oodt.cas.filemgr.structs.RangeQueryCriteria; -import org.apache.oodt.cas.filemgr.structs.Reference; -import org.apache.oodt.cas.filemgr.structs.TermQueryCriteria; import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException; import org.apache.oodt.cas.filemgr.structs.exceptions.ValidationLayerException; import org.apache.oodt.cas.filemgr.validation.ValidationLayer; import org.apache.oodt.cas.metadata.Metadata; import org.apache.oodt.commons.pagination.PaginationUtils; - -//JUG imports import org.safehaus.uuid.UUID; import org.safehaus.uuid.UUIDGenerator; +import java.io.File; +import java.io.IOException; +import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; + +//Lucene imports +//OODT imports +//JUG imports + /** * @author mattmann * @author bfoster @@ -846,6 +824,9 @@ public class LuceneCatalog implements Catalog { * org.apache.oodt.cas.filemgr.structs.ProductPage) */ public ProductPage getNextPage(ProductType type, ProductPage currentPage) { + if(type==null){ + return null; + } if (currentPage == null) { return getFirstPage(type); } @@ -886,6 +867,10 @@ public class LuceneCatalog implements Catalog { * org.apache.oodt.cas.filemgr.structs.ProductPage) */ public ProductPage getPrevPage(ProductType type, ProductPage currentPage) { + if(type==null){ + return null; + } + if (currentPage == null) { return getFirstPage(type); } http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestAppender.java ---------------------------------------------------------------------- diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestAppender.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestAppender.java new file mode 100644 index 0000000..5680428 --- /dev/null +++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestAppender.java @@ -0,0 +1,29 @@ +package org.apache.oodt.cas.filemgr.catalog; + +import org.apache.log4j.AppenderSkeleton; +import org.apache.log4j.spi.LoggingEvent; + +import java.util.ArrayList; +import java.util.List; + +class TestAppender extends AppenderSkeleton { + private final List<LoggingEvent> log = new ArrayList<LoggingEvent>(); + + @Override + public boolean requiresLayout() { + return false; + } + + @Override + protected void append(final LoggingEvent loggingEvent) { + log.add(loggingEvent); + } + + @Override + public void close() { + } + + public List<LoggingEvent> getLog() { + return new ArrayList<LoggingEvent>(log); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java ---------------------------------------------------------------------- diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java index eb3ef32..a108853 100644 --- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java +++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestDataSourceCatalog.java @@ -19,28 +19,28 @@ package org.apache.oodt.cas.filemgr.catalog; //JDK imports +import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys; +import org.apache.oodt.cas.filemgr.structs.*; +import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException; +import org.apache.oodt.cas.filemgr.util.SqlParser; +import org.apache.oodt.cas.metadata.Metadata; +import org.apache.oodt.commons.database.DatabaseConnectionBuilder; +import org.apache.oodt.commons.database.SqlScript; + import java.io.File; import java.io.FileInputStream; import java.net.URL; +import java.util.ArrayList; import java.util.List; import java.util.Properties; -import javax.sql.DataSource; -//OODT imports -import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys; -import org.apache.oodt.cas.filemgr.structs.Product; -import org.apache.oodt.cas.filemgr.structs.ProductPage; -import org.apache.oodt.cas.filemgr.structs.ProductType; -import org.apache.oodt.cas.filemgr.structs.Query; -import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException; -import org.apache.oodt.commons.database.DatabaseConnectionBuilder; -import org.apache.oodt.commons.database.SqlScript; -import org.apache.oodt.cas.filemgr.util.SqlParser; -import org.apache.oodt.cas.metadata.Metadata; +import javax.sql.DataSource; -//Junit imports import junit.framework.TestCase; +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.junit.Assert.assertThat; + /** * @author mattmann * @version $Revision$ @@ -71,7 +71,7 @@ public class TestDataSourceCatalog extends TestCase { properties.setProperty("java.util.logging.config.file", new File( loggingPropertiesUrl.getFile()).getAbsolutePath()); - if(properties.getProperty("overrideProperties") == null){ + if(properties.getProperty("overrideProperties") == null) { try { URL filemgrPropertiesUrl = this.getClass().getResource( @@ -83,42 +83,45 @@ public class TestDataSourceCatalog extends TestCase { } - // first load the example configuration + // first load the example configuration - // get a temp directory - File tempDir = null; - File tempFile = null; + // get a temp directory + File tempDir = null; + File tempFile = null; - try { - tempFile = File.createTempFile("foo", "bar"); - tempFile.deleteOnExit(); - tempDir = tempFile.getParentFile(); - } catch (Exception e) { - fail(e.getMessage()); - } + try { + tempFile = File.createTempFile("foo", "bar"); + tempFile.deleteOnExit(); + tempDir = tempFile.getParentFile(); + } catch (Exception e) { + fail(e.getMessage()); + } - tmpDirPath = tempDir.getAbsolutePath(); - if (!tmpDirPath.endsWith("/")) { - tmpDirPath += "/"; - } + tmpDirPath = tempDir.getAbsolutePath(); + if (!tmpDirPath.endsWith("/")) { + tmpDirPath += "/"; + } - tmpDirPath += "testCat"; + tmpDirPath += "testCat"; - // now override the catalog ones - properties.setProperty( + // now override the catalog ones + properties.setProperty( "org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.url", "jdbc:hsqldb:file:" + tmpDirPath + "/testCat;shutdown=true"); - properties.setProperty( + properties.setProperty( "org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.user", "sa"); - properties.setProperty( + properties.setProperty( "org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.pass", ""); - properties.setProperty( + properties.setProperty( "org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.driver", "org.hsqldb.jdbcDriver"); + properties.setProperty( + "org.apache.oodt.cas.filemgr.catalog.datasource.lenientFields", + "false"); } else{ try { @@ -392,6 +395,37 @@ public class TestDataSourceCatalog extends TestCase { } } + public void testAddProductReferences() { + + Product testProduct = getTestProduct(); + testProduct.setProductId("1"); // need to link reference to prod + + Reference ref = new Reference(); + + ref.setMimeType("text/plain"); + ref.setFileSize(12345); + List<Reference> refs = new ArrayList<Reference>(); + refs.add(ref); + testProduct.setProductReferences(refs); + try { + myCat.addProductReferences(testProduct); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + + try { + List<Reference> productReferences = myCat.getProductReferences(testProduct); + assertNotNull(productReferences); + assertFalse(productReferences.isEmpty()); + assertEquals(productReferences.get(0).getMimeType().getName(), "text/plain"); + assertEquals(productReferences.get(0).getFileSize(), 12345); + } catch (CatalogException e) { + fail(e.getMessage()); + } + + } + public void testQuery() throws Exception { // ingest first file Product testProduct = getTestProduct(); @@ -453,6 +487,59 @@ public class TestDataSourceCatalog extends TestCase { assertEquals("[24, 23]", productIds.toString()); } + public void testNullValidationLayer(){ + + setUpProperties(); + System.setProperty( + "org.apache.oodt.cas.filemgr.catalog.datasource.lenientFields", + "true"); + myCat = getCatalog(); + // now create the basic schema for the DB + createSchema(); + + assertThat(myCat, instanceOf(LenientDataSourceCatalog.class)); + + } + + public void testPassDatasource(){ + String url = System + .getProperty("org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.url"); + String user = System + .getProperty("org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.user"); + String pass = System + .getProperty("org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.pass"); + String driver = System.getProperty("org.apache.oodt.cas.filemgr.catalog.datasource.jdbc.driver"); + + DataSource ds = DatabaseConnectionBuilder.buildDataSource(user,pass,driver,url); + + myCat = new DataSourceCatalogFactory(ds).createCatalog(); + + Product testProduct = getTestProduct(); + try { + myCat.addProduct(testProduct); + } catch (Exception e) { + e.printStackTrace(); + fail(e.getMessage()); + } + + Product retProduct; + try { + retProduct = myCat.getProductByName("test"); + assertNotNull(retProduct); + assertEquals("test", retProduct.getProductName()); + assertEquals(Product.STRUCTURE_FLAT, retProduct + .getProductStructure()); + assertNotNull(retProduct.getProductType()); + assertEquals("urn:oodt:GenericFile", retProduct.getProductType() + .getProductTypeId()); + assertEquals(Product.STATUS_TRANSFER, retProduct + .getTransferStatus()); + } catch (Exception e) { + fail(e.getMessage()); + } + + + } protected String getSchemaPath() { URL url = this.getClass().getResource( "/testcat.sql"); @@ -492,7 +579,7 @@ public class TestDataSourceCatalog extends TestCase { } - private static Product getTestProduct() { + protected static Product getTestProduct() { Product testProduct = Product.getDefaultFlatProduct("test", "urn:oodt:GenericFile"); testProduct.getProductType().setName("GenericFile"); http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java ---------------------------------------------------------------------- diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java index 7079115..3115d10 100644 --- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java +++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestLuceneCatalog.java @@ -18,29 +18,22 @@ package org.apache.oodt.cas.filemgr.catalog; -//JDK imports +import com.google.common.collect.Lists; + +import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys; +import org.apache.oodt.cas.filemgr.structs.*; +import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException; +import org.apache.oodt.cas.metadata.Metadata; +import org.hamcrest.CoreMatchers; +import org.junit.Assert; + import java.io.File; import java.io.FileInputStream; import java.net.URL; +import java.util.List; import java.util.Properties; import java.util.Vector; -//OODT imports -import org.apache.oodt.cas.filemgr.catalog.LuceneCatalog; -import org.apache.oodt.cas.filemgr.catalog.LuceneCatalogFactory; -import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys; -import org.apache.oodt.cas.filemgr.structs.BooleanQueryCriteria; -import org.apache.oodt.cas.filemgr.structs.Product; -import org.apache.oodt.cas.filemgr.structs.ProductPage; -import org.apache.oodt.cas.filemgr.structs.ProductType; -import org.apache.oodt.cas.filemgr.structs.Query; -import org.apache.oodt.cas.filemgr.structs.Reference; -import org.apache.oodt.cas.filemgr.structs.TermQueryCriteria; -import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException; -import org.apache.oodt.cas.metadata.Metadata; -import com.google.common.collect.Lists; - -//Junit imports import junit.framework.TestCase; /** @@ -87,7 +80,7 @@ public class TestLuceneCatalog extends TestCase { // get a temp directory File tempDir = null; - File tempFile = null; + File tempFile; try { tempFile = File.createTempFile("foo", "bar"); @@ -124,6 +117,9 @@ public class TestLuceneCatalog extends TestCase { "org.apache.oodt.cas.filemgr.catalog.lucene.mergeFactor", "20"); + properties.setProperty( + "org.apache.oodt.cas.filemgr.catalog.datasource.lenientFields", + "false"); // now override the val layer ones URL examplesCoreUrl = this.getClass().getResource( "/examples/core"); @@ -156,8 +152,8 @@ public class TestLuceneCatalog extends TestCase { File[] tmpFiles = tmpDir.listFiles(); if (tmpFiles != null && tmpFiles.length > 0) { - for (int i = 0; i < tmpFiles.length; i++) { - tmpFiles[i].delete(); + for (File tmpFile : tmpFiles) { + tmpFile.delete(); } tmpDir.delete(); @@ -315,7 +311,7 @@ public class TestLuceneCatalog extends TestCase { Product testProd = getTestProduct(); Metadata met = getTestMetadata("test"); - for (int i = 0; i < this.catPageSize; i++) { + for (int i = 0; i < catPageSize; i++) { try { myCat.addProduct(testProd); myCat.addMetadata(met, testProd); @@ -354,10 +350,470 @@ public class TestLuceneCatalog extends TestCase { assertEquals(1, page.getPageProducts().size()); assertEquals(2, page.getTotalPages()); assertNotNull(page.getPageProducts().get(0)); - Product retProd = ((Product) page.getPageProducts().get(0)); + Product retProd = page.getPageProducts().get(0); assertEquals("ShouldBeFirstForPage.txt", retProd.getProductName()); } - + + public void testGetLastProductOnLastPage() { + // add catPageSize of the test Product + // then add a product called "ShouldBeFirstForPage.txt" + // make sure it's the first one on the 2nd page + + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + ProductType type = new ProductType(); + type.setProductTypeId("urn:oodt:GenericFile"); + type.setName("GenericFile"); + assertNotNull(myCat.getLastProductPage(type)); + assertNotNull(myCat.getLastProductPage(type).getPageProducts()); + assertEquals(1, myCat.getLastProductPage(type).getPageProducts() + .size()); + ProductPage page = myCat.getLastProductPage(type); + assertNotNull(page); + assertNotNull(page.getPageProducts()); + assertEquals(1, page.getPageProducts().size()); + assertEquals(2, page.getTotalPages()); + List<Product> prods = page.getPageProducts(); + assertNotNull(page.getPageProducts().get(0)); + Product retProd = page.getPageProducts().get(0); + assertEquals("ShouldBeFirstForPage.txt", retProd.getProductName()); + } + + public void testGetTopNProducts() { + // add catPageSize of the test Product + // then add a product called "ShouldBeFirstForPage.txt" + // make sure it's the first one on the 2nd page + + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getTopNProducts(5)); + assertEquals(5, myCat.getTopNProducts(5).size()); + Product retProd = myCat.getTopNProducts(5).get(0); + assertEquals("test", retProd.getProductName()); + } catch (CatalogException e) { + e.printStackTrace(); + } + + } + + public void testGetNextPageNullType(){ + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + ProductType type = new ProductType(); + type.setProductTypeId("urn:oodt:GenericFile"); + type.setName("GenericFile"); + assertNotNull(myCat.getFirstPage(type)); + assertNotNull(myCat.getFirstPage(type).getPageProducts()); + assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts() + .size()); + + ProductPage page = myCat.getNextPage(null, myCat.getFirstPage(type)); + + + assertNull(page); + } + + public void testGetNextPageNullCurrentPage(){ + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + ProductType type = new ProductType(); + type.setProductTypeId("urn:oodt:GenericFile"); + type.setName("GenericFile"); + assertNotNull(myCat.getFirstPage(type)); + assertNotNull(myCat.getFirstPage(type).getPageProducts()); + assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts() + .size()); + ProductPage page = myCat.getNextPage(type, null); + assertNotNull(page); + assertNotNull(page.getPageProducts()); + assertEquals(20, page.getPageProducts().size()); + assertEquals(2, page.getTotalPages()); + assertNotNull(page.getPageProducts().get(0)); + Product retProd = page.getPageProducts().get(0); + assertEquals("test", retProd.getProductName()); + } + + public void testGetNextPageCurrentPageIsLastPage(){ + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + ProductType type = new ProductType(); + type.setProductTypeId("urn:oodt:GenericFile"); + type.setName("GenericFile"); + assertNotNull(myCat.getFirstPage(type)); + assertNotNull(myCat.getFirstPage(type).getPageProducts()); + assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts() + .size()); + ProductPage page = myCat.getNextPage(type, myCat.getLastProductPage(type)); + assertNotNull(page); + assertNotNull(page.getPageProducts()); + assertEquals(1, page.getPageProducts().size()); + assertEquals(2, page.getTotalPages()); + assertNotNull(page.getPageProducts().get(0)); + Product retProd = page.getPageProducts().get(0); + assertEquals("ShouldBeFirstForPage.txt", retProd.getProductName()); + } + + public void testGetPrevPage(){ + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + ProductType type = new ProductType(); + type.setProductTypeId("urn:oodt:GenericFile"); + type.setName("GenericFile"); + assertNotNull(myCat.getFirstPage(type)); + assertNotNull(myCat.getFirstPage(type).getPageProducts()); + assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts() + .size()); + ProductPage page2 = myCat.getNextPage(type, myCat.getFirstPage(type)); + ProductPage page = myCat.getPrevPage(type, page2); + assertEquals(2, page2.getPageNum()); + assertEquals(1, page.getPageNum()); + } + + public void testGetPrevPageNullCurrentPage(){ + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + ProductType type = new ProductType(); + type.setProductTypeId("urn:oodt:GenericFile"); + type.setName("GenericFile"); + assertNotNull(myCat.getFirstPage(type)); + assertNotNull(myCat.getFirstPage(type).getPageProducts()); + assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts() + .size()); + ProductPage page = myCat.getPrevPage(type, null); + assertNotNull(page); + assertNotNull(page.getPageProducts()); + assertEquals(20, page.getPageProducts().size()); + assertEquals(2, page.getTotalPages()); + assertNotNull(page.getPageProducts().get(0)); + Product retProd = page.getPageProducts().get(0); + assertEquals("test", retProd.getProductName()); + } + + public void testGetPrevPageCurrentPageIsFirstPage(){ + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + ProductType type = new ProductType(); + type.setProductTypeId("urn:oodt:GenericFile"); + type.setName("GenericFile"); + assertNotNull(myCat.getFirstPage(type)); + assertNotNull(myCat.getFirstPage(type).getPageProducts()); + assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts() + .size()); + ProductPage page = myCat.getPrevPage(type, myCat.getFirstPage(type)); + assertNotNull(page); + assertNotNull(page.getPageProducts()); + assertEquals(20, page.getPageProducts().size()); + assertEquals(2, page.getTotalPages()); + assertNotNull(page.getPageProducts().get(0)); + Product retProd = page.getPageProducts().get(0); + assertEquals("test", retProd.getProductName()); + } + + public void testGetPrevPageNullProductType(){ + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + ProductType type = new ProductType(); + type.setProductTypeId("urn:oodt:GenericFile"); + type.setName("GenericFile"); + assertNotNull(myCat.getFirstPage(type)); + assertNotNull(myCat.getFirstPage(type).getPageProducts()); + assertEquals(catPageSize, myCat.getFirstPage(type).getPageProducts() + .size()); + ProductPage page2 = myCat.getNextPage(type, myCat.getFirstPage(type)); + ProductPage page = myCat.getPrevPage(null, page2); + assertNull(page); + + } + + public void testGetTopNProductsByType() { + + Product testProd = getTestProduct(); + Metadata met = getTestMetadata("test"); + + for (int i = 0; i < catPageSize; i++) { + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + } + + testProd.setProductName("ShouldBeFirstForPage.txt"); + met.replaceMetadata("CAS.ProdutName", "ShouldBeFirstForPage.txt"); + + try { + myCat.addProduct(testProd); + myCat.addMetadata(met, testProd); + } catch (Exception e) { + fail(e.getMessage()); + } + + try { + assertNotNull(myCat.getProducts()); + assertEquals(21, myCat.getProducts().size()); + } catch (Exception e) { + fail(e.getMessage()); + } + + ProductType type = new ProductType(); + type.setProductTypeId("urn:oodt:GenericFile"); + type.setName("GenericFile"); + try { + assertNotNull(myCat.getTopNProducts(5, type)); + assertEquals(5, myCat.getTopNProducts(5, type).size()); + Product retProd = myCat.getTopNProducts(5, type).get(0); + assertEquals("test", retProd.getProductName()); + } catch (CatalogException e) { + e.printStackTrace(); + } + + } + /** * @since OODT-141 */ @@ -524,7 +980,23 @@ public class TestLuceneCatalog extends TestCase { assertEquals(page.getPageNum(), 1); assertEquals(page.getTotalPages(), 1); } - + + public void testNullIndexPath(){ + System.clearProperty("org.apache.oodt.cas.filemgr.catalog.lucene.idxPath"); + try{ + LuceneCatalogFactory fact = new LuceneCatalogFactory(); + fail( "Missing exception" ); + + } catch( IllegalArgumentException e ) { + Assert.assertThat(e.getMessage(), CoreMatchers.containsString("error initializing lucene catalog: ")); + } + } + + public void testCreateCatalogException(){ + + //TODO Use the TestAppender to make sure that an exception thrown is caught and logged. + } + private static Product getTestProduct() { Product testProduct = Product.getDefaultFlatProduct("test", "urn:oodt:GenericFile"); http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java ---------------------------------------------------------------------- diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java index b6efdb2..fa16e2a 100644 --- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java +++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestMappedDataSourceCatalog.java @@ -71,5 +71,4 @@ public class TestMappedDataSourceCatalog extends TestDataSourceCatalog { return new File(url.getFile()).getAbsolutePath(); } - } http://git-wip-us.apache.org/repos/asf/oodt/blob/d757222b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java ---------------------------------------------------------------------- diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java index a06ed5e..5e87ddc 100644 --- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java +++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/catalog/TestOrderedDataSourceCatalog.java @@ -17,11 +17,12 @@ package org.apache.oodt.cas.filemgr.catalog; +import org.apache.oodt.cas.filemgr.structs.Product; +import org.apache.oodt.cas.metadata.Metadata; + import java.io.File; import java.net.URL; import java.util.Properties; -import org.apache.oodt.cas.filemgr.structs.Product; -import org.apache.oodt.cas.metadata.Metadata; /** * @author mattmann @@ -98,7 +99,7 @@ public class TestOrderedDataSourceCatalog extends TestDataSourceCatalog { } - private static Product getTestProduct() { + protected static Product getTestProduct() { Product testProduct = Product.getDefaultFlatProduct("test", "urn:oodt:GenericFile"); testProduct.getProductType().setName("GenericFile");
