package edu.brown.designer.partitioners.plan; import java.util.HashMap; import java.util.Map; import org.json.JSONObject; import org.junit.Test; import org.voltdb.catalog.CatalogType; import edu.brown.BaseTestCase; import edu.brown.benchmark.tm1.TM1Constants; import edu.brown.benchmark.tm1.procedures.*; import edu.brown.catalog.special.MultiColumn; import edu.brown.catalog.special.MultiProcParameter; import edu.brown.catalog.special.ReplicatedColumn; import edu.brown.designer.partitioners.plan.PartitionPlan; import edu.brown.utils.ProjectType; public class TestPartitionPlanTM1 extends BaseTestCase { @Override protected void setUp() throws Exception { super.setUp(ProjectType.TM1); } /** * testMultiColumn */ @Test public void testMultiColumn() throws Exception { Map<CatalogType, CatalogType> m = new HashMap<CatalogType, CatalogType>(); // Replication m.put(this.getTable(TM1Constants.TABLENAME_SUBSCRIBER), this.getColumn(TM1Constants.TABLENAME_SUBSCRIBER, "S_ID")); m.put(this.getTable(TM1Constants.TABLENAME_ACCESS_INFO), ReplicatedColumn.get(this.getTable(TM1Constants.TABLENAME_ACCESS_INFO))); // Multi-Column! m.put(this.getTable(TM1Constants.TABLENAME_SPECIAL_FACILITY), MultiColumn.get(this.getColumn(TM1Constants.TABLENAME_SPECIAL_FACILITY, "S_ID"), this.getColumn(TM1Constants.TABLENAME_SPECIAL_FACILITY, "SF_TYPE"))); m.put(this.getTable(TM1Constants.TABLENAME_CALL_FORWARDING), MultiColumn.get(this.getColumn(TM1Constants.TABLENAME_CALL_FORWARDING, "S_ID"), this.getColumn(TM1Constants.TABLENAME_CALL_FORWARDING, "SF_TYPE"))); // Procedures! m.put(this.getProcedure(DeleteCallForwarding.class), this.getProcParameter(DeleteCallForwarding.class, 0)); m.put(this.getProcedure(GetAccessData.class), this.getProcParameter(GetAccessData.class, 0)); m.put(this.getProcedure(GetSubscriberData.class), this.getProcParameter(GetSubscriberData.class, 0)); m.put(this.getProcedure(InsertCallForwarding.class), this.getProcParameter(InsertCallForwarding.class, 0)); // m.put(this.getProcedure(InsertSubscriber.class), this.getProcParameter(InsertSubscriber.class, 0)); m.put(this.getProcedure(UpdateLocation.class), this.getProcParameter(UpdateLocation.class, 1)); // MultiProcParameters! m.put(this.getProcedure(GetNewDestination.class), MultiProcParameter.get(this.getProcParameter(GetNewDestination.class, 1), this.getProcParameter(GetNewDestination.class, 0))); m.put(this.getProcedure(UpdateSubscriberData.class), MultiProcParameter.get(this.getProcParameter(UpdateSubscriberData.class, 0), this.getProcParameter(UpdateSubscriberData.class, 3))); PartitionPlan pplan = PartitionPlan.createFromMap(m); assertNotNull(pplan); // pplan.save("/tmp/tm1.manual.pplan"); String json = pplan.toJSONString(); assertFalse(json.isEmpty()); JSONObject json_object = new JSONObject(json); assertNotNull(json_object); PartitionPlan clone = new PartitionPlan(); clone.fromJSON(json_object, catalog_db); System.err.println(clone); } }