You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2021/01/21 11:45:50 UTC
[shardingsphere] branch master updated: add agent it with proxy
(#9108)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 6a4e6d7 add agent it with proxy (#9108)
6a4e6d7 is described below
commit 6a4e6d74eee604016c56226c4927e49358449e3b
Author: xiaoyu <54...@qq.com>
AuthorDate: Thu Jan 21 19:45:21 2021 +0800
add agent it with proxy (#9108)
* add it agent
* remove empty line
---
.github/workflows/it.yml | 21 +++
shardingsphere-test/pom.xml | 1 +
.../pom.xml | 31 +++-
.../Dockerfile | 27 ++++
.../pom.xml | 163 +++++++++++++++++++++
.../src/test/assembly/bin/start.sh | 71 +++++++++
.../src/test/assembly/bin/stop.sh | 51 +++++++
.../shardingsphere-proxy-agent-assembly.xml | 69 +++++++++
.../test/agent/plugins/BaseAgentIT.java | 94 ++++++++++++
.../test/agent/plugins/entity/OrderEntity.java | 33 +++++
.../agent/plugins/env/EnvironmentProperties.java | 51 +++++++
.../plugins/env/IntegrationTestEnvironment.java | 100 +++++++++++++
.../src/test/resources/docker/docker-compose.yml | 48 ++++++
.../test/resources/docker/proxy/conf/agent.yaml | 49 +++++++
.../resources/docker/proxy/conf/config-db.yaml | 74 ++++++++++
.../test/resources/docker/proxy/conf/logback.xml} | 33 ++---
.../test/resources/docker/proxy/conf/server.yaml | 32 ++++
.../src/test/resources/env/engine-env.properties | 18 +++
.../src/test/resources/env/mysql/init.sql | 34 +++++
19 files changed, 977 insertions(+), 23 deletions(-)
diff --git a/.github/workflows/it.yml b/.github/workflows/it.yml
index 18b37e5..409457f 100644
--- a/.github/workflows/it.yml
+++ b/.github/workflows/it.yml
@@ -191,3 +191,24 @@ jobs:
run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true -Djacoco.skip=true -DskipITs
- name: Run Integration Test
run: ./mvnw -B clean install -f shardingsphere-test/shardingsphere-integration-test/pom.xml -Pit.env.docker -Dit.adapters=jdbc -Dit.scenarios=dbtbl_with_replica_query -Dit.databases=MySQL
+
+ mysql-proxy-agent:
+ name: MySQL-Proxy with Agent
+ runs-on: ubuntu-latest
+ steps:
+ - name: Cache Maven Repos
+ uses: actions/cache@v2
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+ - uses: actions/checkout@v2
+ - name: Set up JDK 8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 8
+ - name: Build Project
+ run: ./mvnw -B clean install -Dmaven.javadoc.skip=true -Drat.skip=true -Djacoco.skip=true -DskipITs
+ - name: Run Integration Test
+ run: ./mvnw -B clean install -f shardingsphere-test/shardingsphere-integration-agent-test/pom.xml -Pit.env.agent
diff --git a/shardingsphere-test/pom.xml b/shardingsphere-test/pom.xml
index a77ef38..645418b 100644
--- a/shardingsphere-test/pom.xml
+++ b/shardingsphere-test/pom.xml
@@ -32,5 +32,6 @@
<modules>
<module>shardingsphere-test-common</module>
<module>shardingsphere-integration-test</module>
+ <module>shardingsphere-integration-agent-test</module>
</modules>
</project>
diff --git a/shardingsphere-test/pom.xml b/shardingsphere-test/shardingsphere-integration-agent-test/pom.xml
similarity index 61%
copy from shardingsphere-test/pom.xml
copy to shardingsphere-test/shardingsphere-integration-agent-test/pom.xml
index a77ef38..a2bf93b 100644
--- a/shardingsphere-test/pom.xml
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/pom.xml
@@ -21,16 +21,37 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
+ <artifactId>shardingsphere-test</artifactId>
<groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere</artifactId>
<version>5.0.0-RC1-SNAPSHOT</version>
</parent>
- <artifactId>shardingsphere-test</artifactId>
+ <artifactId>shardingsphere-integration-agent-test</artifactId>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
-
+
<modules>
- <module>shardingsphere-test-common</module>
- <module>shardingsphere-integration-test</module>
+ <module>shardingsphere-integration-agent-test-plugins</module>
</modules>
+
+ <properties>
+ <maven.deploy.skip>true</maven.deploy.skip>
+ </properties>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>integration-tests</id>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/Dockerfile b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/Dockerfile
new file mode 100644
index 0000000..d7a763a
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/Dockerfile
@@ -0,0 +1,27 @@
+#
+# 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.
+#
+
+FROM openjdk:8-jdk-alpine
+
+ARG APP_NAME
+ENV WAIT_VERSION 2.7.2
+
+ADD target/${APP_NAME}.tar.gz /opt
+ADD https://github.com/ufoscout/docker-compose-wait/releases/download/$WAIT_VERSION/wait /wait
+RUN chmod +x /wait
+RUN mv /opt/${APP_NAME} /opt/shardingsphere-proxy
+ENTRYPOINT /wait && /opt/shardingsphere-proxy/bin/start.sh && tail -f /opt/shardingsphere-proxy/logs/stdout.log
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/pom.xml b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/pom.xml
new file mode 100644
index 0000000..95dd367
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/pom.xml
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-integration-agent-test</artifactId>
+ <version>5.0.0-RC1-SNAPSHOT</version>
+ </parent>
+ <artifactId>shardingsphere-integration-agent-test-plugins</artifactId>
+ <name>${project.artifactId}</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-bootstrap</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>mysql</groupId>
+ <artifactId>mysql-connector-java</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-dbcp2</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>it.env.agent</id>
+ <properties>
+ <it.env>agent</it.env>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <appendAssemblyId>false</appendAssemblyId>
+ <descriptors>
+ <descriptor>src/test/assembly/shardingsphere-proxy-agent-assembly.xml</descriptor>
+ </descriptors>
+ </configuration>
+ <executions>
+ <execution>
+ <id>assembly</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>com.spotify</groupId>
+ <artifactId>dockerfile-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>shardingsphere-proxy-bin</id>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <repository>apache/shardingsphere-proxy-agent-test</repository>
+ <tag>${project.version}</tag>
+ <tag>latest</tag>
+ <buildArgs>
+ <APP_NAME>${project.build.finalName}</APP_NAME>
+ </buildArgs>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>com.dkanejs.maven.plugins</groupId>
+ <artifactId>docker-compose-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>agent-up</id>
+ <phase>pre-integration-test</phase>
+ <goals>
+ <goal>up</goal>
+ </goals>
+ <configuration>
+ <composeFile>${project.basedir}/src/test/resources/docker/docker-compose.yml</composeFile>
+ <detachedMode>true</detachedMode>
+ </configuration>
+ </execution>
+ <execution>
+ <id>agent-down</id>
+ <phase>post-integration-test</phase>
+ <goals>
+ <goal>down</goal>
+ </goals>
+ <configuration>
+ <composeFile>${project.basedir}/src/test/resources/docker/docker-compose.yml</composeFile>
+ <removeVolumes>true</removeVolumes>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-resources</id>
+ <phase>validate</phase>
+ <goals>
+ <goal>copy-resources</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>target/test-classes</outputDirectory>
+ <resources>
+ <resource>
+ <directory>src/test/resources</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/assembly/bin/start.sh b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/assembly/bin/start.sh
new file mode 100644
index 0000000..4c292ae
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/assembly/bin/start.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+# 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.
+#
+
+SERVER_NAME=ShardingSphere-Proxy
+
+cd `dirname $0`
+cd ..
+DEPLOY_DIR=`pwd`
+
+LOGS_DIR=${DEPLOY_DIR}/logs
+if [ ! -d ${LOGS_DIR} ]; then
+ mkdir ${LOGS_DIR}
+fi
+
+STDOUT_FILE=${LOGS_DIR}/stdout.log
+EXT_LIB=${DEPLOY_DIR}/ext-lib
+
+CLASS_PATH=.:${DEPLOY_DIR}/lib/*:${EXT_LIB}/*
+
+JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=3308"
+
+JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn1g -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
+
+MAIN_CLASS=org.apache.shardingsphere.proxy.Bootstrap
+
+print_usage() {
+ echo "usage: start.sh [port] [config_dir]"
+ echo " port: proxy listen port, default is 3307"
+ echo " config_dir: proxy config directory, default is conf"
+ exit 0
+}
+
+if [ "$1" == "-h" ] || [ "$1" == "--help" ] ; then
+ print_usage
+fi
+
+echo "Starting the $SERVER_NAME ..."
+
+if [ $# == 1 ]; then
+ MAIN_CLASS=${MAIN_CLASS}" "$1
+ echo "The port is $1"
+ CLASS_PATH=../conf:${CLASS_PATH}
+fi
+
+if [ $# == 2 ]; then
+ MAIN_CLASS=${MAIN_CLASS}" "$1" "$2
+ echo "The port is $1"
+ echo "The configuration path is $DEPLOY_DIR/$2"
+ CLASS_PATH=${DEPLOY_DIR}/$2:${CLASS_PATH}
+fi
+
+echo "The classpath is ${CLASS_PATH}"
+
+nohup java ${JAVA_OPTS} ${JAVA_MEM_OPTS} -javaagent:/opt/shardingsphere-proxy/shardingsphere-agent.jar -classpath ${CLASS_PATH} ${MAIN_CLASS} >> ${STDOUT_FILE} 2>&1 &
+sleep 1
+echo "Please check the STDOUT file: $STDOUT_FILE"
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/assembly/bin/stop.sh b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/assembly/bin/stop.sh
new file mode 100644
index 0000000..da8909e
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/assembly/bin/stop.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+#
+# 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.
+#
+
+SERVER_NAME=ShardingSphere-Proxy
+
+cd `dirname $0`
+cd ..
+DEPLOY_DIR=`pwd`
+
+PIDS=`ps -ef | grep java | grep "$DEPLOY_DIR" | grep -v grep |awk '{print $2}'`
+if [ -z "$PIDS" ]; then
+ echo "ERROR: The $SERVER_NAME does not started!"
+ exit 1
+fi
+
+echo -e "Stopping the $SERVER_NAME ...\c"
+for PID in ${PIDS} ; do
+ kill ${PID} > /dev/null 2>&1
+done
+
+COUNT=0
+while [ ${COUNT} -lt 1 ]; do
+ echo -e ".\c"
+ sleep 1
+ COUNT=1
+ for PID in ${PIDS} ; do
+ PID_EXIST=`ps -f -p ${PID} | grep java`
+ if [ -n "$PID_EXIST" ]; then
+ COUNT=0
+ break
+ fi
+ done
+done
+
+echo "OK!"
+echo "PID: $PIDS"
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/assembly/shardingsphere-proxy-agent-assembly.xml b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/assembly/shardingsphere-proxy-agent-assembly.xml
new file mode 100644
index 0000000..b3ed9b7
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/assembly/shardingsphere-proxy-agent-assembly.xml
@@ -0,0 +1,69 @@
+<!--
+ ~ 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.
+ -->
+
+<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
+ <id>shardingsphere-proxy-bin</id>
+ <formats>
+ <format>tar.gz</format>
+ </formats>
+ <includeBaseDirectory>true</includeBaseDirectory>
+
+ <fileSets>
+ <fileSet>
+ <directory>${project.basedir}/../../../shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-logging/target/plugins</directory>
+ <outputDirectory>./plugins</outputDirectory>
+ <includes>
+ <include>**.jar</include>
+ </includes>
+ </fileSet>
+
+ <fileSet>
+ <directory>${project.basedir}/../../../shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-tracing/target/plugins</directory>
+ <outputDirectory>./plugins</outputDirectory>
+ <includes>
+ <include>**.jar</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../../../shardingsphere-agent/shardingsphere-agent-plugins/shardingsphere-agent-plugin-metrics/target/plugins</directory>
+ <outputDirectory>./plugins</outputDirectory>
+ <includes>
+ <include>**.jar</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>${project.basedir}/../../../shardingsphere-agent/shardingsphere-agent-bootstrap/target</directory>
+ <outputDirectory>./</outputDirectory>
+ <includes>
+ <include>shardingsphere-agent.jar</include>
+ </includes>
+ </fileSet>
+ <fileSet>
+ <directory>src/test/assembly/bin</directory>
+ <outputDirectory>bin</outputDirectory>
+ <fileMode>0755</fileMode>
+ </fileSet>
+ </fileSets>
+
+ <dependencySets>
+ <dependencySet>
+ <outputDirectory>lib</outputDirectory>
+ <fileMode>0644</fileMode>
+ </dependencySet>
+ </dependencySets>
+</assembly>
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/BaseAgentIT.java b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/BaseAgentIT.java
new file mode 100644
index 0000000..d88baa9
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/BaseAgentIT.java
@@ -0,0 +1,94 @@
+/*
+ * 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.test.agent.plugins;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import javax.sql.DataSource;
+import org.apache.shardingsphere.test.agent.plugins.entity.OrderEntity;
+import org.apache.shardingsphere.test.agent.plugins.env.IntegrationTestEnvironment;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public final class BaseAgentIT {
+
+ @Test
+ public void assertProxyWithAgent() {
+ if (IntegrationTestEnvironment.getInstance().isEnvironmentPrepared()) {
+ DataSource dataSource = IntegrationTestEnvironment.getInstance().getDataSource();
+ List<Long> results = new ArrayList<>(10);
+ for (int i = 1; i <= 10; i++) {
+ OrderEntity orderEntity = new OrderEntity(i, i, "INSERT_TEST");
+ insert(orderEntity, dataSource);
+ results.add(orderEntity.getOrderId());
+ }
+ Collection<OrderEntity> orderEntities = selectAll(dataSource);
+ assertThat(orderEntities.size(), is(10));
+ for (Long each : results) {
+ delete(each, dataSource);
+ }
+ }
+ }
+
+ private void insert(final OrderEntity orderEntity, final DataSource dataSource) {
+ String sql = "INSERT INTO t_order (order_id,user_id, status) VALUES (?, ?,?)";
+ try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
+ preparedStatement.setLong(1, orderEntity.getOrderId());
+ preparedStatement.setInt(2, orderEntity.getUserId());
+ preparedStatement.setString(3, orderEntity.getStatus());
+ preparedStatement.executeUpdate();
+ } catch (final SQLException ignored) {
+ }
+ }
+
+ private void delete(final Long orderId, final DataSource dataSource) {
+ String sql = "DELETE FROM t_order WHERE order_id=?";
+ try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
+ preparedStatement.setLong(1, orderId);
+ preparedStatement.executeUpdate();
+ } catch (final SQLException ignored) {
+ }
+ }
+
+ private Collection<OrderEntity> selectAll(final DataSource dataSource) {
+ String sql = "SELECT * FROM t_order";
+ return getOrders(sql, dataSource);
+ }
+
+ private Collection<OrderEntity> getOrders(final String sql, final DataSource dataSource) {
+ Collection<OrderEntity> result = new LinkedList<>();
+ try (Connection connection = dataSource.getConnection(); PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
+ ResultSet resultSet = preparedStatement.executeQuery();
+ while (resultSet.next()) {
+ OrderEntity orderEntity = new OrderEntity(resultSet.getLong(1), resultSet.getInt(2), resultSet.getString(3));
+ result.add(orderEntity);
+ }
+ } catch (final SQLException ignored) {
+ }
+ return result;
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/entity/OrderEntity.java b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/entity/OrderEntity.java
new file mode 100644
index 0000000..43eb539
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/entity/OrderEntity.java
@@ -0,0 +1,33 @@
+/*
+ * 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.test.agent.plugins.entity;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+@Getter
+public final class OrderEntity {
+
+ private final long orderId;
+
+ private final int userId;
+
+ private final String status;
+}
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/env/EnvironmentProperties.java b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/env/EnvironmentProperties.java
new file mode 100644
index 0000000..8ecac54
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/env/EnvironmentProperties.java
@@ -0,0 +1,51 @@
+/*
+ * 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.test.agent.plugins.env;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+
+/**
+ * Environment properties.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class EnvironmentProperties {
+
+ /**
+ * Load properties.
+ *
+ * @param propsFileName properties file name
+ * @return properties
+ */
+ @SuppressWarnings("AccessOfSystemProperties")
+ public static Properties loadProperties(final String propsFileName) {
+ Properties result = new Properties();
+ try (InputStream inputStream = EnvironmentProperties.class.getClassLoader().getResourceAsStream(propsFileName)) {
+ result.load(inputStream);
+ } catch (final IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ for (String each : System.getProperties().stringPropertyNames()) {
+ result.setProperty(each, System.getProperty(each));
+ }
+ return result;
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/env/IntegrationTestEnvironment.java b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/env/IntegrationTestEnvironment.java
new file mode 100644
index 0000000..975295a
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/java/org/apache/shardingsphere/test/agent/plugins/env/IntegrationTestEnvironment.java
@@ -0,0 +1,100 @@
+/*
+ * 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.test.agent.plugins.env;
+
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Properties;
+import javax.sql.DataSource;
+import lombok.Getter;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+
+@Getter
+@Slf4j
+public final class IntegrationTestEnvironment {
+
+ private static final IntegrationTestEnvironment INSTANCE = new IntegrationTestEnvironment();
+
+ private static final String URL = "jdbc:mysql://127.0.0.1:43070?serverTimezone=UTC&useSSL=false&useLocalSessionState=true&characterEncoding=utf-8";
+
+ private static final String USER_NAME = "root";
+
+ private static final String PASSWORD = "root";
+
+ private final boolean isEnvironmentPrepared;
+
+ private DataSource dataSource;
+
+ @SneakyThrows
+ private IntegrationTestEnvironment() {
+ Properties engineEnvProps = EnvironmentProperties.loadProperties("env/engine-env.properties");
+ isEnvironmentPrepared = "agent".equals(engineEnvProps.getProperty("it.env.type"));
+ if (isEnvironmentPrepared) {
+ waitForEnvironmentReady();
+ dataSource = createHikariCP();
+ }
+ }
+
+ private static DataSource createHikariCP() {
+ HikariConfig result = new HikariConfig();
+ result.setDriverClassName("com.mysql.jdbc.Driver");
+ result.setJdbcUrl(URL);
+ result.setUsername(USER_NAME);
+ result.setPassword(PASSWORD);
+ result.setMaximumPoolSize(5);
+ result.setTransactionIsolation("TRANSACTION_READ_COMMITTED");
+ return new HikariDataSource(result);
+ }
+
+ private void waitForEnvironmentReady() {
+ log.info("wait begin proxy environment");
+ int retryCount = 0;
+ while (!isProxyReady() && retryCount < 30) {
+ try {
+ Thread.sleep(1000L);
+ } catch (final InterruptedException ignore) {
+ }
+ retryCount++;
+ }
+ }
+
+ private boolean isProxyReady() {
+ try (Connection connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
+ Statement statement = connection.createStatement()) {
+ statement.execute("SELECT 1");
+ } catch (final SQLException ignore) {
+ return false;
+ }
+ log.info(" it proxy environment success");
+ return true;
+ }
+
+ /**
+ * Get instance.
+ *
+ * @return singleton instance
+ */
+ public static IntegrationTestEnvironment getInstance() {
+ return INSTANCE;
+ }
+}
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/docker-compose.yml b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/docker-compose.yml
new file mode 100644
index 0000000..f3f7ba9
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/docker-compose.yml
@@ -0,0 +1,48 @@
+#
+# 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.
+#
+
+version: "2.1"
+
+services:
+ mysql:
+ image: "mysql/mysql-server:5.7"
+ container_name: agent-mysql
+ command: ['--sql_mode=', '--default-authentication-plugin=mysql_native_password']
+ volumes:
+ - ../env/mysql:/docker-entrypoint-initdb.d/
+ ports:
+ - "43060:3306"
+ environment:
+ - LANG=C.UTF-8
+
+ shardingsphere-proxy:
+ image: apache/shardingsphere-proxy-agent-test
+ container_name: shardingsphere-proxy-agent
+ ports:
+ - "43070:3307"
+ - "43080:3308"
+ links:
+ - "mysql:mysql.agent.host"
+ volumes:
+ - ./proxy/conf:/opt/shardingsphere-proxy/conf
+ depends_on:
+ - mysql
+ environment:
+ - WAIT_HOSTS=mysql:3306
+ - WAIT_HOSTS_TIMEOUT=300
+ - WAIT_SLEEP_INTERVAL=5
+ - WAIT_HOST_CONNECT_TIMEOUT=30
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/agent.yaml b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/agent.yaml
new file mode 100644
index 0000000..67f662a
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/agent.yaml
@@ -0,0 +1,49 @@
+#
+# 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.
+#
+
+applicationName: shardingsphere-agent
+ignoredPluginNames:
+ - Jaeger
+ - Opentracing
+
+plugins:
+ prometheus:
+ host: "localhost"
+ port: 9090
+ props:
+ JVM_INFORMATION_COLLECTOR_ENABLED : "true"
+ Jaeger:
+ host: "localhost"
+ port: 5775
+ props:
+ SERVICE_NAME: "shardingsphere-agent"
+ JAEGER_SAMPLER_TYPE: "const"
+ JAEGER_SAMPLER_PARAM: "1"
+ JAEGER_REPORTER_LOG_SPANS: "true"
+ JAEGER_REPORTER_FLUSH_INTERVAL: "1"
+ Zipkin:
+ host: "localhost"
+ port: 9411
+ props:
+ SERVICE_NAME: "shardingsphere-agent"
+ URL_VERSION: "/api/v2/spans"
+ Opentracing:
+ props:
+ OPENTRACING_TRACER_CLASS_NAME: "org.apache.skywalking.apm.toolkit.opentracing.SkywalkingTracer"
+ Logging:
+ props:
+ LEVEL: "INFO"
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/config-db.yaml b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/config-db.yaml
new file mode 100644
index 0000000..044f9c1
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/config-db.yaml
@@ -0,0 +1,74 @@
+#
+# 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.
+#
+
+schemaName: agent-db
+
+dataSources:
+ ds_0:
+ url: jdbc:mysql://mysql.agent.host:3306/agent_db_0?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
+ username: root
+ password:
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 10
+ minPoolSize: 2
+ maintenanceIntervalMilliseconds: 30000
+ ds_1:
+ url: jdbc:mysql://mysql.agent.host:3306/agent_db_1?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8
+ username: root
+ password:
+ connectionTimeoutMilliseconds: 30000
+ idleTimeoutMilliseconds: 60000
+ maxLifetimeMilliseconds: 1800000
+ maxPoolSize: 10
+ minPoolSize: 2
+ maintenanceIntervalMilliseconds: 30000
+
+rules:
+ - !SHARDING
+ tables:
+ t_order:
+ actualDataNodes: ds_${0..1}.t_order_${0..1}
+ tableStrategy:
+ standard:
+ shardingColumn: order_id
+ shardingAlgorithmName: t_order_inline
+ keyGenerateStrategy:
+ column: order_id
+ keyGeneratorName: snowflake
+ defaultDatabaseStrategy:
+ standard:
+ shardingColumn: user_id
+ shardingAlgorithmName: database_inline
+ defaultTableStrategy:
+ none:
+ shardingAlgorithms:
+ database_inline:
+ type: INLINE
+ props:
+ algorithm-expression: ds_${user_id % 2}
+ t_order_inline:
+ type: INLINE
+ props:
+ algorithm-expression: t_order_${order_id % 2}
+
+ keyGenerators:
+ snowflake:
+ type: SNOWFLAKE
+ props:
+ worker-id: 123
diff --git a/shardingsphere-test/pom.xml b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/logback.xml
similarity index 52%
copy from shardingsphere-test/pom.xml
copy to shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/logback.xml
index a77ef38..1494746 100644
--- a/shardingsphere-test/pom.xml
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/logback.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one or more
~ contributor license agreements. See the NOTICE file distributed with
@@ -16,21 +16,18 @@
~ limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere</artifactId>
- <version>5.0.0-RC1-SNAPSHOT</version>
- </parent>
- <artifactId>shardingsphere-test</artifactId>
- <packaging>pom</packaging>
- <name>${project.artifactId}</name>
+<configuration>
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+ <logger name="org.apache.shardingsphere" level="info" additivity="false">
+ <appender-ref ref="console" />
+ </logger>
- <modules>
- <module>shardingsphere-test-common</module>
- <module>shardingsphere-integration-test</module>
- </modules>
-</project>
+ <root>
+ <level value="info" />
+ <appender-ref ref="console" />
+ </root>
+</configuration>
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/server.yaml b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/server.yaml
new file mode 100644
index 0000000..c8db741
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/docker/proxy/conf/server.yaml
@@ -0,0 +1,32 @@
+#
+# 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.
+#
+
+authentication:
+ users:
+ root:
+ password: root
+
+props:
+ max-connections-size-per-query: 1
+ acceptor-size: 16 # The default value is available processors count * 2.
+ executor-size: 16 # Infinite by default.
+ proxy-frontend-flush-threshold: 128 # The default value is 128.
+ proxy-transaction-type: LOCAL
+ proxy-opentracing-enabled: false
+ proxy-hint-enabled: false
+ query-with-cipher-column: true
+ sql-show: true
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/env/engine-env.properties b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/env/engine-env.properties
new file mode 100644
index 0000000..e9e7be6
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/env/engine-env.properties
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+
+it.env.type=${it.env}
diff --git a/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/env/mysql/init.sql b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/env/mysql/init.sql
new file mode 100644
index 0000000..d82e10e
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-integration-agent-test/shardingsphere-integration-agent-test-plugins/src/test/resources/env/mysql/init.sql
@@ -0,0 +1,34 @@
+--
+-- 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.
+--
+
+CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '';
+GRANT All privileges ON *.* TO 'root'@'%';
+
+SET character_set_database='utf8';
+SET character_set_server='utf8';
+
+DROP DATABASE IF EXISTS agent_db_0;
+DROP DATABASE IF EXISTS agent_db_1;
+
+CREATE DATABASE agent_db_0;
+CREATE DATABASE agent_db_1;
+
+CREATE TABLE agent_db_0.t_order_0 (order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id));
+CREATE TABLE agent_db_0.t_order_1 (order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id));
+
+CREATE TABLE agent_db_1.t_order_0 (order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id));
+CREATE TABLE agent_db_1.t_order_1 (order_id INT NOT NULL, user_id INT NOT NULL, status VARCHAR(45) NULL, PRIMARY KEY (order_id));