@@ -25,9 +25,9 @@ source module ci/lib/io.sh
2525
2626WORKSPACE_DIR=$( pwd)
2727
28- # ---------------------------------------------------------------------------
28+ # ============================================================================
2929# Configuration
30- # ---------------------------------------------------------------------------
30+ # ============================================================================
3131
3232BENCHMARK_ITERATIONS=" ${BENCHMARK_ITERATIONS:- 3} "
3333
@@ -40,9 +40,10 @@ rm -rf "${BUILD_DIR}"
4040rm -rf " ${RESULTS_DIR} "
4141
4242mkdir -p " ${RESULTS_DIR} "
43- # ---------------------------------------------------------------------------
43+
44+ # ============================================================================
4445# Branch
45- # ---------------------------------------------------------------------------
46+ # ============================================================================
4647
4748BRANCH_NAME=" ${BRANCH_NAME:- main} "
4849
@@ -59,18 +60,18 @@ echo "Iterations : ${BENCHMARK_ITERATIONS}"
5960echo " Workspace : ${WORKSPACE_DIR} "
6061echo
6162
62- # ---------------------------------------------------------------------------
63+ # ============================================================================
6364# Result files
64- # ---------------------------------------------------------------------------
65+ # ============================================================================
6566
6667CURRENT_RESULT=" ${RESULTS_DIR} /current.txt"
6768MAIN_RESULT=" ${RESULTS_DIR} /main.txt"
6869EXISTING_RESULT=" ${RESULTS_DIR} /existing.txt"
6970SUMMARY_RESULT=" ${RESULTS_DIR} /benchmark_summary_linux.txt"
7071
71- # ---------------------------------------------------------------------------
72+ # ============================================================================
7273# Driver locations
73- # ---------------------------------------------------------------------------
74+ # ============================================================================
7475
7576DRIVER_PATH=" ${WORKSPACE_DIR} /cmake-out/google/cloud/odbc/libgoogle_cloud_odbc_bq_driver.so"
7677
@@ -80,35 +81,45 @@ MAIN_SO="${RESULTS_DIR}/libgoogle_cloud_odbc_bq_driver_main.so"
8081CURRENT_SO_GCS=" ${PERF_DRIVER_BUCKET} /${SANITIZED_BRANCH} /linux/libgoogle_cloud_odbc_bq_driver.so"
8182MAIN_SO_GCS=" ${PERF_DRIVER_BUCKET} /main/linux/libgoogle_cloud_odbc_bq_driver.so"
8283
83- # ---------------------------------------------------------------------------
84+ # ============================================================================
8485# ODBC configuration
85- # ---------------------------------------------------------------------------
86+ # ============================================================================
8687
8788GOOGLE_ODBCINI=" /opt/odbc-driver/odbc.ini"
8889EXISTING_ODBCINI=" /opt/odbc-driver/googlebigqueryodbc/odbc.ini"
89- export ODBC_TESTS_DSN=" ${ODBC_TESTS_DSN:- SampleDSNGoogleDriver} "
9090
91- # Export as env variable
91+ # Export VCPKG version.
9292VCPKG_VERSION=$( cat /tmp/vcpkg-version.txt)
9393export VCPKG_VERSION
94+
9495echo " Using VCPKG_VERSION=$VCPKG_VERSION "
9596
97+ # ============================================================================
9698# Vcpkg install and configure
99+ # ============================================================================
100+
97101export VCPKG_ROOT=/vcpkg
98- git clone --branch " $VCPKG_VERSION " https://github.com/microsoft/vcpkg.git " $VCPKG_ROOT "
102+
103+ git clone --branch " $VCPKG_VERSION " \
104+ https://github.com/microsoft/vcpkg.git \
105+ " $VCPKG_ROOT "
106+
99107cd " $VCPKG_ROOT "
100108git checkout " $VCPKG_VERSION "
101109
102- # Bootstrap
110+ # Bootstrap.
103111./bootstrap-vcpkg.sh -disableMetrics
104112
105113cd " $WORKSPACE_DIR "
106- # This is the name of DSN set in odbc.ini
114+
115+ # This is the name of DSN set in odbc.ini.
107116mapfile -t cmake_args < <( cmake::common_args)
117+
108118GOOGLE_ODBCINI=" /opt/odbc-driver/odbc.ini"
109119EXISTING_ODBCINI=" /opt/odbc-driver/googlebigqueryodbc/odbc.ini"
110120
111121export ODBC_TESTS_DSN=" SampleDSNGoogleDriver"
122+
112123export CPP_BIGQUERY_ODBC_TEST_TABLE_PREFIX=${TRIGGER_NAME// [-:;.,?]/ _} _${BRANCH_NAME// [-:;.,?]/ _}
113124export ODBCINSTINI=/opt/odbc-driver/odbcinst.ini
114125export ODBCINI=" ${GOOGLE_ODBCINI} "
@@ -120,15 +131,15 @@ io::run cmake -B "$BUILD_DIR" \
120131 -DODBC_INTEGRATION_TESTING=ON \
121132 -DBQ_DRIVER_INTEGRATION_TESTS=ON \
122133 -DODBC_DEMO_TESTING=OFF \
123- -DODBC_EXAMPLES=ON \
134+ -DODBC_EXAMPLES=OFF \
124135 -DODBC_UNIT_TESTING=OFF \
125- -DCLIENT_LIBRARY_INTEGRATION_TESTING=OFF \
136+ -DCLIENT_LIBRARY_INTEGRATION_TESTING=OFF
126137
127138io::run cmake --build " ${BUILD_DIR} "
128139
129- # ---------------------------------------------------------------------------
140+ # ============================================================================
130141# Publish Google driver .so for performance benchmarks
131- # ---------------------------------------------------------------------------
142+ # ============================================================================
132143
133144DRIVER_SO=" ${BUILD_DIR} /google/cloud/odbc/libgoogle_cloud_odbc_bq_driver.so"
134145
164175 fi
165176fi
166177
167- # ---------------------------------------------------------------------------
178+ # ============================================================================
168179# Validate ODBC configuration
169- # ---------------------------------------------------------------------------
180+ # ============================================================================
170181
171182if [[ ! -f " ${GOOGLE_ODBCINI} " ]]; then
172183 echo " ERROR: Google ODBC configuration not found:"
@@ -180,32 +191,30 @@ if [[ ! -f "${EXISTING_ODBCINI}" ]]; then
180191 exit 1
181192fi
182193
183- # ---------------------------------------------------------------------------
194+ # ============================================================================
184195# Run benchmark
185- # ---------------------------------------------------------------------------
196+ # ============================================================================
186197
187198run_benchmark () {
188199 local name=" $1 "
189200 local output_file=" $2 "
190201 local dsn=" $3 "
191202 local bq_tests_flag=" $4 "
192203
193- # if [[ "${bq_tests_flag}" == "OFF" ]]; then
194- echo
195- echo " Reconfiguring performance_test for ${name} "
196- echo " BQ_DRIVER_INTEGRATION_TESTS = ${bq_tests_flag} "
197- echo " ------------------------------------------------------------"
204+ echo
205+ echo " Reconfiguring performance_test for ${name} "
206+ echo " BQ_DRIVER_INTEGRATION_TESTS = ${bq_tests_flag} "
207+ echo " ------------------------------------------------------------"
198208
199- io::run cmake -S " ${WORKSPACE_DIR} " \
200- -B " ${BUILD_DIR} " \
201- -DCMAKE_BUILD_TYPE=Release \
202- -DBUILD_PERFORMANCE_TEST_ONLY=ON \
203- -DBQ_DRIVER_INTEGRATION_TESTS=" ${bq_tests_flag} "
209+ io::run cmake -S " ${WORKSPACE_DIR} " \
210+ -B " ${BUILD_DIR} " \
211+ -DCMAKE_BUILD_TYPE=Release \
212+ -DBUILD_PERFORMANCE_TEST_ONLY=ON \
213+ -DBQ_DRIVER_INTEGRATION_TESTS=" ${bq_tests_flag} "
204214
205- io::run cmake --build " ${BUILD_DIR} " \
206- --target performance_test \
207- --parallel " $( nproc) "
208- # fi
215+ io::run cmake --build " ${BUILD_DIR} " \
216+ --target performance_test \
217+ --parallel " $( nproc) "
209218
210219 PERFORMANCE_TEST=" ${BUILD_DIR} /integration_tests/performance_test"
211220
@@ -279,13 +288,17 @@ run_benchmark() {
279288 return 0
280289}
281290
282- # ---------------------------------------------------------------------------
291+ # ============================================================================
283292# Google Current
284293#
285294# The existing Google DSN points to DRIVER_PATH.
286295# Replace the driver binary before running the benchmark.
287- # ---------------------------------------------------------------------------
288- cp /opt/odbc-driver/roots.pem " ${WORKSPACE_DIR} /cmake-out/google/cloud/odbc/roots.pem"
296+ # ============================================================================
297+
298+ cp \
299+ /opt/odbc-driver/roots.pem \
300+ " ${WORKSPACE_DIR} /cmake-out/google/cloud/odbc/roots.pem"
301+
289302echo
290303echo " Preparing Google Current"
291304echo " ------------------------------------------------------------"
@@ -299,13 +312,9 @@ run_benchmark \
299312 " ${GOOGLE_ODBCINI} " \
300313 " ON"
301314
302- echo
303- echo " Google Current result summary:"
304- grep -E ' \[ *OK *\]|\[ *FAILED *\]' " ${CURRENT_RESULT} " || true
305-
306- # ---------------------------------------------------------------------------
315+ # ============================================================================
307316# Google Main
308- # ---------------------------------------------------------------------------
317+ # ============================================================================
309318
310319echo
311320echo " Preparing Google Main"
@@ -321,15 +330,14 @@ if [[ "$HAS_MAIN_DRIVER" == "true" ]]; then
321330 " ${MAIN_RESULT} " \
322331 " ${GOOGLE_ODBCINI} " \
323332 " ON"
324-
325333else
326334 echo " Google Main benchmark skipped: main driver artifact unavailable."
327335 : > " $MAIN_RESULT "
328336fi
329337
330- # ---------------------------------------------------------------------------
338+ # ============================================================================
331339# Existing
332- # ---------------------------------------------------------------------------
340+ # ============================================================================
333341
334342echo
335343echo " Preparing Existing Driver"
@@ -345,9 +353,9 @@ run_benchmark \
345353 " ${EXISTING_ODBCINI} " \
346354 " OFF"
347355
348- # ---------------------------------------------------------------------------
356+ # ============================================================================
349357# Generate comparison
350- # ---------------------------------------------------------------------------
358+ # ============================================================================
351359
352360echo
353361echo " ============================================================"
@@ -368,9 +376,9 @@ python3 "${PARSER}" \
368376 --main " ${MAIN_RESULT} " \
369377 --output " ${SUMMARY_RESULT} "
370378
371- # ---------------------------------------------------------------------------
379+ # ============================================================================
372380# Upload results
373- # ---------------------------------------------------------------------------
381+ # ============================================================================
374382
375383RESULTS_BUCKET=" ${PERF_DRIVER_BUCKET} /${SANITIZED_BRANCH} /linux/results"
376384
0 commit comments