diff --git a/Jenkinsfile-Agent-Test b/Jenkinsfile-Agent-Test
index 26ba3a00c..1af47995b 100755
--- a/Jenkinsfile-Agent-Test
+++ b/Jenkinsfile-Agent-Test
@@ -107,4 +107,4 @@ pipeline {
deleteDir()
}
}
-}
\ No newline at end of file
+}
diff --git a/Jenkinsfile-Agent-Test-3 b/Jenkinsfile-Agent-Test-3
index 97bd18f67..ec76a56ec 100755
--- a/Jenkinsfile-Agent-Test-3
+++ b/Jenkinsfile-Agent-Test-3
@@ -54,7 +54,7 @@ pipeline {
sh './mvnw -f test/plugin/pom.xml clean package -DskipTests -Dbuild_id=${BUILD_ID} docker:build'
}
}
- stage('Test Cases Report (21)') {
+ stage('Test Cases Report (73)') {
steps {
echo "reserve."
}
@@ -77,9 +77,14 @@ pipeline {
}
stage('Group2') {
stages {
- stage('reserve stages') {
+ stage('postgresql 9.2.x-9.4.x (36)') {
steps {
- echo "reserve."
+ sh 'bash test/plugin/run.sh --build_id=${BUILD_ID} postgresql-scenario'
+ }
+ }
+ stage('postgresql-9.4.1207+ (16)') {
+ steps {
+ sh 'bash test/plugin/run.sh --build_id=${BUILD_ID} postgresql-above9.4.1207-scenario'
}
}
}
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/config/expectedData.yaml b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/config/expectedData.yaml
new file mode 100644
index 000000000..efa343ecf
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/config/expectedData.yaml
@@ -0,0 +1,114 @@
+# 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.
+registryItems:
+ applications:
+ - {postgresql-above9.4.1207-scenario: nq 0}
+ instances:
+ - {postgresql-above9.4.1207-scenario: 1}
+ operationNames:
+ - postgresql-above9.4.1207-scenario: [/postgresql-scenario/case/postgres, PostgreSQL/JDBI/PreparedStatement/executeWithFlags,
+ PostgreSQL/JDBI/CallableStatement/executeWithFlags, PostgreSQL/JDBI/Statement/execute,
+ PostgreSQL/JDBI/Connection/close]
+segmentItems:
+- applicationCode: postgresql-above9.4.1207-scenario
+ segmentSize: ge 1
+ segments:
+ - segmentId: not null
+ spans:
+ - operationName: PostgreSQL/JDBI/PreparedStatement/executeWithFlags
+ operationId: eq 0
+ parentSpanId: 0
+ spanId: 1
+ tags:
+ - {key: "db.type", value: "sql"}
+ - {key: "db.instance", value: "postgres"}
+ - {key: "db.statement", value: "CREATE TABLE test_007(\nid VARCHAR(1) PRIMARY KEY, \nvalue VARCHAR(1) NOT NULL)"}
+ startTime: nq 0
+ endTime: nq 0
+ isError: false
+ spanLayer: Database
+ spanType: Exit
+ componentName: null
+ componentId: 37
+ peer: postgresql-server:5432
+ peerId: eq 0
+ - operationName: PostgreSQL/JDBI/CallableStatement/executeWithFlags
+ operationId: eq 0
+ parentSpanId: 0
+ spanId: 2
+ tags:
+ - {key: "db.type", value: "sql"}
+ - {key: "db.instance", value: "postgres"}
+ - {key: "db.statement", value: "INSERT INTO test_007(id, value) VALUES(?,?)"}
+ startTime: nq 0
+ endTime: nq 0
+ isError: false
+ spanLayer: Database
+ spanType: Exit
+ componentName: null
+ componentId: 37
+ peer: postgresql-server:5432
+ peerId: eq 0
+ - operationName: PostgreSQL/JDBI/Statement/execute
+ operationId: eq 0
+ parentSpanId: 0
+ spanId: 3
+ tags:
+ - {key: "db.type", value: "sql"}
+ - {key: "db.instance", value: "postgres"}
+ - {key: "db.statement", value: "DROP table test_007"}
+ startTime: nq 0
+ endTime: nq 0
+ isError: false
+ spanLayer: Database
+ spanType: Exit
+ componentName: null
+ componentId: 37
+ peer: postgresql-server:5432
+ peerId: eq 0
+ - operationName: PostgreSQL/JDBI/Connection/close
+ operationId: eq 0
+ parentSpanId: 0
+ spanId: 4
+ tags:
+ - {key: "db.type", value: "sql"}
+ - {key: "db.instance", value: "postgres"}
+ - {key: "db.statement", value: ""}
+ startTime: nq 0
+ endTime: nq 0
+ isError: false
+ spanLayer: Database
+ spanType: Exit
+ componentName: null
+ componentId: 37
+ peer: postgresql-server:5432
+ peerId: eq 0
+ - operationName: /postgresql-scenario/case/postgres
+ operationId: eq 0
+ parentSpanId: -1
+ spanId: 0
+ startTime: nq 0
+ endTime: nq 0
+ spanLayer: Http
+ isError: false
+ spanType: Entry
+ componentName: null
+ componentId: 1
+ tags:
+ - {key: url, value: 'http://localhost:8080/postgresql-scenario/case/postgres'}
+ - {key: http.method, value: GET}
+ peer: null
+ peerId: eq 0
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/configuration.yml b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/configuration.yml
new file mode 100644
index 000000000..663a82d8a
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/configuration.yml
@@ -0,0 +1,29 @@
+# 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.
+type: jvm
+entryService: http://localhost:8080/postgresql-scenario/case/postgres
+healthCheck: http://localhost:8080/postgresql-scenario/case/healthcheck
+startScript: ./bin/startup.sh
+framework: PostgreSQL
+environment:
+ - POSTGRESQL_SERVER=postgresql-server:5432
+ - POSTGRES_DB=postgres
+ - POSTGRES_USER=postgres
+ - POSTGRES_PASSWORD=postgres
+dependencies:
+ postgresql-server:
+ image: postgres:9.3-alpine
+ hostname: postgresql-server
+
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/pom.xml b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/pom.xml
new file mode 100644
index 000000000..2df5d8783
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/pom.xml
@@ -0,0 +1,122 @@
+
+
+
+ 4.0.0
+
+ org.apache.skywalking
+ postgresql-above9.4.1207-scenario
+ 5.0.0
+
+ skywalking-postgresql-above9.4.1207-scenario
+
+
+ UTF-8
+ 1.8
+
+ 9.4-1206-jdbc42
+ ${test.framework.version}
+
+ 2.1.4.RELEASE
+ 1.16.20
+ 2.8.1
+
+
+
+
+ org.postgresql
+ postgresql
+ ${test.framework.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ ${spring-boot.version}
+
+
+ spring-boot-starter-logging
+ org.springframework.boot
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring-boot.version}
+
+
+ org.apache.logging.log4j
+ log4j-api
+ ${log4j.version}
+
+
+ org.apache.logging.log4j
+ log4j-core
+ ${log4j.version}
+
+
+
+
+ postgresql-above9.4.1207-scenario
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.6.0
+
+ ${compiler.version}
+ ${compiler.version}
+ ${project.build.sourceEncoding}
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 1.5.9.RELEASE
+
+
+
+ repackage
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ assemble
+ package
+
+ single
+
+
+
+ src/main/assembly/assembly.xml
+
+
+
+
+
+
+
+
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/assembly/assembly.xml b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/assembly/assembly.xml
new file mode 100644
index 000000000..3e7d698c3
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/assembly/assembly.xml
@@ -0,0 +1,41 @@
+
+
+
+
+ zip
+
+
+
+
+ ./bin
+ 0775
+
+
+
+
+
+ ${project.build.directory}/postgresql-above9.4.1207-scenario.jar
+ ./libs
+ 0775
+
+
+
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/Application.java b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/Application.java
new file mode 100644
index 000000000..d2f3e64fa
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/Application.java
@@ -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.
+ *
+ */
+
+package org.apache.skywalking.apm.testcase.postgresql;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+
+ public static void main(String[] args) {
+ try {
+ SpringApplication.run(Application.class, args);
+ } catch (Exception e) {
+ // Never do this
+ }
+ }
+}
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/CaseController.java b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/CaseController.java
new file mode 100644
index 000000000..f3566c40c
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/CaseController.java
@@ -0,0 +1,82 @@
+/*
+ * 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.skywalking.apm.testcase.postgresql.controller;
+
+import java.sql.SQLException;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/postgresql-scenario/case")
+public class CaseController {
+
+ private static Logger logger = LogManager.getLogger(CaseController.class);
+
+ @Autowired
+ PostgresqlConfig postgresqlConfig;
+
+ @GetMapping("/healthcheck")
+ public String healthcheck() throws Exception {
+ SQLExecutor sqlExecute = null;
+ try {
+ sqlExecute = new SQLExecutor(postgresqlConfig);
+ sqlExecute.checkPG(ConstSql.TEST_SQL);
+ } catch (SQLException e) {
+ logger.error("Failed to execute sql.", e);
+ throw e;
+ } finally {
+ if (sqlExecute != null) {
+ try {
+ sqlExecute.closeConnection();
+ } catch (SQLException e) {
+ logger.error("Failed to close connection.", e);
+ }
+ }
+ }
+ return "Success";
+ }
+
+ @GetMapping("/postgres")
+ public String postgres() throws SQLException {
+ logger.info("Begin to start execute sql");
+ SQLExecutor sqlExecute = null;
+ try {
+ sqlExecute = new SQLExecutor(postgresqlConfig);
+ sqlExecute.createTable(ConstSql.CREATE_TABLE_SQL);
+ sqlExecute.insertData(ConstSql.INSERT_DATA_SQL, "1", "1");
+ sqlExecute.dropTable(ConstSql.DROP_TABLE_SQL);
+ } catch (SQLException e) {
+ logger.error("Failed to execute sql.", e);
+ throw e;
+ } finally {
+ if (sqlExecute != null) {
+ try {
+ sqlExecute.closeConnection();
+ } catch (SQLException e) {
+ logger.error("Failed to close connection.", e);
+ }
+ }
+ }
+ return "Success";
+ }
+}
+
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/ConstSql.java b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/ConstSql.java
new file mode 100644
index 000000000..a0a487b07
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/ConstSql.java
@@ -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.
+ *
+ */
+package org.apache.skywalking.apm.testcase.postgresql.controller;
+
+public class ConstSql {
+ public static final String TEST_SQL = "SELECT 1";
+ public static final String CREATE_TABLE_SQL = "CREATE TABLE test_007(\n" +
+ "id VARCHAR(1) PRIMARY KEY, \n" +
+ "value VARCHAR(1) NOT NULL)";
+ public static final String INSERT_DATA_SQL = "INSERT INTO test_007(id, value) VALUES(?,?)";
+ public static final String DROP_TABLE_SQL = "DROP table test_007";
+}
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/PostgresqlConfig.java b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/PostgresqlConfig.java
new file mode 100644
index 000000000..ba7fa48c0
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/PostgresqlConfig.java
@@ -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.
+ *
+ */
+package org.apache.skywalking.apm.testcase.postgresql.controller;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class PostgresqlConfig {
+
+ @Value("${POSTGRESQL_SERVER}")
+ private String host;
+
+ @Value("${POSTGRES_DB}")
+ private String db;
+
+ @Value("${POSTGRES_USER}")
+ private String user;
+
+ @Value("${POSTGRES_PASSWORD}")
+ private String password;
+
+ public String getUrl() {
+ return "jdbc:postgresql://" + host + "/" + db;
+ }
+
+ public String getUserName() {
+ return user;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+}
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/SQLExecutor.java b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/SQLExecutor.java
new file mode 100644
index 000000000..fa1f73a75
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/SQLExecutor.java
@@ -0,0 +1,67 @@
+/*
+ * 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.skywalking.apm.testcase.postgresql.controller;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+public class SQLExecutor {
+
+ private Connection connection;
+
+ public SQLExecutor(PostgresqlConfig postgresqlConfig) throws SQLException {
+ try {
+ Class.forName("org.postgresql.Driver");
+ } catch (ClassNotFoundException e) {
+ //
+ }
+ connection = DriverManager.getConnection(postgresqlConfig.getUrl(), postgresqlConfig.getUserName(), postgresqlConfig.getPassword());
+ }
+
+ public void checkPG(String sql) throws SQLException {
+ Statement preparedStatement = connection.createStatement();
+ preparedStatement.execute(sql);
+ }
+
+ public void createTable(String sql) throws SQLException {
+ PreparedStatement preparedStatement = connection.prepareStatement(sql);
+ preparedStatement.execute();
+ }
+
+ public void insertData(String sql, String id, String value) throws SQLException {
+ CallableStatement preparedStatement = connection.prepareCall(sql);
+ preparedStatement.setString(1, id);
+ preparedStatement.setString(2, value);
+ preparedStatement.execute();
+ }
+
+ public void dropTable(String sql) throws SQLException {
+ Statement preparedStatement = connection.createStatement();
+ preparedStatement.execute(sql);
+ }
+
+ public void closeConnection() throws SQLException {
+ if (this.connection != null) {
+ this.connection.close();
+ }
+ }
+}
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/resources/application.yml b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/resources/application.yml
new file mode 100644
index 000000000..a2f8b0f19
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/resources/application.yml
@@ -0,0 +1,17 @@
+# 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:
+ port: 8080
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/resources/log4j2.xml b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/resources/log4j2.xml
new file mode 100644
index 000000000..985bd03bf
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/src/main/resources/log4j2.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/plugin/scenarios/postgresql-above9.4.1207-scenario/support-version.list b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/support-version.list
new file mode 100644
index 000000000..83574bcbf
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-above9.4.1207-scenario/support-version.list
@@ -0,0 +1,31 @@
+# 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.
+9.4.1207
+9.4.1208
+9.4.1209
+9.4.1210
+9.4.1211
+9.4.1212
+9.4.1208.jre7
+9.4.1208.jre6
+9.4.1209.jre7
+9.4.1209.jre6
+9.4.1210.jre6
+9.4.1210.jre7
+9.4.1211.jre6
+9.4.1211.jre7
+9.4.1212.jre6
+9.4.1212.jre7
diff --git a/test/plugin/scenarios/postgresql-scenario/bin/startup.sh b/test/plugin/scenarios/postgresql-scenario/bin/startup.sh
new file mode 100644
index 000000000..74ce435de
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/bin/startup.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+# 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.
+
+home="$(cd "$(dirname $0)"; pwd)"
+
+java -jar ${agent_opts} ${home}/../libs/postgresql-scenario.jar &
diff --git a/test/plugin/scenarios/postgresql-scenario/config/expectedData.yaml b/test/plugin/scenarios/postgresql-scenario/config/expectedData.yaml
new file mode 100644
index 000000000..9fa8c2339
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/config/expectedData.yaml
@@ -0,0 +1,115 @@
+# 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.
+registryItems:
+ applications:
+ - {postgresql-scenario: nq 0}
+ instances:
+ - {postgresql-scenario: 1}
+ operationNames:
+ - postgresql-scenario: [/postgresql-scenario/case/postgres, PostgreSQL/JDBI/PreparedStatement/execute,
+ PostgreSQL/JDBI/CallableStatement/execute, PostgreSQL/JDBI/Statement/execute,
+ PostgreSQL/JDBI/Connection/close]
+ heartbeat: []
+segmentItems:
+- applicationCode: postgresql-scenario
+ segmentSize: ge 1
+ segments:
+ - segmentId: not null
+ spans:
+ - operationName: PostgreSQL/JDBI/PreparedStatement/execute
+ operationId: eq 0
+ parentSpanId: 0
+ spanId: 1
+ tags:
+ - {key: "db.type", value: "sql"}
+ - {key: "db.instance", value: "postgres"}
+ - {key: "db.statement", value: "CREATE TABLE test_007(\nid VARCHAR(1) PRIMARY KEY, \nvalue VARCHAR(1) NOT NULL)"}
+ startTime: nq 0
+ endTime: nq 0
+ isError: false
+ spanLayer: Database
+ spanType: Exit
+ componentName: ''
+ componentId: 37
+ peer: postgresql-server:5432
+ peerId: eq 0
+ - operationName: PostgreSQL/JDBI/CallableStatement/execute
+ operationId: eq 0
+ parentSpanId: 0
+ spanId: 2
+ tags:
+ - {key: "db.type", value: "sql"}
+ - {key: "db.instance", value: "postgres"}
+ - {key: "db.statement", value: "INSERT INTO test_007(id, value) VALUES(?,?)"}
+ startTime: nq 0
+ endTime: nq 0
+ isError: false
+ spanLayer: Database
+ spanType: Exit
+ componentName: ''
+ componentId: 37
+ peer: postgresql-server:5432
+ peerId: eq 0
+ - operationName: PostgreSQL/JDBI/Statement/execute
+ operationId: eq 0
+ parentSpanId: 0
+ spanId: 3
+ tags:
+ - {key: "db.type", value: "sql"}
+ - {key: "db.instance", value: "postgres"}
+ - {key: "db.statement", value: "DROP table test_007"}
+ startTime: nq 0
+ endTime: nq 0
+ isError: false
+ spanLayer: Database
+ spanType: Exit
+ componentName: ''
+ componentId: 37
+ peer: postgresql-server:5432
+ peerId: eq 0
+ - operationName: PostgreSQL/JDBI/Connection/close
+ operationId: eq 0
+ parentSpanId: 0
+ spanId: 4
+ tags:
+ - {key: "db.type", value: "sql"}
+ - {key: "db.instance", value: "postgres"}
+ - {key: "db.statement", value: ""}
+ startTime: nq 0
+ endTime: nq 0
+ isError: false
+ spanLayer: Database
+ spanType: Exit
+ componentName: ''
+ componentId: 37
+ peer: postgresql-server:5432
+ peerId: eq 0
+ - operationName: /postgresql-scenario/case/postgres
+ operationId: eq 0
+ parentSpanId: -1
+ spanId: 0
+ startTime: nq 0
+ endTime: nq 0
+ spanLayer: Http
+ isError: false
+ spanType: Entry
+ componentName: ''
+ componentId: 1
+ tags:
+ - {key: url, value: 'http://localhost:8080/postgresql-scenario/case/postgres'}
+ - {key: http.method, value: GET}
+ peer: null
+ peerId: eq 0
diff --git a/test/plugin/scenarios/postgresql-scenario/configuration.yml b/test/plugin/scenarios/postgresql-scenario/configuration.yml
new file mode 100644
index 000000000..f34ac2dcd
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/configuration.yml
@@ -0,0 +1,30 @@
+# 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.
+
+type: jvm
+entryService: http://localhost:8080/postgresql-scenario/case/postgres
+healthCheck: http://localhost:8080/postgresql-scenario/case/healthcheck
+startScript: ./bin/startup.sh
+framework: PostgreSQL
+environment:
+ - POSTGRESQL_SERVER=postgresql-server:5432
+ - POSTGRES_DB=postgres
+ - POSTGRES_USER=postgres
+ - POSTGRES_PASSWORD=postgres
+dependencies:
+ postgresql-server:
+ image: postgres:9.3-alpine
+ hostname: postgresql-server
+
diff --git a/test/plugin/scenarios/postgresql-scenario/pom.xml b/test/plugin/scenarios/postgresql-scenario/pom.xml
new file mode 100644
index 000000000..eb6b8a41e
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/pom.xml
@@ -0,0 +1,122 @@
+
+
+
+ 4.0.0
+
+ org.apache.skywalking
+ postgresql-scenario
+ 5.0.0
+
+ skywalking-postgresql-scenario
+
+
+ UTF-8
+ 1.8
+
+ 9.4-1200-jdbc41
+ ${test.framework.version}
+
+ 2.1.4.RELEASE
+ 1.16.20
+ 2.8.1
+
+
+
+
+ org.postgresql
+ postgresql
+ ${test.framework.version}
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+ ${spring-boot.version}
+
+
+ spring-boot-starter-logging
+ org.springframework.boot
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring-boot.version}
+
+
+ org.apache.logging.log4j
+ log4j-api
+ ${log4j.version}
+
+
+ org.apache.logging.log4j
+ log4j-core
+ ${log4j.version}
+
+
+
+
+ postgresql-scenario
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.6.0
+
+ ${compiler.version}
+ ${compiler.version}
+ ${project.build.sourceEncoding}
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 1.5.9.RELEASE
+
+
+
+ repackage
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ assemble
+ package
+
+ single
+
+
+
+ src/main/assembly/assembly.xml
+
+
+
+
+
+
+
+
diff --git a/test/plugin/scenarios/postgresql-scenario/src/main/assembly/assembly.xml b/test/plugin/scenarios/postgresql-scenario/src/main/assembly/assembly.xml
new file mode 100644
index 000000000..195ec651e
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/src/main/assembly/assembly.xml
@@ -0,0 +1,41 @@
+
+
+
+
+ zip
+
+
+
+
+ ./bin
+ 0775
+
+
+
+
+
+ ${project.build.directory}/postgresql-scenario.jar
+ ./libs
+ 0775
+
+
+
diff --git a/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/Application.java b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/Application.java
new file mode 100644
index 000000000..d2f3e64fa
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/Application.java
@@ -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.
+ *
+ */
+
+package org.apache.skywalking.apm.testcase.postgresql;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class Application {
+
+ public static void main(String[] args) {
+ try {
+ SpringApplication.run(Application.class, args);
+ } catch (Exception e) {
+ // Never do this
+ }
+ }
+}
diff --git a/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/CaseController.java b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/CaseController.java
new file mode 100644
index 000000000..60e1f4810
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/CaseController.java
@@ -0,0 +1,83 @@
+/*
+ * 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.skywalking.apm.testcase.postgresql.controller;
+
+import java.sql.SQLException;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/postgresql-scenario/case")
+public class CaseController {
+
+ private static Logger logger = LogManager.getLogger(CaseController.class);
+
+ @Autowired
+ PostgresqlConfig postgresqlConfig;
+
+ @GetMapping("/healthcheck")
+ public String healthcheck() throws Exception {
+ SQLExecutor sqlExecute = null;
+ try {
+ sqlExecute = new SQLExecutor(postgresqlConfig);
+ sqlExecute.checkPG(ConstSql.TEST_SQL);
+ } catch (SQLException e) {
+ logger.error("Failed to execute sql.", e);
+ throw e;
+ } finally {
+ if (sqlExecute != null) {
+ try {
+ sqlExecute.closeConnection();
+ } catch (SQLException e) {
+ logger.error("Failed to close connection.", e);
+ }
+ }
+ }
+ return "Success";
+ }
+
+ @GetMapping("/postgres")
+ public String postgres() throws SQLException {
+ logger.info("Begin to start execute sql");
+ SQLExecutor sqlExecute = null;
+ try {
+ sqlExecute = new SQLExecutor(postgresqlConfig);
+ sqlExecute.createTable(ConstSql.CREATE_TABLE_SQL);
+ sqlExecute.insertData(ConstSql.INSERT_DATA_SQL, "1", "1");
+ sqlExecute.dropTable(ConstSql.DROP_TABLE_SQL);
+ } catch (SQLException e) {
+ logger.error("Failed to execute sql.", e);
+ throw e;
+ } finally {
+ if (sqlExecute != null) {
+ try {
+ sqlExecute.closeConnection();
+ } catch (SQLException e) {
+ logger.error("Failed to close connection.", e);
+ }
+ }
+ }
+ return "Success";
+ }
+}
+
diff --git a/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/ConstSql.java b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/ConstSql.java
new file mode 100644
index 000000000..a0a487b07
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/ConstSql.java
@@ -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.
+ *
+ */
+package org.apache.skywalking.apm.testcase.postgresql.controller;
+
+public class ConstSql {
+ public static final String TEST_SQL = "SELECT 1";
+ public static final String CREATE_TABLE_SQL = "CREATE TABLE test_007(\n" +
+ "id VARCHAR(1) PRIMARY KEY, \n" +
+ "value VARCHAR(1) NOT NULL)";
+ public static final String INSERT_DATA_SQL = "INSERT INTO test_007(id, value) VALUES(?,?)";
+ public static final String DROP_TABLE_SQL = "DROP table test_007";
+}
diff --git a/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/PostgresqlConfig.java b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/PostgresqlConfig.java
new file mode 100644
index 000000000..ba7fa48c0
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/PostgresqlConfig.java
@@ -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.
+ *
+ */
+package org.apache.skywalking.apm.testcase.postgresql.controller;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class PostgresqlConfig {
+
+ @Value("${POSTGRESQL_SERVER}")
+ private String host;
+
+ @Value("${POSTGRES_DB}")
+ private String db;
+
+ @Value("${POSTGRES_USER}")
+ private String user;
+
+ @Value("${POSTGRES_PASSWORD}")
+ private String password;
+
+ public String getUrl() {
+ return "jdbc:postgresql://" + host + "/" + db;
+ }
+
+ public String getUserName() {
+ return user;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+}
diff --git a/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/SQLExecutor.java b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/SQLExecutor.java
new file mode 100644
index 000000000..fa1f73a75
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/src/main/java/org/apache/skywalking/apm/testcase/postgresql/controller/SQLExecutor.java
@@ -0,0 +1,67 @@
+/*
+ * 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.skywalking.apm.testcase.postgresql.controller;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+public class SQLExecutor {
+
+ private Connection connection;
+
+ public SQLExecutor(PostgresqlConfig postgresqlConfig) throws SQLException {
+ try {
+ Class.forName("org.postgresql.Driver");
+ } catch (ClassNotFoundException e) {
+ //
+ }
+ connection = DriverManager.getConnection(postgresqlConfig.getUrl(), postgresqlConfig.getUserName(), postgresqlConfig.getPassword());
+ }
+
+ public void checkPG(String sql) throws SQLException {
+ Statement preparedStatement = connection.createStatement();
+ preparedStatement.execute(sql);
+ }
+
+ public void createTable(String sql) throws SQLException {
+ PreparedStatement preparedStatement = connection.prepareStatement(sql);
+ preparedStatement.execute();
+ }
+
+ public void insertData(String sql, String id, String value) throws SQLException {
+ CallableStatement preparedStatement = connection.prepareCall(sql);
+ preparedStatement.setString(1, id);
+ preparedStatement.setString(2, value);
+ preparedStatement.execute();
+ }
+
+ public void dropTable(String sql) throws SQLException {
+ Statement preparedStatement = connection.createStatement();
+ preparedStatement.execute(sql);
+ }
+
+ public void closeConnection() throws SQLException {
+ if (this.connection != null) {
+ this.connection.close();
+ }
+ }
+}
diff --git a/test/plugin/scenarios/postgresql-scenario/src/main/resources/application.yml b/test/plugin/scenarios/postgresql-scenario/src/main/resources/application.yml
new file mode 100644
index 000000000..a2f8b0f19
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/src/main/resources/application.yml
@@ -0,0 +1,17 @@
+# 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:
+ port: 8080
diff --git a/test/plugin/scenarios/postgresql-scenario/src/main/resources/log4j2.xml b/test/plugin/scenarios/postgresql-scenario/src/main/resources/log4j2.xml
new file mode 100644
index 000000000..985bd03bf
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/src/main/resources/log4j2.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/plugin/scenarios/postgresql-scenario/support-version.list b/test/plugin/scenarios/postgresql-scenario/support-version.list
new file mode 100644
index 000000000..ada0541bf
--- /dev/null
+++ b/test/plugin/scenarios/postgresql-scenario/support-version.list
@@ -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.
+9.2-1002-jdbc4
+9.2-1003-jdbc3
+9.2-1003-jdbc4
+9.2-1004-jdbc3
+9.2-1004-jdbc4
+9.2-1004-jdbc41
+9.3-1100-jdbc3
+9.3-1100-jdbc4
+9.3-1101-jdbc3
+9.3-1101-jdbc4
+9.3-1101-jdbc41
+9.3-1102-jdbc3
+9.3-1102-jdbc4
+9.3-1102-jdbc41
+9.3-1103-jdbc3
+9.3-1103-jdbc4
+9.3-1103-jdbc41
+9.3-1104-jdbc4
+9.3-1104-jdbc41
+9.4-1201-jdbc4
+9.4-1201-jdbc41
+9.4-1202-jdbc4
+9.4-1202-jdbc41
+9.4-1202-jdbc42
+9.4-1203-jdbc4
+9.4-1203-jdbc41
+9.4-1203-jdbc42
+9.4-1204-jdbc4
+9.4-1204-jdbc41
+9.4-1204-jdbc42
+9.4-1205-jdbc4
+9.4-1205-jdbc41
+9.4-1205-jdbc42
+9.4-1206-jdbc4
+9.4-1206-jdbc41
+9.4-1206-jdbc42