@Test public void testCalculateRange6() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("4"); rule.setPartitionLength("256"); rule.init(); String bgeinValue = "769"; String endValue = "1274"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{3, 0}; checkCalculateRange(expect, fact); }
@Override public Integer calculate(String columnValue) { try { if (columnValue == null || columnValue.equalsIgnoreCase("NULL")) { return 0; } long key = Long.parseLong(columnValue); return calculate(key); } catch (NumberFormatException e) { throw new IllegalArgumentException("columnValue:" + columnValue + " Please eliminate any quote and non number within it.", e); } }
@Override public void init() { partitionUtil = new PartitionUtil(count, length); initHashCode(); }
private AbstractPartitionAlgorithm createFunction(String name, String clazz) throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException { String lowerClass = clazz.toLowerCase(); switch (lowerClass) { case "hash": return new PartitionByLong(); case "stringhash": return new PartitionByString(); case "enum": return new PartitionByFileMap(); case "jumpstringhash": return new PartitionByJumpConsistentHash(); case "numberrange": return new AutoPartitionByLong(); case "patternrange": return new PartitionByPattern(); case "date": return new PartitionByDate(); default: Class<?> clz = Class.forName(clazz); //all function must be extend from AbstractPartitionAlgorithm if (!AbstractPartitionAlgorithm.class.isAssignableFrom(clz)) { throw new IllegalArgumentException("rule function must implements " + AbstractPartitionAlgorithm.class.getName() + ", name=" + name); } return (AbstractPartitionAlgorithm) clz.newInstance(); } }
public void setPartitionLength(String partitionLength) { this.length = toIntArray(partitionLength); propertiesMap.put("partitionLength", partitionLength); }
public void setPartitionCount(String partitionCount) { this.count = toIntArray(partitionCount); propertiesMap.put("partitionCount", partitionCount); }
@Test public void testCalculateRange8() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("8"); rule.setPartitionLength("128"); rule.init(); String bgeinValue = "770"; String endValue = "1793"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{6, 7, 0, 1, 2, 3, 4, 5}; checkCalculateRange(expect, fact); }
@Test public void testCalculateRange() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("2"); rule.setPartitionLength("512"); rule.init(); String bgeinValue = "0"; String endValue = "512"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{0, 1}; checkCalculateRange(expect, fact); }
@Test public void testCalculateRange15() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("2"); rule.setPartitionLength("512"); rule.init(); String bgeinValue = "1021"; String endValue = "2043"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{1, 0}; checkCalculateRange(expect, fact); }
@Test public void testCalculate6() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("3"); rule.setPartitionLength("1"); rule.init(); String value = ""; thrown.expect(IllegalArgumentException.class); rule.calculate(value); }
@Test public void testCalculateRange7() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("8"); rule.setPartitionLength("128"); rule.init(); String bgeinValue = "769"; String endValue = "1274"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{6, 7, 0, 1}; checkCalculateRange(expect, fact); }
@Test public void testCalculateRange11() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("8"); rule.setPartitionLength("128"); rule.init(); String bgeinValue = "769"; String endValue = "1793"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); checkCalculateRange(allNode, fact); }
@Test public void testCalculateRange12() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("2"); rule.setPartitionLength("512"); rule.init(); String bgeinValue = "-2"; String endValue = "-1"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{1}; checkCalculateRange(expect, fact); }
@Test public void testCalculateRange2() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("2"); rule.setPartitionLength("512"); rule.init(); String bgeinValue = "0"; String endValue = "1024"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); checkCalculateRange(allNode, fact); }
@Test public void testCalculateRange3() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("2"); rule.setPartitionLength("512"); rule.init(); String bgeinValue = "1"; String endValue = "1024"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{0, 1}; checkCalculateRange(expect, fact); }
@Test public void testCalculateRange4() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("2"); rule.setPartitionLength("512"); rule.init(); String bgeinValue = "1"; String endValue = "2048"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); checkCalculateRange(allNode, fact); }
@Test public void testCalculateRange5() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("2"); rule.setPartitionLength("512"); rule.init(); String bgeinValue = "514"; String endValue = "1024"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{1, 0}; checkCalculateRange(expect, fact); }
@Test public void testCalculateRange10() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("8"); rule.setPartitionLength("128"); rule.init(); String bgeinValue = "769"; String endValue = "895"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{6}; checkCalculateRange(expect, fact); }
@Test public void testCalculateRange13() { PartitionByLong rule = new PartitionByLong(); rule.setPartitionCount("2"); rule.setPartitionLength("512"); rule.init(); String bgeinValue = "-1026"; String endValue = "-3"; Integer[] fact = rule.calculateRange(bgeinValue, endValue); Integer[] expect = new Integer[]{1, 0}; checkCalculateRange(expect, fact); }