Skip to content

Commit

Permalink
Update ci command (#771)
Browse files Browse the repository at this point in the history
* Update ci command

* Update run_test.sh

* Update run_test.sh

* Change to large resource_class

* Force dependency

* force dependency

* logging debugging

* skip on postgres

* .type

* Remove redundant seed configs

* Switch back to mod for redshift instead of %

* Disable get_column_values default for a bit

* Disable get_column_values_use_default

* remove logging

* Apply code review changes
  • Loading branch information
joellabes authored May 1, 2023
1 parent 9507d6b commit 5502210
Show file tree
Hide file tree
Showing 9 changed files with 20 additions and 59 deletions.
9 changes: 9 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ jobs:
- store_artifacts:
path: integration_tests/target

# The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass
resource_class: large

integration-redshift:
docker:
- image: cimg/python:3.9
Expand All @@ -40,6 +43,8 @@ jobs:
path: integration_tests/logs
- store_artifacts:
path: integration_tests/target
# The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass
resource_class: large

integration-snowflake:
docker:
Expand All @@ -54,6 +59,8 @@ jobs:
path: integration_tests/logs
- store_artifacts:
path: integration_tests/target
# The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass
resource_class: large

integration-bigquery:
environment:
Expand All @@ -73,6 +80,8 @@ jobs:
path: integration_tests/logs
- store_artifacts:
path: integration_tests/target
# The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass
resource_class: large

workflows:
version: 2
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

.PHONY: test
test: ## Run the integration tests.
@./run_test.sh $(target) $(models) $(seeds)
@./run_test.sh $(target)

.PHONY: dev
dev: ## Installs dbt-* packages in develop mode along with development dependencies.
Expand Down
6 changes: 2 additions & 4 deletions integration_tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,17 +78,15 @@ make test target=postgres

or, to run tests for a single model:
```shell
make test target=[postgres|redshift|...] [models=...] [seeds=...]
make test target=[postgres|redshift|...]
```

or more specific:

```shell
make test target=postgres models=sql.test_star seeds=sql.data_star
make test target=postgres
```

Specying `models=` and `seeds=` is optional, however _if_ you specify `seeds`, you have to specify `models` too.

Where possible, targets are being run in docker containers (this works for Postgres or in the future Spark for example). For managed services like Snowflake, BigQuery and Redshift this is not possible, hence your own configuration for these services has to be provided in the appropriate env files in `integration_tests/.env/[TARGET].env`

### Creating a new integration test
Expand Down
18 changes: 0 additions & 18 deletions integration_tests/dbt_project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,24 +29,6 @@ seeds:
+quote_columns: false
dbt_utils_integration_tests:

cross_db:
data_date_trunc:
+column_types:
updated_at: timestamp
day: date
month: date

data_dateadd:
+column_types:
from_time: timestamp
result: timestamp

data_datediff:
+column_types:
first_date: timestamp
second_date: timestamp


sql:
data_events_20180103:
+schema: events
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
{{ config(materialized = 'table') }}

-- depends_on: {{ ref('data_events_20180101') }}, {{ ref('data_events_20180102') }}, {{ ref('data_events_20180103') }}

{% set relations = dbt_utils.get_relations_by_pattern(target.schema ~ '%', 'data_events_%') %}

with unioned as (
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
{{ config(materialized = 'table') }}

-- depends_on: {{ ref('data_events_20180101') }}, {{ ref('data_events_20180102') }}, {{ ref('data_events_20180103') }}

{% set relations = dbt_utils.get_relations_by_prefix(target.schema, 'data_events_') %}
{{ dbt_utils.union_relations(relations) }}
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@

{# This keeps succeeding locally and failing in CI. Disabling it to get everything else out, but it should still be tested. #}
{{ config(enabled = false)}}

{% set column_values = dbt_utils.get_column_values(ref('data_get_column_values_dropped'), 'field', default=['y', 'z'], order_by="field") %}

with expected as (
Expand Down
25 changes: 0 additions & 25 deletions macros/sql/width_bucket.sql
Original file line number Diff line number Diff line change
Expand Up @@ -29,31 +29,6 @@
)
{%- endmacro %}

{% macro redshift__width_bucket(expr, min_value, max_value, num_buckets) -%}

{% set bin_size -%}
(( {{ max_value }} - {{ min_value }} ) / {{ num_buckets }} )
{%- endset %}
(
-- to break ties when the amount is exactly at the bucket edge
case
when
{{ dbt.safe_cast(expr, dbt.type_numeric() ) }} %
{{ dbt.safe_cast(bin_size, dbt.type_numeric() ) }}
= 0
then 1
else 0
end
) +
-- Anything over max_value goes the N+1 bucket
least(
ceil(
({{ expr }} - {{ min_value }})/{{ bin_size }}
),
{{ num_buckets }} + 1
)
{%- endmacro %}

{% macro snowflake__width_bucket(expr, min_value, max_value, num_buckets) %}
width_bucket({{ expr }}, {{ min_value }}, {{ max_value }}, {{ num_buckets }} )
{% endmacro %}
12 changes: 1 addition & 11 deletions run_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,5 @@ export DBT_PROFILES_DIR=.
# Show the location of the profiles directory and test the connection
dbt debug --target $1

_models=""
_seeds="--full-refresh"
if [[ ! -z $2 ]]; then _models="--models $2"; fi
if [[ ! -z $3 ]]; then _seeds="--select $3 --full-refresh"; fi

dbt deps --target $1 || exit 1
dbt seed --target $1 $_seeds || exit 1
if [ $1 == 'redshift' ]; then
dbt run -x -m test_insert_by_period --full-refresh --target redshift || exit 1
fi
dbt run -x --target $1 $_models || exit 1
dbt test -x --target $1 $_models || exit 1
dbt build --target $1 --full-refresh || exit 1

0 comments on commit 5502210

Please sign in to comment.