package com.taobao.tddl.rule.virtualnode; import java.util.Map; import org.junit.Assert; import org.junit.Test; import com.google.common.collect.Maps; import com.taobao.tddl.rule.virtualnode.DBTableMap; import com.taobao.tddl.rule.virtualnode.PartitionFunction; public class DbSlotMapTest { @Test public void testSimple() { DBTableMap slot = new DBTableMap(); Map<String, String> map = Maps.newHashMap(); map.put("NSEARCH_GROUP_1", "0,2-3"); map.put("NSEARCH_GROUP_2", "1,4"); map.put("NSEARCH_GROUP_EXTRA", "5"); slot.setDbTableMap(map); slot.init(); Assert.assertEquals("NSEARCH_GROUP_1", slot.getValue("0")); Assert.assertEquals("NSEARCH_GROUP_2", slot.getValue("1")); Assert.assertEquals("NSEARCH_GROUP_1", slot.getValue("2")); Assert.assertEquals("NSEARCH_GROUP_1", slot.getValue("3")); Assert.assertEquals("NSEARCH_GROUP_2", slot.getValue("4")); Assert.assertEquals("NSEARCH_GROUP_EXTRA", slot.getValue("5")); } @Test public void testPartition() { DBTableMap slot = new DBTableMap(); PartitionFunction valueFunc1 = new PartitionFunction(); valueFunc1.setFirstValue(-1); valueFunc1.setPartitionCount("1,1,1"); valueFunc1.setPartitionLength("1,2,1"); PartitionFunction valueFunc2 = new PartitionFunction(); valueFunc2.setFirstValue(-1); valueFunc2.setPartitionCount("1,1"); valueFunc2.setPartitionLength("2,3"); PartitionFunction valueFunc3 = new PartitionFunction(); valueFunc3.setFirstValue(-1); valueFunc3.setPartitionCount("1"); valueFunc3.setPartitionLength("6"); Map<String, PartitionFunction> map = Maps.newHashMap(); map.put("NSEARCH_GROUP_1", valueFunc1); map.put("NSEARCH_GROUP_2", valueFunc2); map.put("NSEARCH_GROUP_EXTRA", valueFunc3); slot.setParFuncMap(map); slot.init(); Assert.assertEquals("NSEARCH_GROUP_1", slot.getValue("0")); Assert.assertEquals("NSEARCH_GROUP_2", slot.getValue("1")); Assert.assertEquals("NSEARCH_GROUP_1", slot.getValue("2")); Assert.assertEquals("NSEARCH_GROUP_1", slot.getValue("3")); Assert.assertEquals("NSEARCH_GROUP_2", slot.getValue("4")); Assert.assertEquals("NSEARCH_GROUP_EXTRA", slot.getValue("5")); } }