Skip to content

Commit a7eee79

Browse files
ilidemipfcoperez
andauthored
Separate MySQL and MariaDB tests (#4517)
Changes: * Incorporate #4516 making Maria a separate DB in the matrix * Spawn out the maria-roots of e2e suites * Introduce TestIntegraion.../mysql and .../mariadb naming pattern for integration tests, filter from tilt with a matcher. MySQL-only are TestMySQLOnlyIntegration... to avoid running them from maria targets as parent tests are first ran to discover subtests. Unit tests are out of scope for tilt as they don't need any infra Also GitHub seems to not handle indentation diffs very well, most of the line changes are just subtest indentation --------- Co-authored-by: Pablo Francisco Pérez Hidalgo <pablo.perez@clickhouse.com>
1 parent a231c19 commit a7eee79

19 files changed

Lines changed: 430 additions & 299 deletions

.env.example

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,15 @@ CI_CLICKHOUSE_NATIVE_PORT=11000
1414
CI_MYSQL_HOST=host.docker.internal
1515
CI_MYSQL_GTID_PORT=3306
1616
CI_MYSQL_POS_PORT=3307
17-
CI_MARIADB_PORT=3308
1817
CI_MYSQL_ROOT_PASSWORD=cipass
1918
CI_MYSQL_GTID_VERSION=mysql-gtid
2019
CI_MYSQL_POS_VERSION=mysql-pos
21-
CI_MARIADB_VERSION=maria-gtid
20+
CI_SSH_MYSQL_HOST=host.docker.internal
21+
22+
CI_MARIADB_HOST=host.docker.internal
23+
CI_MARIADB_PORT=3308
24+
CI_MARIADB_ROOT_PASSWORD=cipass
25+
CI_MARIADB_VERSION=maria-11
2226

2327
CI_MYSQL_VERSION=mysql-gtid
2428
CI_MYSQL_PORT=3306 # Default is gtid

.github/workflows/flow.yml

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,13 @@ jobs:
3434
matrix:
3535
runner: [ubuntu-latest-16-cores]
3636
db-version: [
37-
{pg: 16, mysql: 'mysql-gtid', mongo: '6.0', ch: 'lts'},
38-
{pg: 17, mysql: 'mysql-pos', mongo: '7.0', ch: 'stable'},
39-
{pg: 18, mysql: 'maria-gtid', mongo: '8.0', ch: 'latest'},
37+
{pg: 16, mysql: 'mysql-gtid', mariadb: 'maria-11', mongo: '6.0', ch: 'lts'},
38+
{pg: 17, mysql: 'mysql-pos', mariadb: 'maria-12', mongo: '7.0', ch: 'stable'},
39+
{pg: 18, mysql: 'mysql-gtid', mariadb: 'maria-13', mongo: '8.0', ch: 'latest'},
4040
]
41-
# Per-version container settings consumed by the "MySQL" step, keyed by the matrix
42-
# db-version.mysql value. Grouped under "mysql" since these are MySQL/MariaDB families;
43-
# only the databases handled by the MySQL step are listed here. Wrapped in a single-item
44-
# list because matrix values must be arrays; it stays a single shared value (no extra jobs).
41+
# Per-version container settings consumed by the MySQL and MariaDB steps.
42+
# Wrapped in a single-item list because matrix values must be arrays; it stays
43+
# a single shared value (no extra jobs).
4544
version-configs:
4645
- mysql:
4746
mysql-gtid:
@@ -52,12 +51,17 @@ jobs:
5251
img: 'mysql:5.7'
5352
env: ['MYSQL_ROOT_PASSWORD=cipass']
5453
parameters: ['--log_bin=mysql-bin', '--server-id=1', '--bind-address=::']
55-
maria-pos:
56-
img: 'mariadb:lts-ubi9@sha256:55a81b2d791d2ff8ad33fef413d9e45e0ac57a951127e0cfc69a8e59f922ba6e'
54+
mariadb:
55+
maria-11:
56+
img: 'mariadb:lts-ubi9'
5757
env: ['MARIADB_ROOT_PASSWORD=cipass']
58-
parameters: ['--log-bin=maria']
59-
maria-gtid:
60-
img: 'mariadb:lts-ubi9@sha256:55a81b2d791d2ff8ad33fef413d9e45e0ac57a951127e0cfc69a8e59f922ba6e'
58+
parameters: ['--log-bin=maria', '--gtid-strict-mode=ON']
59+
maria-12:
60+
img: 'mariadb:12-ubi'
61+
env: ['MARIADB_ROOT_PASSWORD=cipass']
62+
parameters: ['--log-bin=maria', '--gtid-strict-mode=ON']
63+
maria-13:
64+
img: 'mariadb:13.0-ubi-rc'
6165
env: ['MARIADB_ROOT_PASSWORD=cipass']
6266
parameters: ['--log-bin=maria', '--gtid-strict-mode=ON']
6367
runs-on: ${{ matrix.runner }}
@@ -221,6 +225,15 @@ jobs:
221225
docker run -d --rm --name mysql --network ${{ job.container.network }} -p 3306:3306 \
222226
-e $DB_ENV $DB_IMG $DB_PARAMS
223227
228+
- name: MariaDB
229+
env:
230+
DB_IMG: ${{ matrix.version-configs.mariadb[matrix.db-version.mariadb].img }}
231+
DB_ENV: ${{ join(matrix.version-configs.mariadb[matrix.db-version.mariadb].env, ' -e ') }}
232+
DB_PARAMS: ${{ join(matrix.version-configs.mariadb[matrix.db-version.mariadb].parameters, ' ') }}
233+
run: |
234+
docker run -d --rm --name mariadb --network ${{ job.container.network }} -p 3316:3306 \
235+
-e $DB_ENV $DB_IMG $DB_PARAMS
236+
224237
- name: Mongo
225238
run: |
226239
echo "starting mongoDB..."
@@ -630,7 +643,15 @@ jobs:
630643
PEERDB_QUEUE_FORCE_TOPIC_CREATION: "true"
631644
ELASTICSEARCH_TEST_ADDRESS: http://localhost:9200
632645
CI_PG_VERSION: ${{ matrix.db-version.pg }}
646+
CI_MYSQL_HOST: localhost
647+
CI_MYSQL_PORT: 3306
648+
CI_MYSQL_ROOT_PASSWORD: cipass
633649
CI_MYSQL_VERSION: ${{ matrix.db-version.mysql }}
650+
CI_SSH_MYSQL_HOST: mysql
651+
CI_MARIADB_HOST: localhost
652+
CI_MARIADB_PORT: 3316
653+
CI_MARIADB_ROOT_PASSWORD: cipass
654+
CI_MARIADB_VERSION: ${{ matrix.db-version.mariadb }}
634655
CI_MONGO_ADMIN_URI: mongodb://localhost:27017
635656
CI_MONGO_ADMIN_USERNAME: "admin"
636657
CI_MONGO_ADMIN_PASSWORD: "admin"
@@ -669,7 +690,7 @@ jobs:
669690
if: always()
670691
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
671692
with:
672-
name: peer-flow-logs-pg${{ matrix.db-version.pg }}-my${{ matrix.db-version.mysql }}-mo${{ matrix.db-version.mongo }}
693+
name: peer-flow-logs-pg${{ matrix.db-version.pg }}-my${{ matrix.db-version.mysql }}-ma${{ matrix.db-version.mariadb }}-mo${{ matrix.db-version.mongo }}
673694
path: logs/
674695
retention-days: 30
675696

@@ -688,7 +709,7 @@ jobs:
688709
if: success() || failure()
689710
uses: ./.github/actions/ingest-test-results
690711
with:
691-
combination-id: "pg${{ matrix.db-version.pg }}-my${{ matrix.db-version.mysql }}-mo${{ matrix.db-version.mongo }}-ch${{ matrix.db-version.ch }}"
712+
combination-id: "pg${{ matrix.db-version.pg }}-my${{ matrix.db-version.mysql }}-ma${{ matrix.db-version.mariadb }}-mo${{ matrix.db-version.mongo }}-ch${{ matrix.db-version.ch }}"
692713
o11y-api-key-id: ${{ secrets.CI_O11Y_TARGET_API_KEY_ID }}
693714
o11y-api-key-secret: ${{ secrets.CI_O11Y_TARGET_API_KEY_SECRET }}
694715
o11y-query-endpoint: ${{ secrets.CI_O11Y_TARGET_QUERY_ENDPOINT }}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ Available test launchers:
146146
- **e2e_postgres** -- Postgres to ClickHouse generic tests (`TestGenericCH_PG`)
147147
- **e2e_mysql-gtid** -- MySQL GTID to ClickHouse generic tests (`TestGenericCH_MySQL`)
148148
- **e2e_mysql-pos** -- MySQL File-Pos to ClickHouse generic tests (`TestGenericCH_MySQL`)
149-
- **e2e_mariadb** -- MariaDB to ClickHouse generic tests (`TestGenericCH_MySQL`)
149+
- **e2e_mariadb** -- MariaDB to ClickHouse generic tests (`TestGenericCH_MariaDB`)
150150
- **e2e_mongodb** -- MongoDB to ClickHouse test suite (`TestMongoClickhouseSuite`)
151151

152152
Each launcher automatically depends on the required services and provisioning steps, so Tilt will ensure all prerequisites are running before executing the tests. To trigger a test, click the resource in the Tilt UI and press the trigger (play) button.

Tiltfile

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -295,11 +295,12 @@ def e2e_test(name, test_run, extra_deps=[], vars_overrides={}):
295295
allow_parallel=True,
296296
)
297297

