forked from shuttle-hq/synth
-
Notifications
You must be signed in to change notification settings - Fork 0
88 lines (84 loc) · 3.24 KB
/
synth-mysql.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
name: synth-mysql
on:
push:
branches: [ master ]
paths: [ '**/*.rs' ]
pull_request:
branches: [ master ]
paths: [ '**/*.rs' ]
workflow_dispatch:
env:
RUSTFLAGS: "-D warnings"
jobs:
e2e_tests_mysql:
runs-on: ubuntu-latest
services:
mysql:
image: mysql
env:
MYSQL_ROOT_PASSWORD: mysecretpassword
MYSQL_DATABASE: test_db
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
mariadb:
image: mariadb
env:
MYSQL_ROOT_PASSWORD: mysecretpassword
MYSQL_DATABASE: test_db
ports:
- 3307:3306
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=3
strategy:
matrix:
include:
- db: mysql
port: 3306
- db: mariadb
port: 3307
steps:
- uses: actions/checkout@v2
## Set env. variables for this job
- run: |
echo "MYSQL_HOST=127.0.0.1" >> $GITHUB_ENV
echo "MYSQL_USER=root" >> $GITHUB_ENV
echo "MYSQL_PORT=${{ matrix.port }}" >> $GITHUB_ENV
echo "MYSQL_ROOT_PASSWORD=mysecretpassword" >> $GITHUB_ENV
echo "MYSQL_DATABASE=test_db" >> $GITHUB_ENV
echo "DB_SCHEME=${{ matrix.db }}" >> $GITHUB_ENV
- run: |
sudo apt-get update
sudo apt-get install --yes --no-install-recommends mysql-client jq
- run: >
mysql -h "${{ env.MYSQL_HOST }}" -u "${{ env.MYSQL_USER }}" --password="${{ env.MYSQL_ROOT_PASSWORD }}"
-P "${{ env.MYSQL_PORT }}" "${{ env.MYSQL_DATABASE }}" < synth/testing_harness/mysql/0_hospital_schema.sql
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
- run: cargo +nightly install --debug --path=synth
- run: |
echo "Running generate test"
cd synth/testing_harness/mysql
synth generate hospital_master --to ${{ env.DB_SCHEME }}://${{ env.MYSQL_USER }}:${{ env.MYSQL_ROOT_PASSWORD }}@${{ env.MYSQL_HOST }}:${{ env.MYSQL_PORT }}/${{ env.MYSQL_DATABASE }} --size 10
bash "${GITHUB_WORKSPACE}/.github/workflows/scripts/validate_mysql_gen_count.sh"
## Clear out and repopulate DB
- run: >
mysql -h "${{ env.MYSQL_HOST }}" -u "${{ env.MYSQL_USER }}" --password="${{ env.MYSQL_ROOT_PASSWORD }}"
-P "${{ env.MYSQL_PORT }}" "${{ env.MYSQL_DATABASE }}" < synth/testing_harness/mysql/0_hospital_schema.sql
- run: >
mysql -h "${{ env.MYSQL_HOST }}" -u "${{ env.MYSQL_USER }}" --password="${{ env.MYSQL_ROOT_PASSWORD }}"
-P "${{ env.MYSQL_PORT }}" "${{ env.MYSQL_DATABASE }}" < synth/testing_harness/mysql/1_hospital_data.sql
- run: |
echo "Testing import"
cd synth/testing_harness/mysql
synth init || true
synth import --from ${{ env.DB_SCHEME }}://${{ env.MYSQL_USER }}:${{ env.MYSQL_ROOT_PASSWORD }}@${{ env.MYSQL_HOST }}:${{ env.MYSQL_PORT }}/${{ env.MYSQL_DATABASE }} hospital_import
diff <(jq --sort-keys . hospital_import/*) <(jq --sort-keys . hospital_master/*)