package com.taobao.tddl.group.utils;
import org.junit.Assert;
import org.junit.Test;
import com.taobao.tddl.group.config.GroupIndex;
public class GroupHintParserTest {
@Test
public void testSingleIndex() {
String sql = "/*+TDDL_GROUP({groupIndex:12})*/select * from tab";
GroupIndex index = GroupHintParser.convertHint2Index(sql);
Assert.assertEquals(index.index, 12);
Assert.assertEquals(index.failRetry, false);
}
@Test
public void testIndexWithRetry() {
String sql = "/*+TDDL_GROUP({groupIndex:12,failRetry:true})*/select * from tab";
GroupIndex index = GroupHintParser.convertHint2Index(sql);
Assert.assertEquals(index.index, 12);
Assert.assertEquals(index.failRetry, true);
}
@Test
public void testNoIndexHint() {
String sql = "select * from tab";
GroupIndex index = GroupHintParser.convertHint2Index(sql);
Assert.assertNull(index);
}
@Test
public void testRemoveIndex() {
String sql = "/*+TDDL_GROUP({groupIndex:12,failRetry:true})*/select * from tab";
String remove = GroupHintParser.removeTddlGroupHint(sql);
Assert.assertEquals(remove, " select * from tab");
}
@Test
public void testExceptionOnlyRetry() {
String sql = "/*+TDDL_GROUP({failRetry:true})*/select * from tab";
try {
GroupHintParser.convertHint2Index(sql);
Assert.fail();
} catch (Exception e) {
Assert.assertEquals("the standard group hint is:'groupIndex:12[,failRetry:true]',current index hint is:failRetry:true",
e.getMessage());
}
}
@Test
public void testExceptionErrorHint() {
String sql = "/*+TDDL_GROUP({groupIndexx:12})*/select * from tab";
try {
GroupHintParser.convertHint2Index(sql);
Assert.fail();
} catch (Exception e) {
Assert.assertEquals("the standard group hint is:'groupIndex:12[,failRetry:true]',current index hint is:groupIndexx:12",
e.getMessage());
}
}
}