forked from snowflakedb/snowflake-jdbc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_windows.bat
160 lines (131 loc) · 5.69 KB
/
test_windows.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
REM
REM Tests JDBC Driver on Windows
REM
setlocal
setlocal EnableDelayedExpansion
python -m venv venv
call venv\scripts\activate
pip install -U snowflake-connector-python
cd %GITHUB_WORKSPACE%
if "%CLOUD_PROVIDER%"=="AZURE" (
set ENCODED_PARAMETERS_FILE=.github/workflows/parameters_azure.json.gpg
) else if "%CLOUD_PROVIDER%"=="GCP" (
set ENCODED_PARAMETERS_FILE=.github/workflows/parameters_gcp.json.gpg
) else if "%CLOUD_PROVIDER%"=="AWS" (
set ENCODED_PARAMETERS_FILE=.github/workflows/parameters_aws.json.gpg
) else (
echo === unknown cloud provider
exit /b 1
)
gpg --quiet --batch --yes --decrypt --passphrase=%PARAMETERS_SECRET% --output parameters.json %ENCODED_PARAMETERS_FILE%
REM DON'T FORGET TO include @echo off here or the password may be leaked!
echo @echo off>parameters.bat
jq -r ".testconnection | to_entries | map(\"set \(.key)=\(.value)\") | .[]" parameters.json >> parameters.bat
call parameters.bat
if %ERRORLEVEL% NEQ 0 (
echo === failed to set the test parameters
exit /b 1
)
echo @echo off>parametersorg.bat
jq -r ".orgconnection | to_entries | map(\"set \(.key)=\(.value)\") | .[]" parameters.json >> parametersorg.bat
call parametersorg.bat
if %ERRORLEVEL% NEQ 0 (
echo === failed to set the org parameters
exit /b 1
)
set SNOWFLAKE_TEST_SCHEMA=%RUNNER_TRACKING_ID:-=_%_%GITHUB_SHA%
set TARGET_SCHEMA_NAME=%SNOWFLAKE_TEST_SCHEMA%
echo [INFO] Account: %SNOWFLAKE_TEST_ACCOUNT%
echo [INFO] User : %SNOWFLAKE_TEST_USER%
echo [INFO] Database: %SNOWFLAKE_TEST_DATABASE%
echo [INFO] Schema: %SNOWFLAKE_TEST_SCHEMA%
echo [INFO] Warehouse: %SNOWFLAKE_TEST_WAREHOUSE%
echo [INFO] Role: %SNOWFLAKE_TEST_ROLE%
echo [INFO] Creating schema %SNOWFLAKE_TEST_SCHEMA%
pushd %GITHUB_WORKSPACE%\ci\container
python create_schema.py
popd
REM setup log
set CLIENT_LOG_DIR_PATH=%GITHUB_WORKSPACE%\jenkins_rt_logs
echo "[INFO] CLIENT_LOG_DIR_PATH=%CLIENT_LOG_DIR_PATH%"
set CLIENT_LOG_FILE_PATH=%CLIENT_LOG_DIR_PATH%\ssnowflake_ssm_rt.log
echo "[INFO] CLIENT_LOG_FILE_PATH=%CLIENT_LOG_FILE_PATH%"
set CLIENT_KNOWN_SSM_FILE_PATH=%CLIENT_LOG_DIR_PATH%\rt_jenkins_log_known_ssm.txt
echo "[INFO] CLIENT_KNOWN_SSM_FILE_PATH=%CLIENT_KNOWN_SSM_FILE_PATH%"
REM To close log analyze, just set ENABLE_CLIENT_LOG_ANALYZE to not "true", e.g. "false".
set ENABLE_CLIENT_LOG_ANALYZE=true
REM The new complex password we use for jenkins test
set SNOWFLAKE_TEST_PASSWORD_NEW="ThisIsRandomPassword123!"
set LOG_PROPERTY_FILE=%GITHUB_WORKSPACE%\src\test\resources\logging.properties
echo "[INFO] LOG_PROPERTY_FILE=%LOG_PROPERTY_FILE%"
set CLIENT_DRIVER_NAME=JDBC
powershell -Command "(Get-Content %LOG_PROPERTY_FILE%) | Foreach-Object { $_ -replace '^java.util.logging.FileHandler.pattern.*', 'java.util.logging.FileHandler.pattern = %CLIENT_LOG_FILE_PATH%' } | Set-Content %LOG_PROPERTY_FILE%"
echo "[INFO] Create log directory"
IF NOT EXIST %CLIENT_LOG_DIR_PATH% MD %CLIENT_LOG_DIR_PATH% 2>nul
echo "[INFO] Delete ssm file"
IF EXIST "%CLIENT_KNOWN_SSM_FILE_PATH%" DEL /F /Q "%CLIENT_KNOWN_SSM_FILE_PATH%"
echo "[INFO] Create ssm file"
echo.>"%CLIENT_KNOWN_SSM_FILE_PATH%"
echo "[INFO] Finish log setup"
REM end setup log
for /F "tokens=1,* delims==" %%i in ('set ^| findstr /I /R "^SNOWFLAKE_[^=]*$" ^| findstr /I /V /R "^SNOWFLAKE_PASS_[^=]*$" ^| sort') do (
echo %%i=%%j
)
echo [INFO] Starting hang_webserver.py 12345
pushd %GITHUB_WORKSPACE%\ci\container
start /b python hang_webserver.py 12345 > hang_webserver.out 2>&1
popd
echo [INFO] Testing
set MVNW_EXE=%GITHUB_WORKSPACE%\mvnw.cmd
REM Avoid connection timeouts
set MAVEN_OPTS="-Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120"
echo "MAVEN OPTIONS %MAVEN_OPTS%"
REM Avoid connection timeout on plugin dependency fetch or fail-fast when dependency cannot be fetched
cmd /c %MVNW_EXE% --batch-mode --show-version dependency:go-offline
echo list = "%JDBC_TEST_CATEGORY%"
for %%a in ("%JDBC_TEST_CATEGORY:,=" "%") do (
echo "Current category to execute" %%a
if /i %%a=="TestCategoryFips" (
pushd FIPS
echo "[INFO] Run Fips tests"
cmd /c %MVNW_EXE% -B -DjenkinsIT ^
-Djava.io.tmpdir=%GITHUB_WORKSPACE% ^
-Djacoco.skip.instrument=false ^
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn ^
-Dnot-self-contained-jar ^
verify ^
--batch-mode --show-version > log.txt & type log.txt
echo "[INFO] Check for test execution status"
find /i /c "BUILD FAILURE" log.txt > NUL
set isfound=!errorlevel!
if !isfound! equ 0 (
echo [ERROR] Failed run %%a test
exit /b 1
) else (
echo [INFO] Success run %%a test
)
popd ) else (
echo "[INFO] Run %%a tests"
cmd /c %MVNW_EXE% -B -DjenkinsIT ^
-Djava.io.tmpdir=%GITHUB_WORKSPACE% ^
-Djacoco.skip.instrument=false ^
-DtestCategory=net.snowflake.client.category.%%a ^
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn ^
-Dnot-self-contained-jar %ADDITIONAL_MAVEN_PROFILE% ^
verify ^
--batch-mode --show-version > log.txt & type log.txt
echo "[INFO] Check for test execution status"
find /i /c "BUILD FAILURE" log.txt > NUL
set isfound=!errorlevel!
if !isfound! equ 0 (
echo [ERROR] Failed run %%a test
exit /b 1
) else (
echo [INFO] Success run %%a test
)
)
)
echo [INFO] Dropping schema %SNOWFLAKE_TEST_SCHEMA%
pushd %GITHUB_WORKSPACE%\ci\container
python drop_schema.py
popd