298-
def connector_test(connector, extra_deps=[], vars_overrides={}, name=''):
298+
def connector_test(connector, extra_deps=[], vars_overrides={}, name='', test_run=''):
299299
overrides_str = ' '.join(['%s=%s' % (var, value) for var, value in vars_overrides.items()])
300+
test_run_arg = (' -run %s' % test_run) if test_run else ''
300301
local_resource(
301302
'connector_' + (name or connector),
302-
cmd='cd flow && %s go test -count=1 -v ./connectors/%s/...' % (overrides_str, connector),
303+
cmd='cd flow && %s go test -count=1 -v%s ./connectors/%s/...' % (overrides_str, test_run_arg, connector),
303304
labels=['Test'],
304305
auto_init=False,
305306
resource_deps=['catalog'] + extra_deps,
@@ -310,14 +311,19 @@ def connector_test(connector, extra_deps=[], vars_overrides={}, name=''):
310311
mysql_gtid_vars = {
311312
'CI_MYSQL_PORT': resolve_env('CI_MYSQL_GTID_PORT'),
312313
'CI_MYSQL_VERSION': resolve_env('CI_MYSQL_GTID_VERSION'),
314+
'CI_MYSQL_ROOT_PASSWORD': resolve_env('CI_MYSQL_ROOT_PASSWORD'),
315+
'CI_SSH_MYSQL_HOST': resolve_env('CI_SSH_MYSQL_HOST'),
313316
}
314317
mysql_pos_vars = {
315318
'CI_MYSQL_PORT': resolve_env('CI_MYSQL_POS_PORT'),
316319
'CI_MYSQL_VERSION': resolve_env('CI_MYSQL_POS_VERSION'),
320+
'CI_MYSQL_ROOT_PASSWORD': resolve_env('CI_MYSQL_ROOT_PASSWORD'),
321+
'CI_SSH_MYSQL_HOST': resolve_env('CI_SSH_MYSQL_HOST'),
317322
}
318323
mariadb_vars = {
319-
'CI_MYSQL_PORT': resolve_env('CI_MARIADB_PORT'),
320-
'CI_MYSQL_VERSION': resolve_env('CI_MARIADB_VERSION'),
324+
'CI_MARIADB_PORT': resolve_env('CI_MARIADB_PORT'),
325+
'CI_MARIADB_VERSION': resolve_env('CI_MARIADB_VERSION'),
326+
'CI_MARIADB_ROOT_PASSWORD': resolve_env('CI_MARIADB_ROOT_PASSWORD'),
321327
}
322328

323329
# Generic e2e tests
@@ -333,7 +339,7 @@ e2e_test('mysql-gtid', 'TestGenericCH_MySQL', ['provision-mysql-gtid'], vars_ove
333339
e2e_test('mysql-pos', 'TestGenericCH_MySQL', ['provision-mysql-pos'], vars_overrides=mysql_pos_vars)
334340

335341
# MariaDB to ClickHouse generic tests
336-
e2e_test('mariadb', 'TestGenericCH_MySQL', ['provision-mariadb'], vars_overrides=mariadb_vars)
342+
e2e_test('mariadb', 'TestGenericCH_MariaDB', ['provision-mariadb'], vars_overrides=mariadb_vars)
337343

338344
# MongoDB to ClickHouse test suite
339345
e2e_test('mongodb', 'TestMongoClickhouseSuite', ['provision-mongodb'])
@@ -344,7 +350,7 @@ e2e_test('switchboard-postgres', 'TestSwitchboardPostgres', ['provision-postgres
344350

345351
e2e_test('switchboard-mysql-gtid', 'TestSwitchboardMySQL', ['provision-mysql-gtid'], vars_overrides=mysql_gtid_vars)
346352
e2e_test('switchboard-mysql-pos', 'TestSwitchboardMySQL', ['provision-mysql-pos'], vars_overrides=mysql_pos_vars)
347-
e2e_test('switchboard-mariadb', 'TestSwitchboardMySQL', ['provision-mariadb'], vars_overrides=mariadb_vars)
353+
e2e_test('switchboard-mariadb', 'TestSwitchboardMariaDB', ['provision-mariadb'], vars_overrides=mariadb_vars)
348354

349355
e2e_test('switchboard-mongodb', 'TestSwitchboardMongo', ['provision-mongodb'])
350356

@@ -354,25 +360,25 @@ e2e_test('peer-flow-postgres', '^TestPeerFlowE2ETestSuitePG_CH$', ['provision-po
354360

355361
e2e_test('peer-flow-mysql-gtid', '^TestPeerFlowE2ETestSuiteMySQL_CH$', ['provision-mysql-gtid'], vars_overrides=mysql_gtid_vars)
356362
e2e_test('peer-flow-mysql-pos', '^TestPeerFlowE2ETestSuiteMySQL_CH$', ['provision-mysql-pos'], vars_overrides=mysql_pos_vars)
357-
e2e_test('peer-flow-mariadb', '^TestPeerFlowE2ETestSuiteMySQL_CH$', ['provision-mariadb'], vars_overrides=mariadb_vars)
363+
e2e_test('peer-flow-mariadb', '^TestPeerFlowE2ETestSuiteMariaDB_CH$', ['provision-mariadb'], vars_overrides=mariadb_vars)
358364

359365
# API e2e tests
360366

361367
e2e_test('api-postgres', 'TestApiPg', ['provision-postgres'])
362368

363369
e2e_test('api-mysql-gtid', 'TestApiMy', ['provision-mysql-gtid', 'provision-postgres'], vars_overrides=mysql_gtid_vars)
364370
e2e_test('api-mysql-pos', 'TestApiMy', ['provision-mysql-pos', 'provision-postgres'], vars_overrides=mysql_pos_vars)
365-
e2e_test('api-mariadb', 'TestApiMy', ['provision-mariadb', 'provision-postgres'], vars_overrides=mariadb_vars)
371+
e2e_test('api-mariadb', 'TestApiMariaDB', ['provision-mariadb', 'provision-postgres'], vars_overrides=mariadb_vars)
366372

367373
e2e_test('api-mongodb', 'TestApiMongo', ['provision-mongodb'])
368374

369375
# Connectors tests
370376

371377
connector_test('postgres', ['provision-postgres'])
372378

373-
connector_test('mysql', ['provision-mysql-gtid'], vars_overrides=mysql_gtid_vars, name='mysql-gtid')
374-
connector_test('mysql', ['provision-mysql-pos'], vars_overrides=mysql_pos_vars, name='mysql-pos')
375-
connector_test('mysql', ['provision-mariadb'], vars_overrides=mariadb_vars, name='mariadb')
379+
connector_test('mysql', ['provision-mysql-gtid'], vars_overrides=mysql_gtid_vars, name='mysql-gtid', test_run="'(TestMySQLOnlyIntegration|TestIntegration.*)/mysql$'")
380+
connector_test('mysql', ['provision-mysql-pos'], vars_overrides=mysql_pos_vars, name='mysql-pos', test_run="'(TestMySQLOnlyIntegration|TestIntegration.*)/mysql$'")
381+
connector_test('mysql', ['provision-mariadb'], vars_overrides=mariadb_vars, name='mariadb', test_run="'TestIntegration.*/mariadb$'")
376382

377383
connector_test('mongo', ['provision-mongodb'])
378384

ancillary-docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,11 @@ services:
111111
ports:
112112
- "${CI_MARIADB_PORT}:3306"
113113
environment:
114-
MARIADB_ROOT_PASSWORD: ${CI_MYSQL_ROOT_PASSWORD}
114+
MARIADB_ROOT_PASSWORD: ${CI_MARIADB_ROOT_PASSWORD}
115115
extra_hosts:
116116
- "host.docker.internal:host-gateway"
117117
healthcheck:
118-
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-uroot", "-p${CI_MYSQL_ROOT_PASSWORD}"]
118+
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost", "-uroot", "-p${CI_MARIADB_ROOT_PASSWORD}"]
119119
interval: 2s
120120
timeout: 10s
121121
retries: 5

0 commit comments

Comments
 (0)