package com.taobao.tddl.rule;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.junit.AfterClass;
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.google.common.collect.Lists;
import com.taobao.tddl.common.exception.TddlException;
import com.taobao.tddl.rule.exceptions.RouteCompareDiffException;
import com.taobao.tddl.rule.model.MatcherResult;
import com.taobao.tddl.rule.model.TargetDB;
import com.taobao.tddl.rule.utils.ComparativeStringAnalyser;
public class RemoteRuleIntegration extends BaseRuleTest {
static TddlRule rule;
@BeforeClass
public static void setUp() {
ApplicationContext context = new ClassPathXmlApplicationContext("classpath:remote/spring-context.xml");
rule = (TddlRule) context.getBean("rule");
}
@AfterClass
public static void tearDown() throws TddlException {
rule.destory();
}
@Test
public void testTddlRuleMuRulesAndCompare_Select() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String conditionStr = "message_id >=25:int and message_id<=26:int;gmt_create>=" + sdf.format(new Date())
+ ":date";
try {
List<TargetDB> db = null;
MatcherResult result = rule.routeMverAndCompare(true,
"nserch",
new Choicer(ComparativeStringAnalyser.decodeComparativeString2Map(conditionStr)),
Lists.newArrayList());
db = result.getCalculationResult();
for (TargetDB targetDatabase : db) {
StringBuilder sb = new StringBuilder("目标库:");
sb.append(targetDatabase.getDbIndex());
sb.append(" 所要执行的表:");
for (String table : targetDatabase.getTableNames()) {
sb.append(table);
sb.append(" ");
}
System.out.println(sb.toString());
}
} catch (RouteCompareDiffException e) {
Assert.fail(ExceptionUtils.getFullStackTrace(e));
}
}
@Test
public void testTddlRuleMuRulesAndCompare_Insert() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String conditionStr = "message_id >=25:int and message_id<=26:int;gmt_create>=" + sdf.format(new Date())
+ ":date";
try {
List<TargetDB> db = null;
MatcherResult result = rule.routeMverAndCompare(true,
"nserch",
new Choicer(ComparativeStringAnalyser.decodeComparativeString2Map(conditionStr)),
Lists.newArrayList());
db = result.getCalculationResult();
for (TargetDB targetDatabase : db) {
StringBuilder sb = new StringBuilder("目标库:");
sb.append(targetDatabase.getDbIndex());
sb.append(" 所要执行的表:");
for (String table : targetDatabase.getTableNames()) {
sb.append(table);
sb.append(" ");
}
System.out.println(sb.toString());
}
} catch (RouteCompareDiffException e) {
Assert.fail(ExceptionUtils.getFullStackTrace(e));
}
}
}