Skip to content

Commit 56a89ab

Browse files
BuonOmorafiss
authored andcommitted
chore: matrix test for every crdb supported version
1 parent 5a8d713 commit 56a89ab

File tree

3 files changed

+38
-47
lines changed

3 files changed

+38
-47
lines changed

.github/workflows/ci.yml

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,17 @@ jobs:
3737
test:
3838
runs-on: ubuntu-latest
3939
strategy:
40+
fail-fast: false
4041
matrix:
41-
crdb: [v23.1.11]
42+
# https://www.cockroachlabs.com/docs/releases/release-support-policy
43+
crdb: [v22.2, v23.1, v23.2]
4244
ruby: [head]
4345
name: Test (crdb=${{ matrix.crdb }} ruby=${{ matrix.ruby }})
4446
steps:
4547
- name: Set Up Actions
4648
uses: actions/checkout@v4
4749
- name: Install GEOS
48-
run: sudo apt-get install libgeos-dev
50+
run: sudo apt-get install -yqq libgeos-dev
4951
- name: Set Up Ruby
5052
uses: ruby/setup-ruby@v1
5153
with:
@@ -54,16 +56,23 @@ jobs:
5456
- name: Install and Start Cockroachdb
5557
run: |
5658
# Download CockroachDB
57-
wget -qO- https://binaries.cockroachdb.com/cockroach-${{ matrix.crdb }}.linux-amd64.tgz | tar xvz
59+
readonly patch=$(
60+
ruby -rnet/http -ruri -e 'puts Net::HTTP.get(
61+
URI("https://www.cockroachlabs.com/docs/releases/${{ matrix.crdb }}")
62+
)[%r(https://binaries.cockroachdb.com/cockroach-${{ matrix.crdb }}.(\d+).linux-amd64.tgz), 1]'
63+
)
5864
59-
export PATH=./cockroach-${{ matrix.crdb }}.linux-amd64/:$PATH
65+
echo "Downloading ${{ matrix.crdb }}.$patch"
66+
wget -qO- "https://binaries.cockroachdb.com/cockroach-${{ matrix.crdb }}.$patch.linux-amd64.tgz" | tar xvz
67+
68+
export PATH=./cockroach-${{ matrix.crdb }}.$patch.linux-amd64/:$PATH
6069
readonly urlfile=cockroach-url
6170
6271
# Start a CockroachDB server and wait for it to become ready.
6372
rm -f "$urlfile"
6473
rm -rf cockroach-data
6574
# Start CockroachDB.
66-
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 &
75+
cockroach start-single-node --max-sql-memory=25% --cache=25% --insecure --host=localhost --spatial-libs=./cockroach-${{ matrix.crdb }}.$patch.linux-amd64/lib --listening-url-file="$urlfile" >/dev/null 2>&1 &
6776
# Ensure CockroachDB is stopped on script exit.
6877
# Wait until CockroachDB has started.
6978
for i in {0..3}; do
@@ -72,27 +81,6 @@ jobs:
7281
echo "server not yet available; sleeping for $backoff seconds"
7382
sleep $backoff
7483
done
75-
cockroach sql --insecure -e "
76-
CREATE DATABASE activerecord_unittest;
77-
CREATE DATABASE activerecord_unittest2;
78-
SET CLUSTER SETTING sql.stats.automatic_collection.enabled = false;
79-
SET CLUSTER SETTING sql.stats.histogram_collection.enabled = false;
80-
SET CLUSTER SETTING jobs.retention_time = '180s';
81-
SET CLUSTER SETTING sql.defaults.experimental_alter_column_type.enabled = 'true';
82-
83-
ALTER RANGE default CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30;
84-
ALTER TABLE system.public.jobs CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30;
85-
ALTER RANGE meta CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30;
86-
ALTER RANGE system CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30;
87-
ALTER RANGE liveness CONFIGURE ZONE USING num_replicas = 1, gc.ttlseconds = 30;
88-
89-
SET CLUSTER SETTING kv.range_merge.queue_interval = '50ms';
90-
SET CLUSTER SETTING kv.raft_log.disable_synchronization_unsafe = 'true';
91-
SET CLUSTER SETTING jobs.registry.interval.cancel = '180s';
92-
SET CLUSTER SETTING jobs.registry.interval.gc = '30s';
93-
SET CLUSTER SETTING kv.range_split.by_load_merge_delay = '5s';
94-
95-
SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true';
96-
"
84+
cat ${{ github.workspace }}/setup.sql | cockroach sql --insecure
9785
- name: Test
9886
run: bundle exec rake test TESTOPTS='--profile=3'

bin/start-cockroachdb

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ pid_file="$root_dir/tmp/cockroach.pid"
99
log_file="$root_dir/tmp/cockroachdb.log"
1010

1111
mkdir -p "$root_dir/tmp"
12-
[[ -f "$pid_file" ]] && kill -9 $(cat "$pid_file")
12+
[[ -f "$pid_file" ]] && kill -9 $(cat "$pid_file") || true
1313
rm -f "$pid_file"
1414

1515
if ! (( ${+commands[cockroach]} )); then
@@ -18,31 +18,16 @@ See https://www.cockroachlabs.com/docs/stable/install-cockroachdb.html'
1818
fi
1919

2020
cockroach start-single-node \
21-
--insecure --store=type=mem,size=0.25 --advertise-addr=localhost --pid-file "$pid_file" \
21+
--insecure --store=type=mem,size=0.25 --advertise-addr=localhost \
22+
--spatial-libs="$(geos-config --includes)" \
23+
--pid-file "$pid_file" \
2224
&> "$log_file" &
2325

2426
until [[ -f "$pid_file" ]]; do
2527
sleep 1
2628
done
2729

2830

29-
cat <<-SQL | cockroach sql --insecure --host=localhost:26257 > /dev/null
30-
-- https://www.cockroachlabs.com/docs/stable/local-testing.html
31-
SET CLUSTER SETTING kv.raft_log.disable_synchronization_unsafe = true;
32-
SET CLUSTER SETTING kv.range_merge.queue_interval = '50ms';
33-
SET CLUSTER SETTING jobs.registry.interval.gc = '30s';
34-
SET CLUSTER SETTING jobs.registry.interval.cancel = '180s';
35-
SET CLUSTER SETTING jobs.retention_time = '15s';
36-
SET CLUSTER SETTING sql.stats.automatic_collection.enabled = false;
37-
SET CLUSTER SETTING kv.range_split.by_load_merge_delay = '5s';
38-
ALTER RANGE default CONFIGURE ZONE USING "gc.ttlseconds" = 600;
39-
ALTER DATABASE system CONFIGURE ZONE USING "gc.ttlseconds" = 600;
40-
41-
CREATE DATABASE activerecord_unittest;
42-
CREATE DATABASE activerecord_unittest2;
43-
44-
SET CLUSTER SETTING sql.defaults.experimental_alter_column_type.enabled = 'true';
45-
SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true';
46-
SQL
31+
cat "$root_dir/setup.sql" | cockroach sql --insecure --host=localhost:26257 > /dev/null
4732

4833
echo "CockroachDB started. PID: $(cat "$pid_file"). log: $log_file"

setup.sql

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
-- https://www.cockroachlabs.com/docs/stable/local-testing.html
2+
SET CLUSTER SETTING kv.range_merge.queue_interval = '50ms';
3+
SET CLUSTER SETTING jobs.registry.interval.gc = '30s';
4+
SET CLUSTER SETTING jobs.registry.interval.cancel = '180s';
5+
SET CLUSTER SETTING jobs.retention_time = '15s';
6+
SET CLUSTER SETTING sql.stats.automatic_collection.enabled = false;
7+
SET CLUSTER SETTING kv.range_split.by_load_merge_delay = '5s';
8+
ALTER RANGE default CONFIGURE ZONE USING "gc.ttlseconds" = 600;
9+
ALTER DATABASE system CONFIGURE ZONE USING "gc.ttlseconds" = 600;
10+
11+
CREATE DATABASE activerecord_unittest;
12+
CREATE DATABASE activerecord_unittest2;
13+
14+
SET CLUSTER SETTING sql.stats.automatic_collection.enabled = false;
15+
SET CLUSTER SETTING sql.stats.histogram_collection.enabled = false;
16+
17+
SET CLUSTER SETTING sql.defaults.experimental_alter_column_type.enabled = 'true';
18+
SET CLUSTER SETTING sql.defaults.experimental_temporary_tables.enabled = 'true';

0 commit comments

Comments
 (0)