|
| 1 | +# Inspired from: |
| 2 | +# - https://github.com/cockroachdb/sqlalchemy-cockroachdb/blob/master/.github/workflows/ci.yml |
| 3 | +# - https://github.com/rgeo/activerecord-postgis-adapter/blob/master/.github/workflows/tests.yml |
| 4 | +name: Test |
| 5 | + |
| 6 | +on: |
| 7 | + # Triggers the workflow on push or pull request events. |
| 8 | + push: |
| 9 | + # This should disable running the workflow on tags, according to the |
| 10 | + # on.<push|pull_request>.<branches|tags> GitHub Actions docs. |
| 11 | + branches: |
| 12 | + - "*" |
| 13 | + pull_request: |
| 14 | + types: [opened, reopened, synchronize] |
| 15 | + |
| 16 | + # Allows you to run this workflow manually from the Actions tab |
| 17 | + workflow_dispatch: |
| 18 | + |
| 19 | +# This allows a subsequently queued workflow run to interrupt previous runs. |
| 20 | +concurrency: |
| 21 | + group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' |
| 22 | + cancel-in-progress: true |
| 23 | + |
| 24 | +jobs: |
| 25 | + test: |
| 26 | + runs-on: ubuntu-latest |
| 27 | + strategy: |
| 28 | + matrix: |
| 29 | + crdb: [v23.1.5] |
| 30 | + ruby: [ruby-head] |
| 31 | + name: Test (crdb=${{ matrix.crdb }} ruby=${{ matrix.ruby }}) |
| 32 | + steps: |
| 33 | + - name: Set Up Actions |
| 34 | + uses: actions/checkout@v3 |
| 35 | + - name: Install GEOS |
| 36 | + run: sudo apt-get install libgeos-dev |
| 37 | + - name: Set Up Ruby |
| 38 | + uses: ruby/setup-ruby@v1 |
| 39 | + with: |
| 40 | + ruby-version: ${{ matrix.ruby }} |
| 41 | + bundler-cache: true |
| 42 | + - name: Install and Start Cockroachdb |
| 43 | + run: | |
| 44 | + # Download CockroachDB |
| 45 | + wget -qO- https://binaries.cockroachdb.com/cockroach-${{ matrix.crdb }}.linux-amd64.tgz | tar xvz |
| 46 | +
|
| 47 | + export PATH=./cockroach-${{ matrix.crdb }}.linux-amd64/:$PATH |
| 48 | + readonly urlfile=cockroach-url |
| 49 | +
|
| 50 | + # Start a CockroachDB server and wait for it to become ready. |
| 51 | + rm -f "$urlfile" |
| 52 | + rm -rf cockroach-data |
| 53 | + # Start CockroachDB. |
| 54 | + cockroach start-single-node --max-sql-memory=25% --cache=25% --insecure --host=localhost --spatial-libs=./cockroach-${{ matrix.crdb }}.linux-amd64/lib --listening-url-file="$urlfile" >/dev/null 2>&1 & |
| 55 | + # Ensure CockroachDB is stopped on script exit. |
| 56 | + # Wait until CockroachDB has started. |
| 57 | + for i in {0..3}; do |
| 58 | + [[ -f "$urlfile" ]] && break |
| 59 | + backoff=$((2 ** i)) |
| 60 | + echo "server not yet available; sleeping for $backoff seconds" |
| 61 | + sleep $backoff |
| 62 | + done |
| 63 | + cockroach sql --insecure -e " |
| 64 | + CREATE DATABASE activerecord_unittest; |
| 65 | + CREATE DATABASE activerecord_unittest2; |
| 66 | + SET CLUSTER SETTING sql.stats.automatic_collection.enabled = false; |
| 67 | + SET CLUSTER SETTING sql.stats.histogram_collection.enabled = false; |
| 68 | + SET CLUSTER SETTING jobs.retention_time = '180s'; |
| 69 | + SET CLUSTER SETTING sql.defaults.experimental_alter_column_type.enabled = 'true'; |
| 70 | +
|
| 71 | + ALTER RANGE default CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30; |
| 72 | + ALTER TABLE system.public.jobs CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30; |
| 73 | + ALTER RANGE meta CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30; |
| 74 | + ALTER RANGE system CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30; |
| 75 | + ALTER RANGE liveness CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30; |
| 76 | +
|
| 77 | + SET CLUSTER SETTING kv.range_merge.queue_interval = '50ms'; |
| 78 | + SET CLUSTER SETTING kv.raft_log.disable_synchronization_unsafe = 'true'; |
| 79 | + SET CLUSTER SETTING jobs.registry.interval.cancel = '180s'; |
| 80 | + SET CLUSTER SETTING jobs.registry.interval.gc = '30s'; |
| 81 | + SET CLUSTER SETTING kv.range_split.by_load_merge_delay = '5s'; |
| 82 | +
|
| 83 | + SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true'; |
| 84 | + " |
| 85 | + - name: Test |
| 86 | + run: bundle exec rake test |
0 commit comments