Skip to content

Commit 51afc3b

Browse files
denikIsaac
andauthored
acc: record main's behaviour for reference, override and required-field edge cases (#7130)
## Changes Add four acceptance tests that record how main handles edge cases of references, overrides and required fields: - `override/cluster_id_clears_new_cluster_reference` - `override/preset_clears_forced_schedule_reference` - `resource_deps/whole_map_reference_hides_entries` - `validate/required_struct_reference` ## Why Records today's behaviour before it changes in #7098, so that PR's diff shows what moves. ## Tests Goldens generated on main. This pull request and its description were written by Isaac. --------- Co-authored-by: Isaac <no-reply@databricks.com>
1 parent 35ed095 commit 51afc3b

33 files changed

Lines changed: 235 additions & 0 deletions

File tree

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
bundle:
2+
name: test-bundle
3+
cluster_id: existing-cluster
4+
5+
variables:
6+
cluster:
7+
type: complex
8+
default:
9+
num_workers: 1
10+
11+
resources:
12+
clusters:
13+
source:
14+
num_workers: 2
15+
jobs:
16+
job:
17+
name: job
18+
tasks:
19+
# bundle.cluster_id replaces new_cluster. The reference below it must go too.
20+
- task_key: scalar_ref
21+
new_cluster:
22+
num_workers: ${resources.clusters.source.num_workers}
23+
# A reference to the whole new_cluster must not bring it back.
24+
- task_key: variable_ref
25+
new_cluster: ${var.cluster}
26+
# A reference to the new_cluster of another job is resolved after the override.
27+
- task_key: resource_ref
28+
new_cluster: ${resources.jobs.other.job_clusters[0].new_cluster}
29+
other:
30+
name: other
31+
job_clusters:
32+
- job_cluster_key: shared
33+
new_cluster:
34+
num_workers: 3
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Cloud = false
2+
EnvMatrix.DMS = ["", "true"]
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
>>> [CLI] bundle validate -o json
3+
[
4+
{
5+
"existing_cluster_id": "existing-cluster",
6+
"task_key": "resource_ref"
7+
},
8+
{
9+
"existing_cluster_id": "existing-cluster",
10+
"task_key": "scalar_ref"
11+
},
12+
{
13+
"existing_cluster_id": "existing-cluster",
14+
"task_key": "variable_ref"
15+
}
16+
]
17+
18+
>>> [CLI] bundle deploy
19+
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...
20+
Created clusters.source
21+
Created jobs.job
22+
Created jobs.other
23+
Files: 1 uploaded, 0 deleted
24+
Resources: 3 created, 0 changed, 0 deleted, 0 unchanged
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# bundle.cluster_id replaces new_cluster on every task, also when new_cluster holds a reference.
2+
trace $CLI bundle validate -o json | jq .resources.jobs.job.tasks
3+
trace $CLI bundle deploy
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
bundle:
2+
name: test-bundle
3+
4+
resources:
5+
quality_monitors:
6+
src:
7+
table_name: main.default.src
8+
assets_dir: /Workspace/monitors/src
9+
output_schema_name: main.default
10+
schedule:
11+
quartz_cron_expression: "0 0 12 * * ?"
12+
timezone_id: UTC
13+
dst:
14+
table_name: main.default.dst
15+
assets_dir: /Workspace/monitors/dst
16+
output_schema_name: main.default
17+
18+
targets:
19+
dev:
20+
presets:
21+
trigger_pause_status: PAUSED
22+
resources:
23+
quality_monitors:
24+
dst:
25+
schedule: ${resources.quality_monitors.src.schedule}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Cloud = false
2+
EnvMatrix.DMS = ["", "true"]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
>>> [CLI] bundle deploy
3+
Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/dev/files...
4+
Created quality_monitors.dst
5+
Created quality_monitors.src
6+
Files: 1 uploaded, 0 deleted
7+
Resources: 2 created, 0 changed, 0 deleted, 0 unchanged
8+
9+
>>> print_requests.py //tables/main.default.dst/monitor
10+
{
11+
"assets_dir": "/Workspace/monitors/dst",
12+
"output_schema_name": "main.default"
13+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# trigger_pause_status: PAUSED removes the schedules. The target override replaces the null schedule of dst
2+
# with a reference to the schedule of src, which is removed too: the request carries no schedule.
3+
trace $CLI bundle deploy
4+
trace print_requests.py //tables/main.default.dst/monitor | jq .body
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
RecordRequests = true
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
bundle:
2+
name: test-bundle
3+
4+
presets:
5+
name_prefix: "pre-"
6+
7+
resources:
8+
jobs:
9+
base:
10+
name: base
11+
viaref:
12+
name: ${resources.jobs.base.name}

0 commit comments

Comments
 (0)