You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2020/08/19 06:28:06 UTC
[shardingsphere] branch master updated: Replace mock data source to
spring boot integrate tests (#6925)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 6c862b8 Replace mock data source to spring boot integrate tests (#6925)
6c862b8 is described below
commit 6c862b8f815e9b66480b879bc244595fda20f7cb
Author: Liang Zhang <te...@163.com>
AuthorDate: Wed Aug 19 14:25:32 2020 +0800
Replace mock data source to spring boot integrate tests (#6925)
* Use mocked data source on spring boot test
* Remove useless fixture of sharding spring boot test
* Move ShardingSpringBootConditionTest package
* Remove useless javadoc
* Rename ShadowSpringBootConditionTest
* Rename MasterSlaveSpringBootStarterTest
* Rename EncryptSpringBootStarterTest
---
...Test.java => EncryptSpringBootStarterTest.java} | 29 ++++---
.../EncryptSpringBootConditionTest.java | 3 +-
.../spring/boot/fixture/TestEncryptAlgorithm.java | 54 -------------
...che.shardingsphere.encrypt.spi.EncryptAlgorithm | 18 -----
.../test/resources/application-encrypt.properties | 7 +-
....java => MasterSlaveSpringBootStarterTest.java} | 29 +++----
.../MasterSlaveSpringBootConditionTest.java | 3 +-
...ndomMasterSlaveLoadBalanceAlgorithmFixture.java | 47 -----------
...masterslave.spi.MasterSlaveLoadBalanceAlgorithm | 18 -----
.../resources/application-masterslave.properties | 6 +-
.../boot/ShadowRuleSpringBootConfiguration.java | 6 +-
...nTest.java => ShadowSpringBootStarterTest.java} | 20 ++---
.../ShadowSpringBootConditionTest.java | 3 +-
.../test/resources/application-shadow.properties | 1 -
.../ShardingAlgorithmProvidedBeanRegistry.java | 8 +-
.../boot/ShardingRuleSpringBootConfiguration.java | 23 +++---
...hardingSpringBootAlgorithmProviderBeanTest.java | 55 -------------
.../spring/boot/ShardingSpringBootStarterTest.java | 72 +++++++++++++++++
.../ShardingSpringBootConditionTest.java | 3 +-
.../ExtendInlineShardingAlgorithmFixture.java | 90 ----------------------
.../IncrementKeyGenerateAlgorithmFixture.java | 53 -------------
...hardingsphere.sharding.spi.KeyGenerateAlgorithm | 18 -----
...e.shardingsphere.sharding.spi.ShardingAlgorithm | 19 -----
.../test/resources/application-sharding.properties | 19 +++--
.../pom.xml | 7 ++
.../spring/boot/type/SpringBootEncryptTest.java | 4 +-
.../boot/type/SpringBootMasterSlaveTest.java | 5 +-
.../spring/boot/type/SpringBootShardingTest.java | 5 +-
.../application-broadcast-table.properties | 23 +-----
.../test/resources/application-encrypt.properties | 7 +-
.../resources/application-masterslave.properties | 23 +-----
.../test/resources/application-shadow.properties | 15 +---
.../test/resources/application-sharding.properties | 22 +-----
33 files changed, 174 insertions(+), 541 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/EncryptSpringBootAlgorithmProviderBeanTest.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/EncryptSpringBootStarterTest.java
similarity index 66%
rename from shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/EncryptSpringBootAlgorithmProviderBeanTest.java
rename to shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/EncryptSpringBootStarterTest.java
index c29cda8..6aab00b 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/EncryptSpringBootAlgorithmProviderBeanTest.java
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/EncryptSpringBootStarterTest.java
@@ -17,34 +17,39 @@
package org.apache.shardingsphere.encrypt.spring.boot;
-import javax.annotation.Resource;
-import org.apache.shardingsphere.encrypt.spring.boot.fixture.TestEncryptAlgorithm;
+import org.apache.shardingsphere.encrypt.algorithm.AESEncryptAlgorithm;
+import org.apache.shardingsphere.encrypt.algorithm.config.AlgorithmProvidedEncryptRuleConfiguration;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import javax.annotation.Resource;
+
import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest(classes = EncryptSpringBootAlgorithmProviderBeanTest.class)
+@SpringBootTest(classes = EncryptSpringBootStarterTest.class)
@SpringBootApplication
@ActiveProfiles("encrypt")
-public class EncryptSpringBootAlgorithmProviderBeanTest {
+public class EncryptSpringBootStarterTest {
+
+ @Resource
+ private AESEncryptAlgorithm aesEncryptor;
@Resource
- private ApplicationContext applicationContext;
+ private AlgorithmProvidedEncryptRuleConfiguration encryptRuleConfiguration;
+
+ @Test
+ public void assertAesEncryptor() {
+ assertThat(aesEncryptor.getProps().getProperty("aes.key.value"), is("123456"));
+ }
@Test
- public void assertAlgorithmProviderBean() {
- Object algorithmBean = applicationContext.getBean("aes_encryptor");
- assertThat(algorithmBean.getClass().getName(), is(TestEncryptAlgorithm.class.getName()));
- TestEncryptAlgorithm algorithmFixture = (TestEncryptAlgorithm) algorithmBean;
- assertNotNull(algorithmFixture.getEnvironment());
+ public void assertEncryptRuleConfiguration() {
+ // TODO assert Encrypt Rule Configuration
}
}
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/EncryptSpringBootConditionTest.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/condition/EncryptSpringBootConditionTest.java
similarity index 94%
rename from shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/EncryptSpringBootConditionTest.java
rename to shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/condition/EncryptSpringBootConditionTest.java
index b6d6919..5dcf986 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/EncryptSpringBootConditionTest.java
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/condition/EncryptSpringBootConditionTest.java
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.encrypt.spring.boot;
+package org.apache.shardingsphere.encrypt.spring.boot.condition;
-import org.apache.shardingsphere.encrypt.spring.boot.condition.EncryptSpringBootCondition;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/fixture/TestEncryptAlgorithm.java b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/fixture/TestEncryptAlgorithm.java
deleted file mode 100644
index 66f70bf..0000000
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/java/org/apache/shardingsphere/encrypt/spring/boot/fixture/TestEncryptAlgorithm.java
+++ /dev/null
@@ -1,54 +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.encrypt.spring.boot.fixture;
-
-import java.util.Properties;
-import javax.annotation.Resource;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm;
-import org.springframework.core.env.Environment;
-
-@Getter
-@Setter
-public final class TestEncryptAlgorithm implements EncryptAlgorithm {
-
- private Properties props = new Properties();
-
- @Resource
- private Environment environment;
-
- @Override
- public void init() {
- }
-
- @Override
- public String encrypt(final Object plaintext) {
- return "encryptValue";
- }
-
- @Override
- public Object decrypt(final String ciphertext) {
- return "decryptValue";
- }
-
- @Override
- public String getType() {
- return "test";
- }
-}
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm
deleted file mode 100644
index 0f2ce36..0000000
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.encrypt.spi.EncryptAlgorithm
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.encrypt.spring.boot.fixture.TestEncryptAlgorithm
diff --git a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/resources/application-encrypt.properties b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/resources/application-encrypt.properties
index 58220d2..4510be5 100644
--- a/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/resources/application-encrypt.properties
+++ b/shardingsphere-features/shardingsphere-encrypt/shardingsphere-encrypt-spring/shardingsphere-encrypt-spring-boot-starter/src/test/resources/application-encrypt.properties
@@ -15,6 +15,9 @@
# limitations under the License.
#
-spring.shardingsphere.rules.encrypt.encryptors.aes_encryptor.type=test
-spring.shardingsphere.rules.encrypt.encryptors.aes_encryptor.props.aes.key.value=123456
+spring.shardingsphere.rules.encrypt.encryptors.aesEncryptor.type=AES
+spring.shardingsphere.rules.encrypt.encryptors.aesEncryptor.props.aes.key.value=123456
+spring.shardingsphere.rules.encrypt.tables.t_order.columns.pwd.cipher-column=pwd_cipher
+spring.shardingsphere.rules.encrypt.tables.t_order.columns.pwd.plain-column=pwd_plain
+spring.shardingsphere.rules.encrypt.tables.t_order.columns.pwd.encryptor-name=aesEncryptor
diff --git a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/MasterSlaveSpringBootAlgorithmProviderBeanTest.java b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/MasterSlaveSpringBootStarter [...]
similarity index 59%
rename from shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/MasterSlaveSpringBootAlgorithmProviderBeanTest.java
rename to shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/MasterSlaveSpringBootStarterTest.java
index fb1ff84..59e8f08 100644
--- a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/MasterSlaveSpringBootAlgorithmProviderBeanTest.java
+++ b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/MasterSlaveSpringBootStarterTest.java
@@ -17,35 +17,38 @@
package org.apache.shardingsphere.masterslave.spring.boot;
-import org.apache.shardingsphere.masterslave.spring.boot.fixture.RandomMasterSlaveLoadBalanceAlgorithmFixture;
+import org.apache.shardingsphere.masterslave.algorithm.RandomMasterSlaveLoadBalanceAlgorithm;
+import org.apache.shardingsphere.masterslave.api.config.MasterSlaveRuleConfiguration;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest(classes = MasterSlaveSpringBootAlgorithmProviderBeanTest.class)
+@SpringBootTest(classes = MasterSlaveSpringBootStarterTest.class)
@SpringBootApplication
@ActiveProfiles("masterslave")
-public class MasterSlaveSpringBootAlgorithmProviderBeanTest {
+public class MasterSlaveSpringBootStarterTest {
@Resource
- private ApplicationContext applicationContext;
+ private RandomMasterSlaveLoadBalanceAlgorithm random;
+
+ @Resource
+ private MasterSlaveRuleConfiguration masterSlaveRuleConfiguration;
+
+ @Test
+ public void assertLoadBalanceAlgorithm() {
+ assertTrue(random.getProps().isEmpty());
+ }
@Test
- public void assertAlgorithmProviderBean() {
- Object algorithmBean = applicationContext.getBean("fixture");
- assertThat(algorithmBean.getClass().getName(), is(RandomMasterSlaveLoadBalanceAlgorithmFixture.class.getName()));
- RandomMasterSlaveLoadBalanceAlgorithmFixture algorithmFixture = (RandomMasterSlaveLoadBalanceAlgorithmFixture) algorithmBean;
- assertNotNull(algorithmFixture.getEnvironment());
+ public void assertMasterSlaveRuleConfiguration() {
+ // TODO assert MasterSlave Rule Configuration
}
}
diff --git a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/MasterSlaveSpringBootConditionTest.java b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/condition/MasterSlaveSpringBootCondition [...]
similarity index 94%
rename from shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/MasterSlaveSpringBootConditionTest.java
rename to shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/condition/MasterSlaveSpringBootConditionTest.java
index cb5d53d..3a7d43a 100644
--- a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/MasterSlaveSpringBootConditionTest.java
+++ b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/condition/MasterSlaveSpringBootConditionTest.java
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.masterslave.spring.boot;
+package org.apache.shardingsphere.masterslave.spring.boot.condition;
-import org.apache.shardingsphere.masterslave.spring.boot.condition.MasterSlaveSpringBootCondition;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
diff --git a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/fixture/RandomMasterSlaveLoadBalanceAlgorithmFixture.java b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/fixture/RandomMasterSl [...]
deleted file mode 100644
index 82246e4..0000000
--- a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/java/org/apache/shardingsphere/masterslave/spring/boot/fixture/RandomMasterSlaveLoadBalanceAlgorithmFixture.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.masterslave.spring.boot.fixture;
-
-import java.util.List;
-import java.util.Properties;
-import java.util.concurrent.ThreadLocalRandom;
-import javax.annotation.Resource;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.shardingsphere.masterslave.spi.MasterSlaveLoadBalanceAlgorithm;
-import org.springframework.core.env.Environment;
-
-@Getter
-@Setter
-public final class RandomMasterSlaveLoadBalanceAlgorithmFixture implements MasterSlaveLoadBalanceAlgorithm {
-
- private Properties props = new Properties();
-
- @Resource
- private Environment environment;
-
- @Override
- public String getDataSource(final String name, final String masterDataSourceName, final List<String> slaveDataSourceNames) {
- return slaveDataSourceNames.get(ThreadLocalRandom.current().nextInt(slaveDataSourceNames.size()));
- }
-
- @Override
- public String getType() {
- return "FIXTURE";
- }
-}
diff --git a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.masterslave.spi.MasterSlaveLoadBalanceAlgorithm b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.masterslave.spi.MasterSlaveLoadBal [...]
deleted file mode 100644
index 7ec3ec8..0000000
--- a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.masterslave.spi.MasterSlaveLoadBalanceAlgorithm
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.masterslave.spring.boot.fixture.RandomMasterSlaveLoadBalanceAlgorithmFixture
diff --git a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/resources/application-masterslave.properties b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/resources/application-masterslave.properties
index 85a1888..067dd1f 100644
--- a/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/resources/application-masterslave.properties
+++ b/shardingsphere-features/shardingsphere-master-slave/shardingsphere-master-slave-spring/shardingsphere-master-slave-spring-boot-starter/src/test/resources/application-masterslave.properties
@@ -15,6 +15,8 @@
# limitations under the License.
#
+spring.shardingsphere.rules.master-slave.load-balancers.random.type=RANDOM
-spring.shardingsphere.rules.master-slave.load-balancers.fixture.type=FIXTURE
-
+spring.shardingsphere.rules.master-slave.data-sources.ds_ms.master-data-source-name=ds_master
+spring.shardingsphere.rules.master-slave.data-sources.ds_ms.slave-data-source-names=ds_slave_0,ds_slave_1
+spring.shardingsphere.rules.master-slave.data-sources.ds_ms.load-balancer-name=random
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/main/java/org/apache/shardingsphere/shadow/spring/boot/ShadowRuleSpringBootConfiguration.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/main/java/org/apache/shardingsphere/shadow/spring/boot/ShadowRuleSpringBootConfiguration.java
index b8aa9a0..6253720 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/main/java/org/apache/shardingsphere/shadow/spring/boot/ShadowRuleSpringBootConfiguration.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/main/java/org/apache/shardingsphere/shadow/spring/boot/ShadowRuleSpringBootConfiguration.java
@@ -51,11 +51,11 @@ public class ShadowRuleSpringBootConfiguration {
/**
* Shadow rule configuration.
*
- * @param yamlShadowRuleConfiguration YAML shadow rule configuration
+ * @param yamlShadowRuleConfig YAML shadow rule configuration
* @return shadow rule configuration
*/
@Bean
- public RuleConfiguration shadowRuleConfiguration(final YamlShadowRuleConfiguration yamlShadowRuleConfiguration) {
- return swapper.swapToObject(yamlShadowRuleConfiguration);
+ public RuleConfiguration shadowRuleConfiguration(final YamlShadowRuleConfiguration yamlShadowRuleConfig) {
+ return swapper.swapToObject(yamlShadowRuleConfig);
}
}
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/ShadowSpringBootAlgorithmProviderBeanTest.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/ShadowSpringBootStarterTest.java
similarity index 63%
rename from shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/ShadowSpringBootAlgorithmProviderBeanTest.java
rename to shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/ShadowSpringBootStarterTest.java
index a41d68c..25b29ce 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/ShadowSpringBootAlgorithmProviderBeanTest.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/ShadowSpringBootStarterTest.java
@@ -17,38 +17,32 @@
package org.apache.shardingsphere.shadow.spring.boot;
-import org.apache.shardingsphere.shadow.yaml.config.YamlShadowRuleConfiguration;
+import org.apache.shardingsphere.shadow.api.config.ShadowRuleConfiguration;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
-
import java.util.Collections;
-import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest(classes = ShadowSpringBootAlgorithmProviderBeanTest.class)
+@SpringBootTest(classes = ShadowSpringBootStarterTest.class)
@SpringBootApplication
@ActiveProfiles("shadow")
-public class ShadowSpringBootAlgorithmProviderBeanTest {
+public class ShadowSpringBootStarterTest {
@Resource
- private ApplicationContext applicationContext;
+ private ShadowRuleConfiguration shadowRuleConfiguration;
@Test
- public void assertAlgorithmProviderBean() {
- Object algorithmBean = applicationContext.getBean("shadow");
- assertThat(algorithmBean.getClass(), equalTo(YamlShadowRuleConfiguration.class));
- YamlShadowRuleConfiguration actual = YamlShadowRuleConfiguration.class.cast(algorithmBean);
- assertThat(actual.getColumn(), is("shadow"));
- assertThat(actual.getShadowMappings(), is(Collections.singletonMap("ds", "shadow_ds")));
+ public void assertShadowRuleConfiguration() {
+ assertThat(shadowRuleConfiguration.getColumn(), is("shadow"));
+ assertThat(shadowRuleConfiguration.getShadowMappings(), is(Collections.singletonMap("ds", "shadow_ds")));
}
}
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/ShadowSpringBootConditionTest.java b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/condition/ShadowSpringBootConditionTest.java
similarity index 94%
rename from shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/ShadowSpringBootConditionTest.java
rename to shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/condition/ShadowSpringBootConditionTest.java
index 0b767b1..4858bc9 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/ShadowSpringBootConditionTest.java
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/java/org/apache/shardingsphere/shadow/spring/boot/condition/ShadowSpringBootConditionTest.java
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.shadow.spring.boot;
+package org.apache.shardingsphere.shadow.spring.boot.condition;
-import org.apache.shardingsphere.shadow.spring.boot.condition.ShadowSpringBootCondition;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
diff --git a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow.properties b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow.properties
index 6d3b4d3..bb667e3 100644
--- a/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow.properties
+++ b/shardingsphere-features/shardingsphere-shadow/shardingsphere-shadow-spring/shardingsphere-shadow-spring-boot-starter/src/test/resources/application-shadow.properties
@@ -17,4 +17,3 @@
spring.shardingsphere.rules.shadow.column=shadow
spring.shardingsphere.rules.shadow.shadowMappings.ds=shadow_ds
-
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/main/java/org/apache/shardingsphere/sharding/spring/boot/ShardingAlgorithmProvidedBeanRegistry.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/main/java/org/apache/shardingsphere/sharding/spring/boot/ShardingAlgorithmProvidedBeanRegistry.java
index d2ff180..01d963f 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/main/java/org/apache/shardingsphere/sharding/spring/boot/ShardingAlgorithmProvidedBeanRegistry.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/main/java/org/apache/shardingsphere/sharding/spring/boot/ShardingAlgorithmProvidedBeanRegistry.java
@@ -20,7 +20,6 @@ package org.apache.shardingsphere.sharding.spring.boot;
import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
import org.apache.shardingsphere.sharding.spi.ShardingAlgorithm;
import org.apache.shardingsphere.spring.boot.registry.AbstractAlgorithmProvidedBeanRegistry;
-import org.springframework.beans.BeansException;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.core.env.Environment;
@@ -33,17 +32,12 @@ public final class ShardingAlgorithmProvidedBeanRegistry extends AbstractAlgorit
private static final String KEY_GENERATORS = "spring.shardingsphere.rules.sharding.key-generators.";
- /**
- * Instantiates a new Sharding algorithm provided bean registry.
- *
- * @param environment environment
- */
public ShardingAlgorithmProvidedBeanRegistry(final Environment environment) {
super(environment);
}
@Override
- public void postProcessBeanDefinitionRegistry(final BeanDefinitionRegistry registry) throws BeansException {
+ public void postProcessBeanDefinitionRegistry(final BeanDefinitionRegistry registry) {
registerBean(SHARDING_ALGORITHMS, ShardingAlgorithm.class, registry);
registerBean(KEY_GENERATORS, KeyGenerateAlgorithm.class, registry);
}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/main/java/org/apache/shardingsphere/sharding/spring/boot/ShardingRuleSpringBootConfiguration.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/main/java/org/apache/shardingsphere/sharding/spring/boot/ShardingRuleSpringBootConfiguration.java
index a8f3f60..118c84c 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/main/java/org/apache/shardingsphere/sharding/spring/boot/ShardingRuleSpringBootConfiguration.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/main/java/org/apache/shardingsphere/sharding/spring/boot/ShardingRuleSpringBootConfiguration.java
@@ -17,9 +17,6 @@
package org.apache.shardingsphere.sharding.spring.boot;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Optional;
import org.apache.shardingsphere.infra.config.RuleConfiguration;
import org.apache.shardingsphere.sharding.algorithm.config.AlgorithmProvidedShardingRuleConfiguration;
import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
@@ -35,6 +32,10 @@ import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Optional;
+
/**
* Sharding rule configuration for spring boot.
*/
@@ -46,7 +47,7 @@ public class ShardingRuleSpringBootConfiguration {
private final ShardingRuleAlgorithmProviderConfigurationYamlSwapper swapper = new ShardingRuleAlgorithmProviderConfigurationYamlSwapper();
/**
- * Sharding YAML rule spring boot configuration.
+ * Create sharding YAML rule spring boot configuration bean.
*
* @return YAML rule configuration
*/
@@ -57,12 +58,12 @@ public class ShardingRuleSpringBootConfiguration {
}
/**
- * Sharding rule configuration.
+ * Create sharding rule configuration bean.
*
* @param yamlShardingRuleConfiguration YAML sharding rule configuration
* @param shardingAlgorithmProvider sharding algorithm provider
* @param keyGenerateAlgorithmProvider key generate algorithm provider
- * @return the rule configuration
+ * @return sharding rule configuration
*/
@Bean
public RuleConfiguration shardingRuleConfiguration(final YamlShardingRuleConfiguration yamlShardingRuleConfiguration,
@@ -70,14 +71,14 @@ public class ShardingRuleSpringBootConfiguration {
final ObjectProvider<Map<String, KeyGenerateAlgorithm>> keyGenerateAlgorithmProvider) {
Map<String, ShardingAlgorithm> shardingAlgorithmMap = Optional.ofNullable(shardingAlgorithmProvider.getIfAvailable()).orElse(Collections.emptyMap());
Map<String, KeyGenerateAlgorithm> keyGenerateAlgorithmMap = Optional.ofNullable(keyGenerateAlgorithmProvider.getIfAvailable()).orElse(Collections.emptyMap());
- AlgorithmProvidedShardingRuleConfiguration ruleConfiguration = swapper.swapToObject(yamlShardingRuleConfiguration);
- ruleConfiguration.setShardingAlgorithms(shardingAlgorithmMap);
- ruleConfiguration.setKeyGenerators(keyGenerateAlgorithmMap);
- return ruleConfiguration;
+ AlgorithmProvidedShardingRuleConfiguration result = swapper.swapToObject(yamlShardingRuleConfiguration);
+ result.setShardingAlgorithms(shardingAlgorithmMap);
+ result.setKeyGenerators(keyGenerateAlgorithmMap);
+ return result;
}
/**
- * Sharding algorithm provided bean registry.
+ * Create sharding algorithm provided bean registry.
*
* @param environment environment
* @return sharding algorithm provided bean registry
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/ShardingSpringBootAlgorithmProviderBeanTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/ShardingSpringBootAlgorithmProviderBeanTest.java
deleted file mode 100644
index 73fc229..0000000
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/ShardingSpringBootAlgorithmProviderBeanTest.java
+++ /dev/null
@@ -1,55 +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.spring.boot;
-
-import javax.annotation.Resource;
-import org.apache.shardingsphere.sharding.spring.boot.fixture.ExtendInlineShardingAlgorithmFixture;
-import org.apache.shardingsphere.sharding.spring.boot.fixture.IncrementKeyGenerateAlgorithmFixture;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.ApplicationContext;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest(classes = ShardingSpringBootAlgorithmProviderBeanTest.class)
-@SpringBootApplication
-@ActiveProfiles("sharding")
-public class ShardingSpringBootAlgorithmProviderBeanTest {
-
- @Resource
- private ApplicationContext applicationContext;
-
- @Test
- public void assertAlgorithmProviderBean() {
- Object algorithmBean = applicationContext.getBean("database_inline");
- assertThat(algorithmBean.getClass().getName(), is(ExtendInlineShardingAlgorithmFixture.class.getName()));
- ExtendInlineShardingAlgorithmFixture algorithmFixture = (ExtendInlineShardingAlgorithmFixture) algorithmBean;
- assertNotNull(algorithmFixture.getEnvironment());
- Object incrementKeyBean = applicationContext.getBean("incrementKey");
- assertThat(incrementKeyBean.getClass().getName(), is(IncrementKeyGenerateAlgorithmFixture.class.getName()));
- IncrementKeyGenerateAlgorithmFixture keyGenerateAlgorithmFixture = (IncrementKeyGenerateAlgorithmFixture) incrementKeyBean;
- assertNotNull(keyGenerateAlgorithmFixture.getEnvironment());
- }
-}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/ShardingSpringBootStarterTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/ShardingSpringBootStarterTest.java
new file mode 100644
index 0000000..c7203b0
--- /dev/null
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/ShardingSpringBootStarterTest.java
@@ -0,0 +1,72 @@
+/*
+ * 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.spring.boot;
+
+import org.apache.shardingsphere.sharding.algorithm.config.AlgorithmProvidedShardingRuleConfiguration;
+import org.apache.shardingsphere.sharding.algorithm.keygen.SnowflakeKeyGenerateAlgorithm;
+import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineShardingAlgorithm;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+
+import javax.annotation.Resource;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@SpringBootTest(classes = ShardingSpringBootStarterTest.class)
+@SpringBootApplication
+@ActiveProfiles("sharding")
+public class ShardingSpringBootStarterTest {
+
+ @Resource
+ private InlineShardingAlgorithm databaseShardingAlgorithm;
+
+ @Resource
+ private InlineShardingAlgorithm orderTableShardingAlgorithm;
+
+ @Resource
+ private InlineShardingAlgorithm orderItemTableShardingAlgorithm;
+
+ @Resource
+ private SnowflakeKeyGenerateAlgorithm keyGenerator;
+
+ @Resource
+ private AlgorithmProvidedShardingRuleConfiguration shardingRuleConfiguration;
+
+ @Test
+ public void assertShardingAlgorithm() {
+ assertThat(databaseShardingAlgorithm.getProps().getProperty("algorithm.expression"), is("ds_$->{user_id % 2}"));
+ assertThat(orderTableShardingAlgorithm.getProps().getProperty("algorithm.expression"), is("t_order_$->{order_id % 2}"));
+ assertThat(orderItemTableShardingAlgorithm.getProps().getProperty("algorithm.expression"), is("t_order_item_$->{order_id % 2}"));
+ }
+
+ @Test
+ public void assertKeyGenerateAlgorithm() {
+ assertThat(keyGenerator.getProps().getProperty("worker.id"), is("123"));
+ }
+
+ @Test
+ public void assertShardingConfiguration() {
+ // TODO assert sharding configuration
+ }
+}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/ShardingSpringBootConditionTest.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/condition/ShardingSpringBootConditionTest.java
similarity index 94%
rename from shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/ShardingSpringBootConditionTest.java
rename to shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/condition/ShardingSpringBootConditionTest.java
index 72364a0..73d8985 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/ShardingSpringBootConditionTest.java
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/condition/ShardingSpringBootConditionTest.java
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.sharding.spring.boot;
+package org.apache.shardingsphere.sharding.spring.boot.condition;
-import org.apache.shardingsphere.sharding.spring.boot.condition.ShardingSpringBootCondition;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/fixture/ExtendInlineShardingAlgorithmFixture.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/fixture/ExtendInlineShardingAlgorithmFixture.java
deleted file mode 100644
index e8c1b84..0000000
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/fixture/ExtendInlineShardingAlgorithmFixture.java
+++ /dev/null
@@ -1,90 +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.spring.boot.fixture;
-
-import com.google.common.base.Preconditions;
-import groovy.lang.Closure;
-import groovy.util.Expando;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineExpressionParser;
-import org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue;
-import org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue;
-import org.apache.shardingsphere.sharding.api.sharding.standard.StandardShardingAlgorithm;
-import org.springframework.core.env.Environment;
-
-import javax.annotation.Resource;
-import java.util.Collection;
-import java.util.Properties;
-
-public final class ExtendInlineShardingAlgorithmFixture implements StandardShardingAlgorithm<Comparable<?>> {
-
- private static final String ALGORITHM_EXPRESSION_KEY = "algorithm.expression";
-
- private static final String ALLOW_RANGE_QUERY_KEY = "allow.range.query.with.inline.sharding";
-
- private Closure<?> closure;
-
- private boolean allowRangeQuery;
-
- @Resource
- @Getter
- private Environment environment;
-
- @Getter
- @Setter
- private Properties props = new Properties();
-
- @Override
- public void init() {
- closure = createClosure();
- allowRangeQuery = isAllowRangeQuery();
- }
-
- private Closure<?> createClosure() {
- String expression = props.getProperty(ALGORITHM_EXPRESSION_KEY);
- Preconditions.checkNotNull(expression, "Inline sharding algorithm expression cannot be null.");
- String algorithmExpression = InlineExpressionParser.handlePlaceHolder(expression.trim());
- Closure<?> result = new InlineExpressionParser(algorithmExpression).evaluateClosure().rehydrate(new Expando(), null, null);
- result.setResolveStrategy(Closure.DELEGATE_ONLY);
- return result;
- }
-
- private boolean isAllowRangeQuery() {
- return Boolean.parseBoolean(props.getOrDefault(ALLOW_RANGE_QUERY_KEY, Boolean.FALSE.toString()).toString());
- }
-
- @Override
- public String doSharding(final Collection<String> availableTargetNames, final PreciseShardingValue<Comparable<?>> shardingValue) {
- closure.setProperty(shardingValue.getColumnName(), shardingValue.getValue());
- return closure.call().toString();
- }
-
- @Override
- public Collection<String> doSharding(final Collection<String> availableTargetNames, final RangeShardingValue<Comparable<?>> shardingValue) {
- if (allowRangeQuery) {
- return availableTargetNames;
- }
- throw new UnsupportedOperationException("Since the property of `allow.range.query.with.inline.sharding` is false, inline sharding algorithm can not tackle with range query.");
- }
-
- @Override
- public String getType() {
- return "EXTEND_INLINE";
- }
-}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/fixture/IncrementKeyGenerateAlgorithmFixture.java b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/fixture/IncrementKeyGenerateAlgorithmFixture.java
deleted file mode 100644
index ef1a640..0000000
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/java/org/apache/shardingsphere/sharding/spring/boot/fixture/IncrementKeyGenerateAlgorithmFixture.java
+++ /dev/null
@@ -1,53 +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.spring.boot.fixture;
-
-import java.util.Properties;
-import java.util.concurrent.atomic.AtomicInteger;
-import javax.annotation.Resource;
-import lombok.Getter;
-import lombok.Setter;
-import org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm;
-import org.springframework.core.env.Environment;
-
-public final class IncrementKeyGenerateAlgorithmFixture implements KeyGenerateAlgorithm {
-
- private final AtomicInteger count = new AtomicInteger();
-
- @Getter
- @Setter
- private Properties props = new Properties();
-
- @Resource
- @Getter
- private Environment environment;
-
- @Override
- public void init() {
- }
-
- @Override
- public Comparable<?> generateKey() {
- return count.incrementAndGet();
- }
-
- @Override
- public String getType() {
- return "EXTEND_INCREMENT";
- }
-}
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm
deleted file mode 100644
index b02c23a..0000000
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.KeyGenerateAlgorithm
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.shardingsphere.sharding.spring.boot.fixture.IncrementKeyGenerateAlgorithmFixture
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm
deleted file mode 100644
index 39b5bff..0000000
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/META-INF/services/org.apache.shardingsphere.sharding.spi.ShardingAlgorithm
+++ /dev/null
@@ -1,19 +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.
-#
-
-org.apache.shardingsphere.sharding.spring.boot.fixture.ExtendInlineShardingAlgorithmFixture
-
diff --git a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/application-sharding.properties b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/application-sharding.properties
index 773e5a9..c4eadf6 100644
--- a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/application-sharding.properties
+++ b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-spring/shardingsphere-sharding-spring-boot-starter/src/test/resources/application-sharding.properties
@@ -15,13 +15,16 @@
# limitations under the License.
#
-spring.shardingsphere.rules.sharding.sharding-algorithms.database_inline.type=EXTEND_INLINE
-spring.shardingsphere.rules.sharding.sharding-algorithms.database_inline.props.algorithm.expression=ds_$->{user_id % 2}
-spring.shardingsphere.rules.sharding.sharding-algorithms.t_order_inline.type=EXTEND_INLINE
-spring.shardingsphere.rules.sharding.sharding-algorithms.t_order_inline.props.algorithm.expression=t_order_$->{order_id % 2}
-spring.shardingsphere.rules.sharding.sharding-algorithms.t_order_item_inline.type=EXTEND_INLINE
-spring.shardingsphere.rules.sharding.sharding-algorithms.t_order_item_inline.props.algorithm.expression=t_order_item_$->{order_id % 2}
+spring.shardingsphere.rules.sharding.sharding-algorithms.databaseShardingAlgorithm.type=INLINE
+spring.shardingsphere.rules.sharding.sharding-algorithms.databaseShardingAlgorithm.props.algorithm.expression=ds_$->{user_id % 2}
-spring.shardingsphere.rules.sharding.key-generators.incrementKey.type=EXTEND_INCREMENT
-spring.shardingsphere.rules.sharding.key-generators.incrementKey.props.worker.id=123
+spring.shardingsphere.rules.sharding.sharding-algorithms.orderTableShardingAlgorithm.type=INLINE
+spring.shardingsphere.rules.sharding.sharding-algorithms.orderTableShardingAlgorithm.props.algorithm.expression=t_order_$->{order_id % 2}
+spring.shardingsphere.rules.sharding.sharding-algorithms.orderItemTableShardingAlgorithm.type=INLINE
+spring.shardingsphere.rules.sharding.sharding-algorithms.orderItemTableShardingAlgorithm.props.algorithm.expression=t_order_item_$->{order_id % 2}
+
+spring.shardingsphere.rules.sharding.key-generators.keyGenerator.type=SNOWFLAKE
+spring.shardingsphere.rules.sharding.key-generators.keyGenerator.props.worker.id=123
+
+# TODO add spring.shardingsphere.rules.sharding.xxx
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/pom.xml b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/pom.xml
index dab72bf..2f26129 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/pom.xml
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/pom.xml
@@ -59,6 +59,13 @@
</dependency>
<dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-test</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootEncryptTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootEncryptTest.java
index 600f11c..d3b052c 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootEncryptTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootEncryptTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.spring.boot.type;
-import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
import org.apache.shardingsphere.encrypt.rule.EncryptRule;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
@@ -53,8 +52,7 @@ public class SpringBootEncryptTest {
@Test
public void assertWithEncryptDataSource() {
assertTrue(dataSource instanceof ShardingSphereDataSource);
- BasicDataSource basicDataSource = (BasicDataSource) ((ShardingSphereDataSource) dataSource).getDataSourceMap().values().iterator().next();
- assertThat(basicDataSource.getMaxTotal(), is(100));
+ assertThat(((ShardingSphereDataSource) dataSource).getDataSourceMap().size(), is(1));
}
@Test
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootMasterSlaveTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootMasterSlaveTest.java
index 0bdaa28..3fe2756 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootMasterSlaveTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootMasterSlaveTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.spring.boot.type;
-import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.masterslave.rule.MasterSlaveDataSourceRule;
@@ -49,9 +48,7 @@ public class SpringBootMasterSlaveTest {
@Test
public void assertDataSource() {
assertTrue(dataSource instanceof ShardingSphereDataSource);
- for (DataSource each : ((ShardingSphereDataSource) dataSource).getDataSourceMap().values()) {
- assertThat(((BasicDataSource) each).getMaxTotal(), is(100));
- }
+ assertThat(((ShardingSphereDataSource) dataSource).getDataSourceMap().size(), is(3));
Collection<ShardingSphereRule> rules = ((ShardingSphereDataSource) dataSource).getSchemaContexts().getDefaultSchemaContext().getSchema().getRules();
assertThat(rules.size(), is(1));
assertMasterSlaveRule((MasterSlaveRule) rules.iterator().next());
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootShardingTest.java b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootShardingTest.java
index 3b8deea..2994c3f 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootShardingTest.java
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/java/org/apache/shardingsphere/spring/boot/type/SpringBootShardingTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.spring.boot.type;
-import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource;
import org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.datanode.DataNode;
@@ -53,9 +52,7 @@ public class SpringBootShardingTest {
public void assertWithShardingSphereDataSource() {
assertThat(dataSource, instanceOf(ShardingSphereDataSource.class));
SchemaContexts schemaContexts = ((ShardingSphereDataSource) dataSource).getSchemaContexts();
- for (DataSource each : ((ShardingSphereDataSource) dataSource).getDataSourceMap().values()) {
- assertThat(((BasicDataSource) each).getMaxTotal(), is(100));
- }
+ assertThat(((ShardingSphereDataSource) dataSource).getDataSourceMap().size(), is(3));
assertTrue(schemaContexts.getProps().<Boolean>getValue(ConfigurationPropertyKey.SQL_SHOW));
assertTrue(schemaContexts.getProps().getValue(ConfigurationPropertyKey.SQL_SHOW));
assertThat(schemaContexts.getProps().getValue(ConfigurationPropertyKey.EXECUTOR_SIZE), is(100));
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-broadcast-table.properties b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-broadcast-table.properties
index 45d54d8..50a8fa9 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-broadcast-table.properties
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-broadcast-table.properties
@@ -16,26 +16,9 @@
#
spring.shardingsphere.datasource.names=ds,ds_${0..1}
-spring.shardingsphere.datasource.ds.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds.url=jdbc:h2:mem:ds;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds.username=sa
-spring.shardingsphere.datasource.ds.password=
-spring.shardingsphere.datasource.ds.max-total=100
-
-spring.shardingsphere.datasource.ds_0.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds_0.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds_0.url=jdbc:h2:mem:ds_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds_0.username=sa
-spring.shardingsphere.datasource.ds_0.password=
-spring.shardingsphere.datasource.ds_0.max-total=100
-
-spring.shardingsphere.datasource.ds_1.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds_1.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds_1.url=jdbc:h2:mem:ds_1;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds_1.username=sa
-spring.shardingsphere.datasource.ds_1.password=
-spring.shardingsphere.datasource.ds_1.max-total=100
+spring.shardingsphere.datasource.ds.type=org.apache.shardingsphere.test.MockedDataSource
+spring.shardingsphere.datasource.ds_0.type=org.apache.shardingsphere.test.MockedDataSource
+spring.shardingsphere.datasource.ds_1.type=org.apache.shardingsphere.test.MockedDataSource
spring.shardingsphere.rules.sharding.broadcast-tables=t_config
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-encrypt.properties b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-encrypt.properties
index 4d2dc6d..340c349 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-encrypt.properties
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-encrypt.properties
@@ -17,12 +17,7 @@
spring.shardingsphere.datasource.name=ds
-spring.shardingsphere.datasource.ds.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds.url=jdbc:h2:mem:ds;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds.username=sa
-spring.shardingsphere.datasource.ds.password=
-spring.shardingsphere.datasource.ds.max-total=100
+spring.shardingsphere.datasource.ds.type=org.apache.shardingsphere.test.MockedDataSource
spring.shardingsphere.rules.encrypt.tables.t_order.columns.user_id.cipher-column=user_encrypt
spring.shardingsphere.rules.encrypt.tables.t_order.columns.user_id.assisted-query-column=user_assisted
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-masterslave.properties b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-masterslave.properties
index 31b4162..142bedf 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-masterslave.properties
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-masterslave.properties
@@ -18,26 +18,9 @@
spring.example.datasource.name=ds_master
spring.shardingsphere.datasource.names=${spring.example.datasource.name},ds_slave_${0..1}
-spring.shardingsphere.datasource.ds_master.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds_master.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds_master.url=jdbc:h2:mem:ds_master;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds_master.username=root
-spring.shardingsphere.datasource.ds_master.password=
-spring.shardingsphere.datasource.ds_master.max-total=100
-
-spring.shardingsphere.datasource.ds_slave_0.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds_slave_0.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds_slave_0.url=jdbc:h2:mem:demo_ds_slave_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds_slave_0.username=root
-spring.shardingsphere.datasource.ds_slave_0.password=
-spring.shardingsphere.datasource.ds_slave_0.max-total=100
-
-spring.shardingsphere.datasource.ds_slave_1.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds_slave_1.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds_slave_1.url=jdbc:h2:mem:demo_ds_slave_1;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds_slave_1.username=root
-spring.shardingsphere.datasource.ds_slave_1.password=
-spring.shardingsphere.datasource.ds_slave_1.max-total=100
+spring.shardingsphere.datasource.ds_master.type=org.apache.shardingsphere.test.MockedDataSource
+spring.shardingsphere.datasource.ds_slave_0.type=org.apache.shardingsphere.test.MockedDataSource
+spring.shardingsphere.datasource.ds_slave_1.type=org.apache.shardingsphere.test.MockedDataSource
spring.shardingsphere.rules.master-slave.data-sources.ds_ms.master-data-source-name=ds_master
spring.shardingsphere.rules.master-slave.data-sources.ds_ms.slave-data-source-names=ds_slave_0,ds_slave_1
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-shadow.properties b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-shadow.properties
index 00c3b98..894a141 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-shadow.properties
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-shadow.properties
@@ -17,19 +17,8 @@
spring.shardingsphere.datasource.names=ds,shadow_ds
-spring.shardingsphere.datasource.ds.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds.url=jdbc:h2:mem:ds;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds.username=sa
-spring.shardingsphere.datasource.ds.password=
-spring.shardingsphere.datasource.ds.max-total=100
-
-spring.shardingsphere.datasource.shadow_ds.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.shadow_ds.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.shadow_ds.url=jdbc:h2:mem:ds;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.shadow_ds.username=sa
-spring.shardingsphere.datasource.shadow_ds.password=
-spring.shardingsphere.datasource.shadow_ds.max-total=99
+spring.shardingsphere.datasource.ds.type=org.apache.shardingsphere.test.MockedDataSource
+spring.shardingsphere.datasource.shadow_ds.type=org.apache.shardingsphere.test.MockedDataSource
spring.shardingsphere.rules.shadow.column=is_shadow
spring.shardingsphere.rules.shadow.shadow-mappings.ds=shadow_ds
diff --git a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-sharding.properties b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-sharding.properties
index 9716c80..e4acfb6 100644
--- a/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-sharding.properties
+++ b/shardingsphere-jdbc/shardingsphere-jdbc-spring/shardingsphere-jdbc-core-spring/shardingsphere-jdbc-core-spring-boot-starter/src/test/resources/application-sharding.properties
@@ -16,26 +16,10 @@
#
spring.shardingsphere.datasource.names=ds,ds_${0..1}
-spring.shardingsphere.datasource.ds.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds.url=jdbc:h2:mem:ds;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds.username=sa
-spring.shardingsphere.datasource.ds.password=
-spring.shardingsphere.datasource.ds.max-total=100
-spring.shardingsphere.datasource.ds_0.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds_0.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds_0.url=jdbc:h2:mem:ds_0;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds_0.username=sa
-spring.shardingsphere.datasource.ds_0.password=
-spring.shardingsphere.datasource.ds_0.max-total=100
-
-spring.shardingsphere.datasource.ds_1.type=org.apache.commons.dbcp2.BasicDataSource
-spring.shardingsphere.datasource.ds_1.driver-class-name=org.h2.Driver
-spring.shardingsphere.datasource.ds_1.url=jdbc:h2:mem:ds_1;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MYSQL
-spring.shardingsphere.datasource.ds_1.username=sa
-spring.shardingsphere.datasource.ds_1.password=
-spring.shardingsphere.datasource.ds_1.max-total=100
+spring.shardingsphere.datasource.ds.type=org.apache.shardingsphere.test.MockedDataSource
+spring.shardingsphere.datasource.ds_0.type=org.apache.shardingsphere.test.MockedDataSource
+spring.shardingsphere.datasource.ds_1.type=org.apache.shardingsphere.test.MockedDataSource
spring.shardingsphere.rules.sharding.default-database-strategy.standard.sharding-column=user_id
spring.shardingsphere.rules.sharding.default-database-strategy.standard.sharding-algorithm-name=database_inline