From 4438112be0ddd21bd92d75534647de0cca572404 Mon Sep 17 00:00:00 2001 From: Isaac Sumner Date: Tue, 22 Aug 2023 11:00:34 -0400 Subject: [PATCH] Add smoke tests to 'Release Version' workflow (#271) [5.3.z] (#274) --- .github/workflows/deploy-release.yml | 30 +++++++++ pom.xml | 18 +++++ smoke-test/pom.xml | 45 +++++++++++++ .../hazelcast/smoke/test/SmokeTestDriver.java | 66 +++++++++++++++++++ 4 files changed, 159 insertions(+) create mode 100644 smoke-test/pom.xml create mode 100644 smoke-test/src/main/java/com/hazelcast/smoke/test/SmokeTestDriver.java diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/deploy-release.yml index 562ca362..898565ab 100644 --- a/.github/workflows/deploy-release.yml +++ b/.github/workflows/deploy-release.yml @@ -16,11 +16,31 @@ env: GIT_AUTHOR_EMAIL: <> GIT_COMMITTER_NAME: GitHub Actions Bot GIT_COMMITTER_EMAIL: <> + CLUSTER_NAME: smoke-test + EE_CLUSTER_NAME: smoke-test-ee jobs: do-release: if: github.repository_owner == 'hazelcast' runs-on: ubuntu-latest + services: + hazelcast: + image: hazelcast/hazelcast:latest-slim + ports: + - 6701:5701 + env: + HZ_CLUSTERNAME: $CLUSTER_NAME + HZ_NETWORK_JOIN_MULTICAST_ENABLED: false + HZ_NETWORK_JOIN_TCPIP_ENABLED: true + hazelcast-ee: + image: hazelcast/hazelcast-enterprise:latest-slim + ports: + - 6702:5701 + env: + HZ_CLUSTERNAME: $EE_CLUSTER_NAME + HZ_NETWORK_JOIN_MULTICAST_ENABLED: false + HZ_NETWORK_JOIN_TCPIP_ENABLED: true + HZ_LICENSEKEY: ${{ secrets.HAZELCAST_ENTERPRISE_KEY }} name: Build and release version steps: - uses: actions/checkout@v3 @@ -47,6 +67,16 @@ jobs: git tag v${{ github.event.inputs.release-version }} mvn clean install -V -B + - name: Build and run smoke test + run: | + mvn clean package -V -B -Psmoke-test -DskipTests + java -ea -cp smoke-test/target/smoke-test-${{ github.event.inputs.release-version }}.jar:hazelcast-jdbc/target/hazelcast-jdbc-${{ github.event.inputs.release-version }}.jar com.hazelcast.smoke.test.SmokeTestDriver 6701 $CLUSTER_NAME + + - name: Build and run ee smoke test + run: | + mvn clean package -V -B -Psmoke-test-ee -DskipTests + java -ea -cp smoke-test/target/smoke-test-${{ github.event.inputs.release-version }}.jar:hazelcast-jdbc-enterprise/target/hazelcast-jdbc-enterprise-${{ github.event.inputs.release-version }}.jar com.hazelcast.smoke.test.SmokeTestDriver 6702 $EE_CLUSTER_NAME + - name: Deploy EE with Maven run: mvn -f hazelcast-jdbc-enterprise -V -B deploy -Djdbc-release -DskipTests -DskipStaging env: diff --git a/pom.xml b/pom.xml index 24b1869b..24d81195 100644 --- a/pom.xml +++ b/pom.xml @@ -491,6 +491,24 @@ + + smoke-test + + smoke-test + + + hazelcast-jdbc + + + + smoke-test-ee + + smoke-test + + + hazelcast-jdbc-enterprise + + diff --git a/smoke-test/pom.xml b/smoke-test/pom.xml new file mode 100644 index 00000000..1abcef61 --- /dev/null +++ b/smoke-test/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + com.hazelcast + hazelcast-jdbc-root + 5.4.0-SNAPSHOT + + + smoke-test + + + 8 + 8 + UTF-8 + + + + + com.hazelcast + ${jdbcArtifact} + ${project.version} + + + + + + + org.codehaus.mojo + license-maven-plugin + + + add-third-party + + add-third-party + + + + + + + + diff --git a/smoke-test/src/main/java/com/hazelcast/smoke/test/SmokeTestDriver.java b/smoke-test/src/main/java/com/hazelcast/smoke/test/SmokeTestDriver.java new file mode 100644 index 00000000..4c8c61b1 --- /dev/null +++ b/smoke-test/src/main/java/com/hazelcast/smoke/test/SmokeTestDriver.java @@ -0,0 +1,66 @@ +package com.hazelcast.smoke.test; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.logging.Logger; + +public class SmokeTestDriver { + + private static final Logger logger = Logger.getLogger(SmokeTestDriver.class.getName()); + + public static void main(String[] args) throws SQLException { + + if (args.length < 2) { + logger.severe("Usage: 'java " + + SmokeTestDriver.class.getName() + + " "); + throw new IllegalArgumentException("Too few arguments"); + } + + String hzPort = args[0]; + String clusterName = args[1]; + try (Connection con = DriverManager.getConnection( + "jdbc:hazelcast://localhost:" + hzPort + "/?clusterName=" + clusterName)) { + logger.info("Database: " + con.getMetaData().getDatabaseProductName() + + ": " + con.getMetaData().getDatabaseProductVersion()); + + try (Statement s = con.createStatement()) { + s.execute("CREATE OR REPLACE MAPPING map " + + "TYPE IMap OPTIONS(" + + " 'keyFormat'='integer', " + + " 'valueFormat'='varchar'" + + ")"); + + int insertCount = s.executeUpdate( + "INSERT INTO map " + + "SELECT v, 'name-' || v " + + "FROM TABLE(generate_series(0, 9))" + ); + assert insertCount == 0; + + ResultSet rs = s.executeQuery( + "SELECT __key, this " + + "FROM map " + + "ORDER BY __key" + ); + int rowCount = 0; + while (rs.next()) { + String row = String.format("__key: %d value: %s", + rs.getInt("__key"), rs.getString("this")); + logger.info(row); + rowCount++; + } + + assert rowCount == 10; + + int deleteCount = s.executeUpdate("DELETE FROM map"); + assert deleteCount == insertCount; + + s.execute("DROP MAPPING map"); + } + } + } +} \ No newline at end of file