Skip to content

Commit bfe205c

Browse files
SNOW-1016467: Support test Mac environment in Github actions. (snowflakedb#1765)
* SNOW-1016467 Support test Mac environment in Github actions. * Changed task name to include OS and java version
1 parent e66fae5 commit bfe205c

File tree

4 files changed

+85
-13
lines changed

4 files changed

+85
-13
lines changed

.github/workflows/build-test.yml

+33
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,39 @@ jobs:
3636
WHITESOURCE_API_KEY: ${{ secrets.WHITESOURCE_API_KEY }}
3737
run: ./ci/build.sh
3838

39+
test-mac:
40+
needs: build
41+
name: ${{ matrix.cloud }} JDBC${{ matrix.additionalMavenProfile }} ${{ matrix.category }} / Test on Mac(java ${{ matrix.javaVersion }}, ${{ matrix.cloud }} )
42+
runs-on: macos-13
43+
strategy:
44+
fail-fast: false
45+
matrix:
46+
cloud: [ 'AWS' ]
47+
javaVersion: [ '8', '11', '17']
48+
category: ['TestCategoryResultSet,TestCategoryOthers,TestCategoryLoader', 'TestCategoryConnection,TestCategoryStatement', 'TestCategoryArrow,TestCategoryCore', 'TestCategoryFips']
49+
additionalMavenProfile: ['', '-Dthin-jar']
50+
steps:
51+
- uses: actions/checkout@v4
52+
- uses: actions/setup-java@v4
53+
with:
54+
java-version: ${{ matrix.javaVersion }}
55+
distribution: 'temurin'
56+
cache: maven
57+
- uses: actions/setup-python@v4
58+
with:
59+
python-version: '3.7'
60+
- name: Install Homebrew Bash
61+
shell: bash
62+
run: brew install bash
63+
- name: Tests
64+
shell: bash
65+
env:
66+
PARAMETERS_SECRET: ${{ secrets.PARAMETERS_SECRET }}
67+
CLOUD_PROVIDER: ${{ matrix.cloud }}
68+
JDBC_TEST_CATEGORY: ${{ matrix.category }}
69+
ADDITIONAL_MAVEN_PROFILE: ${{ matrix.additionalMavenProfile }}
70+
run: /usr/local/bin/bash ./ci/test_mac.sh
71+
3972
test-linux:
4073
needs: build
4174
name: ${{ matrix.cloud }} JDBC${{ matrix.additionalMavenProfile }} ${{ matrix.category }} on ${{ matrix.image }}

ci/container/test_component.sh

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
#!/bin/bash -e
22
#
3-
# Test JDBC for Linux
3+
# Test JDBC for Linux/MAC
44
#
55
set -o pipefail
66
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
77
export WORKSPACE=${WORKSPACE:-/mnt/workspace}
88
export SOURCE_ROOT=${SOURCE_ROOT:-/mnt/host}
9+
MVNW_EXE=$SOURCE_ROOT/mvnw
910

1011
echo "[INFO] Download JDBC Integration test cases and libraries"
1112
source $THIS_DIR/download_artifact.sh
@@ -76,15 +77,15 @@ export MAVEN_OPTS="$MAVEN_OPTS -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=fa
7677
cd $SOURCE_ROOT
7778

7879
# Avoid connection timeout on plugin dependency fetch or fail-fast when dependency cannot be fetched
79-
mvn --batch-mode --show-version dependency:go-offline
80+
$MVNW_EXE --batch-mode --show-version dependency:go-offline
8081

8182
for c in "${CATEGORY[@]}"; do
8283
c=$(echo $c | sed 's/ *$//g')
8384
if [[ "$is_old_driver" == "true" ]]; then
8485
pushd TestOnly >& /dev/null
85-
JDBC_VERSION=$(mvn org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version --batch-mode | grep -v "[INFO]")
86+
JDBC_VERSION=$($MVNW_EXE org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version --batch-mode | grep -v "[INFO]")
8687
echo "[INFO] Run JDBC $JDBC_VERSION tests"
87-
mvn -DjenkinsIT \
88+
$MVNW_EXE -DjenkinsIT \
8889
-Djava.io.tmpdir=$WORKSPACE \
8990
-Djacoco.skip.instrument=false \
9091
-DtestCategory=net.snowflake.client.category.$c \
@@ -95,7 +96,7 @@ for c in "${CATEGORY[@]}"; do
9596
elif [[ "$c" == "TestCategoryFips" ]]; then
9697
pushd FIPS >& /dev/null
9798
echo "[INFO] Run Fips tests"
98-
mvn -DjenkinsIT \
99+
$MVNW_EXE -DjenkinsIT \
99100
-Djava.io.tmpdir=$WORKSPACE \
100101
-Djacoco.skip.instrument=false \
101102
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn \
@@ -105,7 +106,7 @@ for c in "${CATEGORY[@]}"; do
105106
popd >& /dev/null
106107
else
107108
echo "[INFO] Run $c tests"
108-
mvn -DjenkinsIT \
109+
$MVNW_EXE -DjenkinsIT \
109110
-Djava.io.tmpdir=$WORKSPACE \
110111
-Djacoco.skip.instrument=false \
111112
-DtestCategory=net.snowflake.client.category.$c \

ci/log_analyze_setup.sh

+24-7
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,36 @@ fi
3131
# The new complex password we use for jenkins test
3232
export SNOWFLAKE_TEST_PASSWORD_NEW="ThisIsRandomPassword123!"
3333

34-
LOG_PROPERTY_FILE_DOCKER=$(cd "$(dirname "${BASH_SOURCE[0]}")/.."; pwd)/src/test/resources/logging.properties
34+
LOG_PROPERTY_FILE=$(cd "$(dirname "${BASH_SOURCE[0]}")/.."; pwd)/src/test/resources/logging.properties
3535

3636
export CLIENT_DRIVER_NAME=JDBC
3737

3838
function setup_log_env() {
39-
sed -i "s|^java.util.logging.FileHandler.pattern.*|java.util.logging.FileHandler.pattern = $CLIENT_LOG_FILE_PATH_DOCKER|" ${LOG_PROPERTY_FILE_DOCKER}
39+
if ["$WORKSPACE" == "/mnt/workspace"]; then
40+
CLIENT_LOG_DIR_PATH=$LOCAL_CLIENT_LOG_DIR_PATH_DOCKER
41+
CLIENT_LOG_FILE_PATH=$CLIENT_LOG_FILE_PATH_DOCKER
42+
CLIENT_KNOWN_SSM_FILE_PATH=$CLIENT_KNOWN_SSM_FILE_PATH_DOCKER
43+
else
44+
CLIENT_LOG_DIR_PATH=$LOCAL_CLIENT_LOG_DIR_PATH
45+
CLIENT_LOG_FILE_PATH=$CLIENT_LOG_FILE_PATH
46+
CLIENT_KNOWN_SSM_FILE_PATH=$CLIENT_KNOWN_SSM_FILE_PATH
47+
fi
48+
echo "[INFO] CLIENT_LOG_DIR_PATH=$CLIENT_LOG_DIR_PATH"
49+
echo "[INFO] CLIENT_LOG_FILE_PATH=$CLIENT_LOG_FILE_PATH"
50+
echo "[INFO] CLIENT_KNOWN_SSM_FILE_PATH=$CLIENT_KNOWN_SSM_FILE_PATH"
51+
echo "[INFO] Replace file handler for log file $LOG_PROPERTY_FILE"
52+
53+
sed -i'' -e "s|^java.util.logging.FileHandler.pattern.*|java.util.logging.FileHandler.pattern = $CLIENT_LOG_FILE_PATH|" ${LOG_PROPERTY_FILE}
4054

41-
if [[ ! -d ${LOCAL_CLIENT_LOG_DIR_PATH_DOCKER} ]]; then
42-
mkdir -p ${LOCAL_CLIENT_LOG_DIR_PATH_DOCKER}
55+
if [[ ! -d ${CLIENT_LOG_DIR_PATH} ]]; then
56+
echo "[INFO] create clien log directory $CLIENT_LOG_DIR_PATH"
57+
mkdir -p ${CLIENT_LOG_DIR_PATH}
4358
fi
4459

45-
if [[ -f $CLIENT_KNOWN_SSM_FILE_PATH_DOCKER ]]; then
46-
rm -f $CLIENT_KNOWN_SSM_FILE_PATH_DOCKER
60+
if [[ -f $CLIENT_KNOWN_SSM_FILE_PATH ]]; then
61+
rm -f $CLIENT_KNOWN_SSM_FILE_PATH
4762
fi
48-
touch $CLIENT_KNOWN_SSM_FILE_PATH_DOCKER
63+
64+
touch $CLIENT_KNOWN_SSM_FILE_PATH
65+
echo "[INFO] finish setup log env"
4966
}

ci/test_mac.sh

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/bin/bash -e
2+
#
3+
# Test JDBC for Mac
4+
#
5+
6+
echo "DOWNLOADED"
7+
set -o pipefail
8+
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
9+
source $THIS_DIR/_init.sh
10+
source $THIS_DIR/scripts/set_git_info.sh
11+
12+
13+
export WORKSPACE=$GITHUB_WORKSPACE
14+
export SOURCE_ROOT=$GITHUB_WORKSPACE
15+
16+
python3 --version
17+
python3 -m venv venv
18+
source venv/bin/activate
19+
pip3 install -U pip
20+
pip3 install -U snowflake-connector-python
21+
$THIS_DIR/container/test_component.sh

0 commit comments

Comments
 (0)