package edu.brown.catalog.special; import java.util.Collection; import java.util.HashSet; import org.voltdb.catalog.Column; import org.voltdb.catalog.ProcParameter; import org.voltdb.catalog.Procedure; import org.voltdb.catalog.Table; import edu.brown.BaseTestCase; import edu.brown.benchmark.tm1.TM1Constants; import edu.brown.benchmark.tm1.procedures.UpdateSubscriberData; import edu.brown.utils.CollectionUtil; import edu.brown.utils.ProjectType; public class TestMultiAttributeCatalogType extends BaseTestCase { @Override protected void setUp() throws Exception { super.setUp(ProjectType.TM1); } /** * testMultiColumn */ public void testMultiColumn() throws Exception { Table catalog_tbl = this.getTable(TM1Constants.TABLENAME_SUBSCRIBER); Column columns[] = { this.getColumn(catalog_tbl, "S_ID"), this.getColumn(catalog_tbl, "SUB_NBR"), }; MultiColumn item0 = MultiColumn.get(columns); assertNotNull(item0); assertEquals(catalog_tbl, item0.getParent()); for (int i = 0; i < columns.length; i++) { assertNotNull(columns[i].toString(), item0.get(i)); assertEquals(columns[i], item0.get(i)); } // FOR // Make another and make sure it's the same MultiColumn item1 = MultiColumn.get(columns); assertNotNull(item1); assert(item0 == item1); assertEquals(item0.hashCode(), item1.hashCode()); assertEquals(item0, item1); } /** * testVerticalPartitionColumn */ @SuppressWarnings("unchecked") public void testVerticalPartitionColumn() throws Exception { Table catalog_tbl = this.getTable(TM1Constants.TABLENAME_SUBSCRIBER); Column orig_hp_col = this.getColumn(catalog_tbl, "S_ID"); MultiColumn orig_vp_col = MultiColumn.get(this.getColumn(catalog_tbl, "S_ID"), this.getColumn(catalog_tbl, "SUB_NBR")); VerticalPartitionColumn item0 = VerticalPartitionColumn.get(orig_hp_col, orig_vp_col); assertNotNull(item0); assertEquals(catalog_tbl, item0.getParent()); assertEquals(2, item0.size()); Collection<Column> expected[] = new Collection[]{ CollectionUtil.addAll(new HashSet<Column>(), orig_hp_col), orig_vp_col.getAttributes() }; Collection<Column> actual[] = new Collection[]{ CollectionUtil.addAll(new HashSet<Column>(), item0.getHorizontalColumn()), item0.getVerticalPartitionColumns() }; String labels[] = { "Horizontal", "Vertical" }; for (int i = 0; i < expected.length; i++) { assertNotNull(labels[i], actual[i]); assertEquals(labels[i], expected[i].size(), actual[i].size()); assertTrue(labels[i], actual[i].containsAll(expected[i])); } // FOR // Make another and make sure it's the same VerticalPartitionColumn item1 = VerticalPartitionColumn.get(orig_hp_col, orig_vp_col); assertNotNull(item1); assert(item0 == item1); assertEquals(item0.hashCode(), item1.hashCode()); assertEquals(item0, item1); } /** * testMultiProcParameter */ public void testMultiProcParameter() throws Exception { Procedure catalog_proc = this.getProcedure(UpdateSubscriberData.class); ProcParameter params[] = { catalog_proc.getParameters().get(0), catalog_proc.getParameters().get(1), }; int num_params = catalog_proc.getParameters().size(); MultiProcParameter item0 = MultiProcParameter.get(params); assertNotNull(item0); assertEquals(catalog_proc, item0.getParent()); assertEquals(num_params, item0.getIndex()); for (int i = 0; i < params.length; i++) { assertNotNull(params[i].toString(), item0.get(i)); assertEquals(params[i], item0.get(i)); } // FOR // Make another and make sure it's the same MultiProcParameter item1 = MultiProcParameter.get(params); assertNotNull(item1); assert(item0 == item1); assertEquals(item0.hashCode(), item1.hashCode()); assertEquals(item0, item1); } }