You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by yx...@apache.org on 2022/05/04 14:37:20 UTC
[shardingsphere] branch master updated: Refactor ShardingAlgorithm with CosId (#17319)
This is an automated email from the ASF dual-hosted git repository.
yx9o pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 724ba9dc809 Refactor ShardingAlgorithm with CosId (#17319)
724ba9dc809 is described below
commit 724ba9dc80941459c74763638b0f7486577bf41f
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Wed May 4 22:36:56 2022 +0800
Refactor ShardingAlgorithm with CosId (#17319)
* Refactor AbstractIntervalShardingAlgorithm
* Remove PropertiesUtil
* Refactor CosIdIntervalShardingAlgorithm
* Refactor CosIdSnowflakeIntervalShardingAlgorithm
* Refactor CosIdSnowflakeIntervalShardingAlgorithmTest
* Refactor CosIdIntervalShardingAlgorithmTest
* Rename AbstractCosIdIntervalShardingAlgorithm
---
.../ClassBasedShardingAlgorithmFactory.java | 2 +-
.../algorithm/sharding/cosid/PropertiesUtil.java | 44 -----------
.../AbstractCosIdIntervalShardingAlgorithm.java} | 58 ++++++--------
.../CosIdIntervalShardingAlgorithm.java | 26 ++++---
.../CosIdSnowflakeIntervalShardingAlgorithm.java | 19 ++---
.../cosid/{ => mod}/CosIdModShardingAlgorithm.java | 14 +++-
...e.shardingsphere.sharding.spi.ShardingAlgorithm | 6 +-
.../algorithm/sharding/cosid/Arguments.java | 18 ++++-
.../sharding/cosid/PropertiesUtilTest.java | 47 -----------
.../CosIdIntervalShardingAlgorithmTest.java | 91 +++++++++-------------
...osIdSnowflakeIntervalShardingAlgorithmTest.java | 63 +++++----------
.../{ => mod}/CosIdModShardingAlgorithmTest.java | 17 ++--
12 files changed, 141 insertions(+), 264 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/classbased/ClassBasedShardingAlgorithmFactory.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/classbased/ClassBasedShardingAlgorithmFactory.java
index bac23052cac..fdba50e1202 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/classbased/ClassBasedShardingAlgorithmFactory.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/classbased/ClassBasedShardingAlgorithmFactory.java
@@ -41,8 +41,8 @@ public final class ClassBasedShardingAlgorithmFactory {
* @param <T> class generic type
* @return sharding algorithm instance
*/
- @SneakyThrows(ReflectiveOperationException.class)
@SuppressWarnings("unchecked")
+ @SneakyThrows(ReflectiveOperationException.class)
public static <T extends ShardingAlgorithm> T newInstance(final String shardingAlgorithmClassName, final Class<T> superShardingAlgorithmClass, final Properties props) {
Class<?> result = Class.forName(shardingAlgorithmClassName);
if (!superShardingAlgorithmClass.isAssignableFrom(result)) {
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/PropertiesUtil.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/PropertiesUtil.java
deleted file mode 100644
index 5867b2c7999..00000000000
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/PropertiesUtil.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.sharding.algorithm.sharding.cosid;
-
-import com.google.common.base.Preconditions;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-
-import java.util.Properties;
-
-/**
- * Properties Utility.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class PropertiesUtil {
-
- /**
- * Get the value according to the key and verify whether the value exists. If it does not exist, an {@link IllegalArgumentException} will be thrown.
- *
- * @param props Properties
- * @param key key of property
- * @return value of property
- * @throws IllegalArgumentException throw an exception when the key does not exist
- */
- public static String getRequiredValue(final Properties props, final String key) {
- Preconditions.checkArgument(props.containsKey(key), "%s can not be null.", key);
- return props.get(key).toString();
- }
-}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/AbstractIntervalShardingAlgorithm.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/AbstractCosIdIntervalShardingAlgorithm.java
similarity index 80%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/AbstractIntervalShardingAlgorithm.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/AbstractCosIdIntervalShardingAlgorithm.java
index e0b698e85d2..b99af29c879 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/AbstractIntervalShardingAlgorithm.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/AbstractCosIdIntervalShardingAlgorithm.java
@@ -15,10 +15,13 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.algorithm.sharding.cosid;
+package org.apache.shardingsphere.sharding.algorithm.sharding.cosid.interval;
+import com.google.common.base.Preconditions;
import com.google.common.collect.BoundType;
import com.google.common.collect.Range;
+import lombok.AccessLevel;
+import lombok.Getter;
import me.ahoo.cosid.sharding.IntervalStep;
import me.ahoo.cosid.sharding.IntervalTimeline;
import org.apache.shardingsphere.sharding.algorithm.constant.CosIdAlgorithmConstants;
@@ -34,9 +37,9 @@ import java.util.Collection;
import java.util.Properties;
/**
- * Interval-based time range sharding algorithm.
+ * Abstract interval range sharding algorithm with CosId.
*/
-public abstract class AbstractIntervalShardingAlgorithm<T extends Comparable<?>> implements StandardShardingAlgorithm<T> {
+public abstract class AbstractCosIdIntervalShardingAlgorithm<T extends Comparable<?>> implements StandardShardingAlgorithm<T> {
public static final String DEFAULT_DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
@@ -54,35 +57,34 @@ public abstract class AbstractIntervalShardingAlgorithm<T extends Comparable<?>>
public static final String ZONE_ID_KEY = "zone-id";
+ @Getter(AccessLevel.PROTECTED)
+ private volatile ZoneId zoneId;
+
private volatile IntervalTimeline intervalTimeline;
- private ZoneId zoneId = ZoneId.systemDefault();
+ @Override
+ public void init(final Properties props) {
+ zoneId = getZoneId(props);
+ intervalTimeline = getIntervalTimeline(props);
+ }
- /**
- * get zone id.
- *
- * @return zone id
- */
- protected ZoneId getZoneId() {
- return zoneId;
+ private ZoneId getZoneId(final Properties props) {
+ return props.containsKey(ZONE_ID_KEY) ? ZoneId.of(props.get(ZONE_ID_KEY).toString()) : ZoneId.systemDefault();
}
- @Override
- public void init(final Properties props) {
- if (props.containsKey(ZONE_ID_KEY)) {
- zoneId = ZoneId.of(getRequiredValue(props, ZONE_ID_KEY));
- }
+ private IntervalTimeline getIntervalTimeline(final Properties props) {
String logicNamePrefix = getRequiredValue(props, CosIdAlgorithmConstants.LOGIC_NAME_PREFIX_KEY);
LocalDateTime effectiveLower = LocalDateTime.parse(getRequiredValue(props, DATE_TIME_LOWER_KEY), DEFAULT_DATE_TIME_FORMATTER);
LocalDateTime effectiveUpper = LocalDateTime.parse(getRequiredValue(props, DATE_TIME_UPPER_KEY), DEFAULT_DATE_TIME_FORMATTER);
DateTimeFormatter suffixFormatter = DateTimeFormatter.ofPattern(getRequiredValue(props, SHARDING_SUFFIX_FORMAT_KEY));
ChronoUnit stepUnit = ChronoUnit.valueOf(getRequiredValue(props, INTERVAL_UNIT_KEY));
int stepAmount = Integer.parseInt(props.getOrDefault(INTERVAL_AMOUNT_KEY, 1).toString());
- intervalTimeline = new IntervalTimeline(logicNamePrefix, Range.closed(effectiveLower, effectiveUpper), IntervalStep.of(stepUnit, stepAmount), suffixFormatter);
+ return new IntervalTimeline(logicNamePrefix, Range.closed(effectiveLower, effectiveUpper), IntervalStep.of(stepUnit, stepAmount), suffixFormatter);
}
private String getRequiredValue(final Properties props, final String key) {
- return PropertiesUtil.getRequiredValue(props, key);
+ Preconditions.checkArgument(props.containsKey(key), "%s can not be null.", key);
+ return props.get(key).toString();
}
@Override
@@ -97,14 +99,6 @@ public abstract class AbstractIntervalShardingAlgorithm<T extends Comparable<?>>
return intervalTimeline.sharding(shardingRangeTime);
}
- /**
- * convert sharding value to {@link LocalDateTime}.
- *
- * @param shardingValue sharding value
- * @return The {@link LocalDateTime} represented by the sharding value
- */
- protected abstract LocalDateTime convertShardingValue(T shardingValue);
-
@SuppressWarnings("unchecked")
private Range<LocalDateTime> convertRangeShardingValue(final Range<T> shardingValue) {
if (Range.all().equals(shardingValue)) {
@@ -121,15 +115,11 @@ public abstract class AbstractIntervalShardingAlgorithm<T extends Comparable<?>>
}
if (shardingValue.hasLowerBound()) {
LocalDateTime lower = convertShardingValue(shardingValue.lowerEndpoint());
- if (BoundType.OPEN.equals(shardingValue.lowerBoundType())) {
- return Range.greaterThan(lower);
- }
- return Range.atLeast(lower);
+ return BoundType.OPEN.equals(shardingValue.lowerBoundType()) ? Range.greaterThan(lower) : Range.atLeast(lower);
}
LocalDateTime upper = convertShardingValue(shardingValue.upperEndpoint());
- if (BoundType.OPEN.equals(shardingValue.upperBoundType())) {
- return Range.lessThan(upper);
- }
- return Range.atMost(upper);
+ return BoundType.OPEN.equals(shardingValue.upperBoundType()) ? Range.lessThan(upper) : Range.atMost(upper);
}
+
+ protected abstract LocalDateTime convertShardingValue(T shardingValue);
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdIntervalShardingAlgorithm.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdIntervalShardingAlgorithm.java
similarity index 76%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdIntervalShardingAlgorithm.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdIntervalShardingAlgorithm.java
index 29bfaeba21f..b7a9fd5090a 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdIntervalShardingAlgorithm.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdIntervalShardingAlgorithm.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.algorithm.sharding.cosid;
+package org.apache.shardingsphere.sharding.algorithm.sharding.cosid.interval;
import com.google.common.base.Strings;
import lombok.Getter;
@@ -29,9 +29,9 @@ import java.util.Date;
import java.util.Properties;
/**
- * Interval-based time range sharding algorithm.
+ * Interval range sharding algorithm with CosId.
*/
-public final class CosIdIntervalShardingAlgorithm extends AbstractIntervalShardingAlgorithm<Comparable<?>> {
+public final class CosIdIntervalShardingAlgorithm extends AbstractCosIdIntervalShardingAlgorithm<Comparable<?>> {
public static final String TYPE = CosIdAlgorithmConstants.TYPE_PREFIX + "INTERVAL";
@@ -52,11 +52,16 @@ public final class CosIdIntervalShardingAlgorithm extends AbstractIntervalShardi
@Override
public void init(final Properties props) {
super.init(props);
- if (props.containsKey(TIMESTAMP_UNIT_KEY) && TIMESTAMP_SECOND_UNIT.equalsIgnoreCase(props.getProperty(TIMESTAMP_UNIT_KEY))) {
- isSecondTs = true;
- }
- String dateTimePattern = props.getProperty(DATE_TIME_PATTERN_KEY, DEFAULT_DATE_TIME_PATTERN);
- dateTimeFormatter = DateTimeFormatter.ofPattern(dateTimePattern);
+ isSecondTs = getIsSecondTs(props);
+ dateTimeFormatter = getDateTimeFormatter(props);
+ }
+
+ private boolean getIsSecondTs(final Properties props) {
+ return props.containsKey(TIMESTAMP_UNIT_KEY) && TIMESTAMP_SECOND_UNIT.equalsIgnoreCase(props.getProperty(TIMESTAMP_UNIT_KEY));
+ }
+
+ private DateTimeFormatter getDateTimeFormatter(final Properties props) {
+ return DateTimeFormatter.ofPattern(props.getProperty(DATE_TIME_PATTERN_KEY, DEFAULT_DATE_TIME_PATTERN));
}
@Override
@@ -68,10 +73,7 @@ public final class CosIdIntervalShardingAlgorithm extends AbstractIntervalShardi
return LocalDateTimeConvert.fromDate((Date) shardingValue, getZoneId());
}
if (shardingValue instanceof Long) {
- if (isSecondTs) {
- return LocalDateTimeConvert.fromTimestampSecond((Long) shardingValue, getZoneId());
- }
- return LocalDateTimeConvert.fromTimestamp((Long) shardingValue, getZoneId());
+ return isSecondTs ? LocalDateTimeConvert.fromTimestampSecond((Long) shardingValue, getZoneId()) : LocalDateTimeConvert.fromTimestamp((Long) shardingValue, getZoneId());
}
if (shardingValue instanceof String) {
return LocalDateTimeConvert.fromString((String) shardingValue, dateTimeFormatter);
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdSnowflakeIntervalShardingAlgorithm.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdSnowflakeIntervalShardingAlgorithm.java
similarity index 80%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdSnowflakeIntervalShardingAlgorithm.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdSnowflakeIntervalShardingAlgorithm.java
index b968040592d..b5e50bcb1b7 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdSnowflakeIntervalShardingAlgorithm.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdSnowflakeIntervalShardingAlgorithm.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.algorithm.sharding.cosid;
+package org.apache.shardingsphere.sharding.algorithm.sharding.cosid.interval;
import com.google.common.base.Strings;
import lombok.Getter;
@@ -31,9 +31,9 @@ import java.time.LocalDateTime;
import java.util.Properties;
/**
- * The algorithm parses the timestamp from snowflake-id as the sharding value of Interval-based time range sharding algorithm.
+ * Snowflake interval sharding algorithm with CosId.
*/
-public final class CosIdSnowflakeIntervalShardingAlgorithm extends AbstractIntervalShardingAlgorithm<Comparable<?>> {
+public final class CosIdSnowflakeIntervalShardingAlgorithm extends AbstractCosIdIntervalShardingAlgorithm<Comparable<?>> {
public static final String TYPE = CosIdAlgorithmConstants.TYPE_PREFIX + "INTERVAL_SNOWFLAKE";
@@ -48,12 +48,13 @@ public final class CosIdSnowflakeIntervalShardingAlgorithm extends AbstractInter
@Override
public void init(final Properties props) {
super.init(props);
- long epoch = CosIdSnowflakeKeyGenerateAlgorithm.DEFAULT_EPOCH;
- if (props.containsKey(EPOCH_KEY)) {
- epoch = Long.parseLong(props.getProperty(EPOCH_KEY));
- }
- snowflakeIdStateParser = new MillisecondSnowflakeIdStateParser(epoch,
- MillisecondSnowflakeId.DEFAULT_TIMESTAMP_BIT, MillisecondSnowflakeId.DEFAULT_MACHINE_BIT, MillisecondSnowflakeId.DEFAULT_SEQUENCE_BIT, getZoneId());
+ snowflakeIdStateParser = getSnowflakeIdStateParser(props);
+ }
+
+ private SnowflakeIdStateParser getSnowflakeIdStateParser(final Properties props) {
+ long epoch = props.containsKey(EPOCH_KEY) ? Long.parseLong(props.getProperty(EPOCH_KEY)) : CosIdSnowflakeKeyGenerateAlgorithm.DEFAULT_EPOCH;
+ return new MillisecondSnowflakeIdStateParser(
+ epoch, MillisecondSnowflakeId.DEFAULT_TIMESTAMP_BIT, MillisecondSnowflakeId.DEFAULT_MACHINE_BIT, MillisecondSnowflakeId.DEFAULT_SEQUENCE_BIT, getZoneId());
}
@Override
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdModShardingAlgorithm.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/mod/CosIdModShardingAlgorithm.java
similarity index 83%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdModShardingAlgorithm.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/mod/CosIdModShardingAlgorithm.java
index 504cf435a78..9fa686eb4ea 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdModShardingAlgorithm.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/mod/CosIdModShardingAlgorithm.java
@@ -15,8 +15,9 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.algorithm.sharding.cosid;
+package org.apache.shardingsphere.sharding.algorithm.sharding.cosid.mod;
+import com.google.common.base.Preconditions;
import lombok.Getter;
import lombok.Setter;
import me.ahoo.cosid.sharding.ModCycle;
@@ -29,7 +30,7 @@ import java.util.Collection;
import java.util.Properties;
/**
- * Modular sharding algorithm.
+ * Modular sharding algorithm with CosId.
*/
public final class CosIdModShardingAlgorithm<T extends Number & Comparable<T>> implements StandardShardingAlgorithm<T> {
@@ -45,12 +46,17 @@ public final class CosIdModShardingAlgorithm<T extends Number & Comparable<T>> i
@Override
public void init(final Properties props) {
- String divisorStr = PropertiesUtil.getRequiredValue(props, MODULO_KEY);
+ String divisorStr = getRequiredValue(props, MODULO_KEY);
int divisor = Integer.parseInt(divisorStr);
- String logicNamePrefix = PropertiesUtil.getRequiredValue(props, CosIdAlgorithmConstants.LOGIC_NAME_PREFIX_KEY);
+ String logicNamePrefix = getRequiredValue(props, CosIdAlgorithmConstants.LOGIC_NAME_PREFIX_KEY);
modCycle = new ModCycle<>(divisor, logicNamePrefix);
}
+ private String getRequiredValue(final Properties props, final String key) {
+ Preconditions.checkArgument(props.containsKey(key), "%s can not be null.", key);
+ return props.get(key).toString();
+ }
+
@Override
public String doSharding(final Collection<String> availableTargetNames, final PreciseShardingValue<T> shardingValue) {
return modCycle.sharding(shardingValue.getValue());
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm
index b67772106da..4a096518df9 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm
@@ -25,6 +25,6 @@ org.apache.shardingsphere.sharding.algorithm.sharding.datetime.IntervalShardingA
org.apache.shardingsphere.sharding.algorithm.sharding.classbased.ClassBasedShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.complex.ComplexInlineShardingAlgorithm
org.apache.shardingsphere.sharding.algorithm.sharding.hint.HintInlineShardingAlgorithm
-org.apache.shardingsphere.sharding.algorithm.sharding.cosid.CosIdModShardingAlgorithm
-org.apache.shardingsphere.sharding.algorithm.sharding.cosid.CosIdIntervalShardingAlgorithm
-org.apache.shardingsphere.sharding.algorithm.sharding.cosid.CosIdSnowflakeIntervalShardingAlgorithm
+org.apache.shardingsphere.sharding.algorithm.sharding.cosid.mod.CosIdModShardingAlgorithm
+org.apache.shardingsphere.sharding.algorithm.sharding.cosid.interval.CosIdIntervalShardingAlgorithm
+org.apache.shardingsphere.sharding.algorithm.sharding.cosid.interval.CosIdSnowflakeIntervalShardingAlgorithm
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/Arguments.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/Arguments.java
index e1702dd20eb..2520367f80d 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/Arguments.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/Arguments.java
@@ -25,13 +25,27 @@ import java.util.Arrays;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class Arguments {
+ /**
+ * Of arguments.
+ *
+ * @param arguments arguments
+ * @param <T> type of arguments
+ * @return arguments
+ */
@SafeVarargs
- static <T> T[] of(final T... arguments) {
+ public static <T> T[] of(final T... arguments) {
return arguments;
}
+ /**
+ * Of array element.
+ *
+ * @param arguments arguments
+ * @param <T> type of arguments
+ * @return iterable
+ */
@SafeVarargs
- static <T> Iterable<T[]> ofArrayElement(final T[]... arguments) {
+ public static <T> Iterable<T[]> ofArrayElement(final T[]... arguments) {
return Arrays.asList(arguments);
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/PropertiesUtilTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/PropertiesUtilTest.java
deleted file mode 100644
index 9b01819e3bd..00000000000
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/PropertiesUtilTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.sharding.algorithm.sharding.cosid;
-
-import org.junit.Test;
-
-import java.util.Properties;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
-public final class PropertiesUtilTest {
-
- @Test
- public void assertGetRequiredValue() {
- Properties props = new Properties();
- props.setProperty("sql-show", Boolean.TRUE.toString());
- assertThat(PropertiesUtil.getRequiredValue(props, "sql-show"), is(Boolean.TRUE.toString()));
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void assertGetInvalidRequiredValue() {
- PropertiesUtil.getRequiredValue(new Properties(), "sql-show");
- }
-
- @Test
- public void assertGetRequiredValueWhenValueIsInt() {
- Properties props = new Properties();
- props.put("key", 1);
- assertThat(PropertiesUtil.getRequiredValue(props, "key"), is("1"));
- }
-}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdIntervalShardingAlgorithmTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdIntervalShardingAlgorithmTest.java
similarity index 84%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdIntervalShardingAlgorithmTest.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdIntervalShardingAlgorithmTest.java
index f2d5f472143..97f4a51455c 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdIntervalShardingAlgorithmTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdIntervalShardingAlgorithmTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.algorithm.sharding.cosid;
+package org.apache.shardingsphere.sharding.algorithm.sharding.cosid.interval;
import com.google.common.collect.Range;
import lombok.RequiredArgsConstructor;
@@ -23,6 +23,7 @@ import me.ahoo.cosid.sharding.ExactCollection;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.datanode.DataNodeInfo;
import org.apache.shardingsphere.sharding.algorithm.constant.CosIdAlgorithmConstants;
+import org.apache.shardingsphere.sharding.algorithm.sharding.cosid.Arguments;
import org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue;
import org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue;
import org.apache.shardingsphere.sharding.factory.ShardingAlgorithmFactory;
@@ -165,22 +166,18 @@ public final class CosIdIntervalShardingAlgorithmTest {
}
@RunWith(Parameterized.class)
+ @RequiredArgsConstructor
public static class LocalDateTimePreciseValueDoShardingTest {
- private CosIdIntervalShardingAlgorithm shardingAlgorithm;
-
private final LocalDateTime dateTime;
private final String expected;
-
- public LocalDateTimePreciseValueDoShardingTest(final LocalDateTime dateTime, final String expected) {
- this.dateTime = dateTime;
- this.expected = expected;
- }
+
+ private CosIdIntervalShardingAlgorithm algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -191,28 +188,24 @@ public final class CosIdIntervalShardingAlgorithmTest {
@Test
public void assertDoSharding() {
PreciseShardingValue<Comparable<?>> shardingValue = new PreciseShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 6, '0'), dateTime);
- String actual = shardingAlgorithm.doSharding(ALL_NODES, shardingValue);
+ String actual = algorithm.doSharding(ALL_NODES, shardingValue);
assertThat(actual, is(expected));
}
}
@RunWith(Parameterized.class)
+ @RequiredArgsConstructor
public static class LocalDateTimeRangeValueDoShardingTest {
- private CosIdIntervalShardingAlgorithm shardingAlgorithm;
-
private final Range<LocalDateTime> rangeValue;
private final Collection<String> expected;
-
- public LocalDateTimeRangeValueDoShardingTest(final Range<LocalDateTime> rangeValue, final Collection<String> expected) {
- this.rangeValue = rangeValue;
- this.expected = expected;
- }
+
+ private CosIdIntervalShardingAlgorithm algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -223,28 +216,24 @@ public final class CosIdIntervalShardingAlgorithmTest {
@Test
public void assertDoSharding() {
RangeShardingValue shardingValue = new RangeShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 6, '0'), rangeValue);
- Collection<String> actual = shardingAlgorithm.doSharding(ALL_NODES, shardingValue);
+ Collection<String> actual = algorithm.doSharding(ALL_NODES, shardingValue);
assertThat(actual, is(expected));
}
}
@RunWith(Parameterized.class)
+ @RequiredArgsConstructor
public static class StringPreciseValueDoShardingTest {
- private CosIdIntervalShardingAlgorithm shardingAlgorithm;
-
private final String value;
private final String expected;
-
- public StringPreciseValueDoShardingTest(final String value, final String expected) {
- this.value = value;
- this.expected = expected;
- }
+
+ private CosIdIntervalShardingAlgorithm algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -255,28 +244,24 @@ public final class CosIdIntervalShardingAlgorithmTest {
@Test
public void assertDoSharding() {
PreciseShardingValue shardingValue = new PreciseShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 6, '0'), value);
- String actual = shardingAlgorithm.doSharding(ALL_NODES, shardingValue);
+ String actual = algorithm.doSharding(ALL_NODES, shardingValue);
assertThat(actual, is(expected));
}
}
@RunWith(Parameterized.class)
+ @RequiredArgsConstructor
public static class StringRangeValueDoShardingTest {
- private CosIdIntervalShardingAlgorithm shardingAlgorithm;
-
private final Range<String> rangeValue;
private final Collection<String> expected;
-
- public StringRangeValueDoShardingTest(final Range<String> rangeValue, final Collection<String> expected) {
- this.rangeValue = rangeValue;
- this.expected = expected;
- }
+
+ private CosIdIntervalShardingAlgorithm algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -287,28 +272,24 @@ public final class CosIdIntervalShardingAlgorithmTest {
@Test
public void assertDoSharding() {
RangeShardingValue shardingValue = new RangeShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 6, '0'), rangeValue);
- Collection<String> actual = shardingAlgorithm.doSharding(ALL_NODES, shardingValue);
+ Collection<String> actual = algorithm.doSharding(ALL_NODES, shardingValue);
assertThat(actual, is(expected));
}
}
@RunWith(Parameterized.class)
+ @RequiredArgsConstructor
public static class DatePreciseValueDoShardingTest {
- private CosIdIntervalShardingAlgorithm shardingAlgorithm;
-
private final Date value;
private final String expected;
-
- public DatePreciseValueDoShardingTest(final Date value, final String expected) {
- this.value = value;
- this.expected = expected;
- }
+
+ private CosIdIntervalShardingAlgorithm algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -319,7 +300,7 @@ public final class CosIdIntervalShardingAlgorithmTest {
@Test
public void assertDoSharding() {
PreciseShardingValue shardingValue = new PreciseShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 6, '0'), value);
- String actual = shardingAlgorithm.doSharding(ALL_NODES, shardingValue);
+ String actual = algorithm.doSharding(ALL_NODES, shardingValue);
assertThat(actual, is(expected));
}
}
@@ -332,11 +313,11 @@ public final class CosIdIntervalShardingAlgorithmTest {
private final Collection<String> expected;
- private CosIdIntervalShardingAlgorithm shardingAlgorithm;
+ private CosIdIntervalShardingAlgorithm algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -347,7 +328,7 @@ public final class CosIdIntervalShardingAlgorithmTest {
@Test
public void assertDoSharding() {
RangeShardingValue shardingValue = new RangeShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 6, '0'), rangeValue);
- assertThat(shardingAlgorithm.doSharding(ALL_NODES, shardingValue), is(expected));
+ assertThat(algorithm.doSharding(ALL_NODES, shardingValue), is(expected));
}
}
@@ -359,11 +340,11 @@ public final class CosIdIntervalShardingAlgorithmTest {
private final String expected;
- private CosIdIntervalShardingAlgorithm shardingAlgorithm;
+ private CosIdIntervalShardingAlgorithm algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -374,7 +355,7 @@ public final class CosIdIntervalShardingAlgorithmTest {
@Test
public void assertDoSharding() {
PreciseShardingValue shardingValue = new PreciseShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 6, '0'), value);
- assertThat(shardingAlgorithm.doSharding(ALL_NODES, shardingValue), is(expected));
+ assertThat(algorithm.doSharding(ALL_NODES, shardingValue), is(expected));
}
}
@@ -386,11 +367,11 @@ public final class CosIdIntervalShardingAlgorithmTest {
private final Collection<String> expected;
- private CosIdIntervalShardingAlgorithm shardingAlgorithm;
+ private CosIdIntervalShardingAlgorithm algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -401,7 +382,7 @@ public final class CosIdIntervalShardingAlgorithmTest {
@Test
public void assertDoSharding() {
RangeShardingValue shardingValue = new RangeShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 6, '0'), rangeValue);
- Collection<String> actual = shardingAlgorithm.doSharding(ALL_NODES, shardingValue);
+ Collection<String> actual = algorithm.doSharding(ALL_NODES, shardingValue);
assertThat(actual, is(expected));
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdSnowflakeIntervalShardingAlgorithmTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdSnowflakeIntervalShardingAlgorithmTest.java
similarity index 68%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdSnowflakeIntervalShardingAlgorithmTest.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdSnowflakeIntervalShardingAlgorithmTest.java
index 348da72e303..a3fe6ae2469 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdSnowflakeIntervalShardingAlgorithmTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/interval/CosIdSnowflakeIntervalShardingAlgorithmTest.java
@@ -15,17 +15,18 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.algorithm.sharding.cosid;
+package org.apache.shardingsphere.sharding.algorithm.sharding.cosid.interval;
import com.google.common.collect.Range;
import lombok.RequiredArgsConstructor;
import me.ahoo.cosid.snowflake.MillisecondSnowflakeId;
+import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.datanode.DataNodeInfo;
import org.apache.shardingsphere.sharding.algorithm.constant.CosIdAlgorithmConstants;
import org.apache.shardingsphere.sharding.algorithm.keygen.CosIdSnowflakeKeyGenerateAlgorithm;
import org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue;
import org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue;
-import org.junit.Before;
+import org.apache.shardingsphere.sharding.factory.ShardingAlgorithmFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -40,42 +41,24 @@ import static org.junit.Assert.assertThat;
public final class CosIdSnowflakeIntervalShardingAlgorithmTest {
- static CosIdSnowflakeIntervalShardingAlgorithm createShardingAlgorithm() {
- CosIdSnowflakeIntervalShardingAlgorithm result = new CosIdSnowflakeIntervalShardingAlgorithm();
- Properties props = createAlgorithmProperties();
- result.setProps(props);
- result.init(props);
- return result;
+ private static long convertToSnowflakeId(final LocalDateTime dateTime) {
+ long epochMilliseconds = dateTime.toInstant(CosIdIntervalShardingAlgorithmTest.ZONE_OFFSET_SHANGHAI).toEpochMilli();
+ long timeDiff = epochMilliseconds - CosIdSnowflakeKeyGenerateAlgorithm.DEFAULT_EPOCH;
+ return timeDiff << (MillisecondSnowflakeId.DEFAULT_SEQUENCE_BIT + MillisecondSnowflakeId.DEFAULT_MACHINE_BIT);
}
- private static Properties createAlgorithmProperties() {
+ private static Properties createProperties() {
Properties result = new Properties();
result.setProperty(CosIdIntervalShardingAlgorithm.ZONE_ID_KEY, "Asia/Shanghai");
result.setProperty(CosIdAlgorithmConstants.LOGIC_NAME_PREFIX_KEY, CosIdIntervalShardingAlgorithmTest.LOGIC_NAME_PREFIX);
- result.setProperty(CosIdIntervalShardingAlgorithm.DATE_TIME_LOWER_KEY,
- CosIdIntervalShardingAlgorithmTest.LOWER_DATE_TIME.format(CosIdIntervalShardingAlgorithm.DEFAULT_DATE_TIME_FORMATTER));
- result.setProperty(CosIdIntervalShardingAlgorithm.DATE_TIME_UPPER_KEY,
- CosIdIntervalShardingAlgorithmTest.UPPER_DATE_TIME.format(CosIdIntervalShardingAlgorithm.DEFAULT_DATE_TIME_FORMATTER));
+ result.setProperty(CosIdIntervalShardingAlgorithm.DATE_TIME_LOWER_KEY, CosIdIntervalShardingAlgorithmTest.LOWER_DATE_TIME.format(CosIdIntervalShardingAlgorithm.DEFAULT_DATE_TIME_FORMATTER));
+ result.setProperty(CosIdIntervalShardingAlgorithm.DATE_TIME_UPPER_KEY, CosIdIntervalShardingAlgorithmTest.UPPER_DATE_TIME.format(CosIdIntervalShardingAlgorithm.DEFAULT_DATE_TIME_FORMATTER));
result.setProperty(CosIdIntervalShardingAlgorithm.SHARDING_SUFFIX_FORMAT_KEY, CosIdIntervalShardingAlgorithmTest.SUFFIX_FORMATTER_STRING);
result.setProperty(CosIdIntervalShardingAlgorithm.INTERVAL_UNIT_KEY, "MONTHS");
result.put(CosIdIntervalShardingAlgorithm.INTERVAL_AMOUNT_KEY, 1);
return result;
}
- static long convertToSnowflakeId(final LocalDateTime dateTime) {
- long epochMilliseconds = dateTime.toInstant(CosIdIntervalShardingAlgorithmTest.ZONE_OFFSET_SHANGHAI).toEpochMilli();
- long timeDiff = epochMilliseconds - CosIdSnowflakeKeyGenerateAlgorithm.DEFAULT_EPOCH;
- return timeDiff << (MillisecondSnowflakeId.DEFAULT_SEQUENCE_BIT + MillisecondSnowflakeId.DEFAULT_MACHINE_BIT);
- }
-
- static Iterable<Object[]> preciseArgsProviderAsSnowflakeId() {
- return CosIdIntervalShardingAlgorithmTest.preciseArgsProvider(CosIdSnowflakeIntervalShardingAlgorithmTest::convertToSnowflakeId);
- }
-
- static Iterable<Object[]> rangeArgsProviderAsSnowflakeId() {
- return CosIdIntervalShardingAlgorithmTest.rangeArgsProvider(CosIdSnowflakeIntervalShardingAlgorithmTest::convertToSnowflakeId);
- }
-
@RunWith(Parameterized.class)
@RequiredArgsConstructor
public static class SnowflakeIdPreciseValueDoShardingTest {
@@ -84,23 +67,18 @@ public final class CosIdSnowflakeIntervalShardingAlgorithmTest {
private final String expected;
- private CosIdSnowflakeIntervalShardingAlgorithm shardingAlgorithm;
-
- @Before
- public void init() {
- shardingAlgorithm = createShardingAlgorithm();
- }
-
@Parameters
public static Iterable<Object[]> argsProvider() {
- return preciseArgsProviderAsSnowflakeId();
+ return CosIdIntervalShardingAlgorithmTest.preciseArgsProvider(CosIdSnowflakeIntervalShardingAlgorithmTest::convertToSnowflakeId);
}
@Test
public void assertDoSharding() {
+ CosIdSnowflakeIntervalShardingAlgorithm algorithm = (CosIdSnowflakeIntervalShardingAlgorithm) ShardingAlgorithmFactory.newInstance(
+ new ShardingSphereAlgorithmConfiguration("COSID_INTERVAL_SNOWFLAKE", createProperties()));
PreciseShardingValue shardingValue = new PreciseShardingValue<>(CosIdIntervalShardingAlgorithmTest.LOGIC_NAME,
CosIdIntervalShardingAlgorithmTest.COLUMN_NAME, new DataNodeInfo(CosIdIntervalShardingAlgorithmTest.LOGIC_NAME_PREFIX, 6, '0'), snowflakeId);
- String actual = shardingAlgorithm.doSharding(CosIdIntervalShardingAlgorithmTest.ALL_NODES, shardingValue);
+ String actual = algorithm.doSharding(CosIdIntervalShardingAlgorithmTest.ALL_NODES, shardingValue);
assertThat(actual, is(expected));
}
}
@@ -113,23 +91,18 @@ public final class CosIdSnowflakeIntervalShardingAlgorithmTest {
private final Collection<String> expected;
- private CosIdSnowflakeIntervalShardingAlgorithm shardingAlgorithm;
-
- @Before
- public void init() {
- shardingAlgorithm = createShardingAlgorithm();
- }
-
@Parameters
public static Iterable<Object[]> argsProvider() {
- return rangeArgsProviderAsSnowflakeId();
+ return CosIdIntervalShardingAlgorithmTest.rangeArgsProvider(CosIdSnowflakeIntervalShardingAlgorithmTest::convertToSnowflakeId);
}
@Test
public void assertDoSharding() {
+ CosIdSnowflakeIntervalShardingAlgorithm algorithm = (CosIdSnowflakeIntervalShardingAlgorithm) ShardingAlgorithmFactory.newInstance(
+ new ShardingSphereAlgorithmConfiguration("COSID_INTERVAL_SNOWFLAKE", createProperties()));
RangeShardingValue shardingValue = new RangeShardingValue<>(CosIdIntervalShardingAlgorithmTest.LOGIC_NAME,
CosIdIntervalShardingAlgorithmTest.COLUMN_NAME, new DataNodeInfo(CosIdIntervalShardingAlgorithmTest.LOGIC_NAME_PREFIX, 6, '0'), rangeValue);
- assertThat(shardingAlgorithm.doSharding(CosIdIntervalShardingAlgorithmTest.ALL_NODES, shardingValue), is(expected));
+ assertThat(algorithm.doSharding(CosIdIntervalShardingAlgorithmTest.ALL_NODES, shardingValue), is(expected));
}
}
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdModShardingAlgorithmTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/mod/CosIdModShardingAlgorithmTest.java
similarity index 94%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdModShardingAlgorithmTest.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/mod/CosIdModShardingAlgorithmTest.java
index a11febd9e09..993f51cf1a1 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/CosIdModShardingAlgorithmTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/test/java/org/apache/shardingsphere/sharding/algorithm/sharding/cosid/mod/CosIdModShardingAlgorithmTest.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.algorithm.sharding.cosid;
+package org.apache.shardingsphere.sharding.algorithm.sharding.cosid.mod;
import com.google.common.collect.Range;
import lombok.RequiredArgsConstructor;
@@ -23,6 +23,7 @@ import me.ahoo.cosid.sharding.ExactCollection;
import org.apache.shardingsphere.infra.config.algorithm.ShardingSphereAlgorithmConfiguration;
import org.apache.shardingsphere.infra.datanode.DataNodeInfo;
import org.apache.shardingsphere.sharding.algorithm.constant.CosIdAlgorithmConstants;
+import org.apache.shardingsphere.sharding.algorithm.sharding.cosid.Arguments;
import org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue;
import org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue;
import org.apache.shardingsphere.sharding.factory.ShardingAlgorithmFactory;
@@ -62,17 +63,17 @@ public final class CosIdModShardingAlgorithmTest {
return result;
}
- @RequiredArgsConstructor
@RunWith(Parameterized.class)
+ @RequiredArgsConstructor
public static class PreciseValueDoShardingTest {
private final long id;
- private CosIdModShardingAlgorithm<Long> shardingAlgorithm;
+ private CosIdModShardingAlgorithm<Long> algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -83,7 +84,7 @@ public final class CosIdModShardingAlgorithmTest {
@Test
public void assertDoSharding() {
PreciseShardingValue<Long> shardingValue = new PreciseShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 1, '0'), id);
- String actual = shardingAlgorithm.doSharding(ALL_NODES, shardingValue);
+ String actual = algorithm.doSharding(ALL_NODES, shardingValue);
String expected = LOGIC_NAME_PREFIX + (id % DIVISOR);
assertThat(actual, is(expected));
}
@@ -97,11 +98,11 @@ public final class CosIdModShardingAlgorithmTest {
private final Collection<String> expected;
- private CosIdModShardingAlgorithm<Long> shardingAlgorithm;
+ private CosIdModShardingAlgorithm<Long> algorithm;
@Before
public void init() {
- shardingAlgorithm = createShardingAlgorithm();
+ algorithm = createShardingAlgorithm();
}
@Parameters
@@ -153,7 +154,7 @@ public final class CosIdModShardingAlgorithmTest {
@Test
public void assertDoSharding() {
RangeShardingValue<Long> shardingValue = new RangeShardingValue<>(LOGIC_NAME, COLUMN_NAME, new DataNodeInfo(LOGIC_NAME_PREFIX, 1, '0'), rangeValue);
- Collection<String> actual = shardingAlgorithm.doSharding(ALL_NODES, shardingValue);
+ Collection<String> actual = algorithm.doSharding(ALL_NODES, shardingValue);
assertThat(actual, is(expected));
}
}