package com.taobao.tddl.rule.virtualnode;
import java.util.List;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.taobao.tddl.rule.TddlRule;
import com.taobao.tddl.rule.model.MatcherResult;
import com.taobao.tddl.rule.model.TargetDB;
/**
* @description
* @author <a href="junyu@taobao.com">junyu</a>
* @version 1.0
* @since 1.6
* @date 2011-8-11 11:19:02
*/
public class TddlVirtualRuleTest {
static TddlRule rule;
static TddlRule rule_format;
@BeforeClass
public static void setUp() {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:virtualnode/spring-context.xml");
rule = (TddlRule) context.getBean("rule");
rule_format = (TddlRule) context.getBean("rule-format");
}
@Test
public void testTddlRule() {
String conditionStr = "message_id in (996,997,998,999,1000,1001,1002,1003,1004):int";
MatcherResult result = rule.route("nserch", conditionStr);
List<TargetDB> dbs = result.getCalculationResult();
Assert.assertEquals(2, dbs.size());
StringBuilder sb = new StringBuilder("目标库:");
sb.append(dbs.get(0).getDbIndex());
sb.append(" 所要执行的表:");
for (String table : dbs.get(0).getTableNames()) {
sb.append(table);
sb.append(" ");
}
Assert.assertEquals("目标库:NSEARCH_GROUP_2 所要执行的表:NSERCH_4 ", sb.toString());
}
@Test
public void testTddlRuleFormat() {
String conditionStr = "message_id in (996,997,998,999,1000,1001,1002,1003,1004):int";
MatcherResult result = rule_format.route("nserch", conditionStr);
List<TargetDB> dbs = result.getCalculationResult();
Assert.assertEquals(2, dbs.size());
StringBuilder sb = new StringBuilder("目标库:");
sb.append(dbs.get(0).getDbIndex());
sb.append(" 所要执行的表:");
for (String table : dbs.get(0).getTableNames()) {
sb.append(table);
sb.append(" ");
}
Assert.assertEquals("目标库:NSEARCH_GROUP_2 所要执行的表:nserch_0004 ", sb.toString());
}
}