-
Notifications
You must be signed in to change notification settings - Fork 99
147 lines (133 loc) · 5.53 KB
/
cd-sql-engine-tests.yaml
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
name: MetricFlow SQL Engine Tests
# Runs tests against the other SQL engines that are supported. These engines are hosted externally, and tend to be
# slower. As the test will be I/O bound, the tests can be run with higher parallelism to get faster runtimes.
on:
workflow_dispatch:
pull_request:
types: [labeled]
env:
EXTERNAL_ENGINE_TEST_PARALLELISM: 8
ADDITIONAL_PYTEST_OPTIONS: "--use-persistent-source-schema"
jobs:
snowflake-tests:
environment: DW_INTEGRATION_TESTS
# Run if manually triggered. Example case: run against `main` to check if something is broken.
# Run if a PR is given a specific label.
if: ${{ github.event.action != 'labeled' || github.event.label.name == 'Run Tests With Other SQL Engines' }}
name: Snowflake Tests
runs-on: ubuntu-latest
steps:
- name: Check-out the repo
uses: actions/checkout@v4
- uses: ./.github/actions/run-mf-tests
with:
mf_sql_engine_url: ${{ secrets.MF_SNOWFLAKE_URL }}
mf_sql_engine_password: ${{ secrets.MF_SNOWFLAKE_PWD }}
parallelism: ${{ env.EXTERNAL_ENGINE_TEST_PARALLELISM }}
additional-pytest-options: ${{ env.ADDITIONAL_PYTEST_OPTIONS }}
make-target: "test-snowflake"
hatch-environment-cache-config-json: >-
{
"configs": [
{"hatch_project_directory": ".", "hatch_environment_name": "snowflake-env"}
]
}
redshift-tests:
environment: DW_INTEGRATION_TESTS
name: Redshift Tests
if: ${{ github.event.action != 'labeled' || github.event.label.name == 'Run Tests With Other SQL Engines' }}
runs-on: ubuntu-latest
steps:
- name: Check-out the repo
uses: actions/checkout@v4
- uses: ./.github/actions/run-mf-tests
with:
mf_sql_engine_url: ${{ secrets.MF_REDSHIFT_URL }}
mf_sql_engine_password: ${{ secrets.MF_REDSHIFT_PWD }}
parallelism: ${{ env.EXTERNAL_ENGINE_TEST_PARALLELISM }}
additional-pytest-options: ${{ env.ADDITIONAL_PYTEST_OPTIONS }}
make-target: "test-redshift"
hatch-environment-cache-config-json: >-
{
"configs": [
{"hatch_project_directory": ".", "hatch_environment_name": "redshift-env"}
]
}
bigquery-tests:
environment: DW_INTEGRATION_TESTS
name: BigQuery Tests
if: ${{ github.event.action != 'labeled' || github.event.label.name == 'Run Tests With Other SQL Engines' }}
runs-on: ubuntu-latest
steps:
- name: Check-out the repo
uses: actions/checkout@v4
- uses: ./.github/actions/run-mf-tests
with:
MF_SQL_ENGINE_URL: ${{ secrets.MF_BIGQUERY_URL }}
MF_SQL_ENGINE_PASSWORD: ${{ secrets.MF_BIGQUERY_PWD }}
parallelism: ${{ env.EXTERNAL_ENGINE_TEST_PARALLELISM }}
additional-pytest-options: ${{ env.ADDITIONAL_PYTEST_OPTIONS }}
make-target: "test-bigquery"
hatch-environment-cache-config-json: >-
{
"configs": [
{"hatch_project_directory": ".", "hatch_environment_name": "bigquery-env"}
]
}
databricks-tests:
environment: DW_INTEGRATION_TESTS
name: Databricks Tests
if: ${{ github.event.action != 'labeled' || github.event.label.name == 'Run Tests With Other SQL Engines' }}
runs-on: ubuntu-latest
steps:
- name: Check-out the repo
uses: actions/checkout@v4
- uses: ./.github/actions/run-mf-tests
with:
mf_sql_engine_url: ${{ secrets.MF_DATABRICKS_URL }}
mf_sql_engine_password: ${{ secrets.MF_DATABRICKS_PWD }}
parallelism: ${{ env.EXTERNAL_ENGINE_TEST_PARALLELISM }}
additional-pytest-options: ${{ env.ADDITIONAL_PYTEST_OPTIONS }}
make-target: "test-databricks"
hatch-environment-cache-config-json: >-
{
"configs": [
{"hatch_project_directory": ".", "hatch_environment_name": "databricks-env"}
]
}
trino-tests:
# Trino tests run on a local service container, which obviates the need for separate Environment hosting.
# We run them here instead of in the CI unit test suite because they are a bit slower, and because in future
# we may choose to execute them against a hosted instance, at which point this config will look like the other
# engine configs in this file.
name: Trino Tests
if: ${{ github.event.action != 'labeled' || github.event.label.name == 'Run Tests With Other SQL Engines' }}
runs-on: ubuntu-latest
services:
trino:
image: trinodb/trino
ports:
- 8080:8080
steps:
- name: Check-out the repo
uses: actions/checkout@v4
- uses: ./.github/actions/run-mf-tests
with:
make-target: "test-trino"
hatch-environment-cache-config-json: >-
{
"configs": [
{"hatch_project_directory": ".", "hatch_environment_name": "trino-env"}
]
}
remove-label:
name: Remove Label After Running Tests
runs-on: ubuntu-latest
needs: [ snowflake-tests, redshift-tests, bigquery-tests, databricks-tests ]
# Default behavior for `needs` is that it requires success, so a success / failure needs to be specifically checked.
if: ${{ (success() || failure()) && github.event.action == 'labeled' }}
steps:
- name: Remove Label
uses: actions-ecosystem/action-remove-labels@v1
with:
labels: 'Run Tests With Other SQL Engines'