Skip to content

Per-worker proxy threads for UDF callbacks (#1136) #46

Per-worker proxy threads for UDF callbacks (#1136)

Per-worker proxy threads for UDF callbacks (#1136) #46

Workflow file for this run

name: MacOS
permissions:
contents: read
on:
push:
branches:
- main
pull_request:
types:
- opened
- synchronize
- reopened
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: macos-latest
timeout-minutes: 120
strategy:
fail-fast: false
matrix:
ruby: ['3.2.11', '3.3.11', '3.4.9', '4.0.5', 'head']
duckdb: ['1.4.4', '1.5.3']
env:
# Released Bundler is broken on ruby-head due to ruby/ruby#16895.
# Use Ruby's bundled Bundler until rubygems/rubygems#9529 is released.
BUNDLER_VERSION: ${{ matrix.ruby == 'head' && '0' || '' }}
steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: duckdb cache
id: duckdb-cache
uses: actions/cache@v4
with:
path: libduckdb-osx-universal
key: ${{ runner.os }}-duckdb-v${{ matrix.duckdb }}
- name: Download duckdb ${{ matrix.duckdb }}
if: steps.duckdb-cache.outputs.cache-hit != 'true'
env:
DUCKDB_VERSION: ${{ matrix.duckdb }}
run: |
curl -OL https://github.com/duckdb/duckdb/releases/download/v${DUCKDB_VERSION}/libduckdb-osx-universal.zip
case "${DUCKDB_VERSION}" in
"1.5.3") EXPECTED_SHA256="386f8e8b3b4bc8d128762327121e22065ce45f2ee55ef1b1f412ce11e0e6c51f" ;;
"1.4.4") EXPECTED_SHA256="5e6d79f5fb86bbd4f24d59cee3bc38f113d1433761df35337e3c01c62eeafe26" ;;
*) echo "No known SHA256 for DuckDB v${DUCKDB_VERSION}"; exit 1 ;;
esac
echo "${EXPECTED_SHA256} libduckdb-osx-universal.zip" | shasum -a 256 -c
mkdir libduckdb-osx-universal
unzip libduckdb-osx-universal.zip -d libduckdb-osx-universal
- name: Build with Ruby ${{ matrix.ruby }}
run: |
bundle exec rake build -- --with-duckdb-include=${GITHUB_WORKSPACE}/libduckdb-osx-universal --with-duckdb-lib=${GITHUB_WORKSPACE}/libduckdb-osx-universal
- name: Setup MySQL
run: |
brew install mysql
brew services start mysql
sleep 5
mysql -u root -e "CREATE DATABASE test_db;"
mysql -u root -e "CREATE USER 'test_user'@'127.0.0.1' IDENTIFIED BY 'test_password';"
mysql -u root -e "GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'127.0.0.1';"
mysql -u root -e "FLUSH PRIVILEGES;"
- name: confirm duckdb library version
env:
EXPECTED_DUCKDB_VERSION: ${{ matrix.duckdb }}
DYLD_LIBRARY_PATH: ${{ github.workspace }}/libduckdb-osx-universal
run: |
ruby -Ilib -rduckdb -e '
actual = DuckDB::LIBRARY_VERSION
expected = ENV.fetch("EXPECTED_DUCKDB_VERSION")
abort("Expected DuckDB #{expected}, got #{actual}") if actual != expected
puts "duckdb library #{actual}"
'
- name: test with Ruby ${{ matrix.ruby }}
env:
MYSQL_TEST: 1
DYLD_LIBRARY_PATH: ${{ github.workspace }}/libduckdb-osx-universal
run: |
env RUBYOPT=-W:deprecated bundle exec rake test
post-test:
name: All tests passed on macos
runs-on: macos-latest
needs: test
steps:
- run: echo ok