2023-04-17 10:21:21 +00:00
|
|
|
package config
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2023-09-04 09:55:01 +00:00
|
|
|
"github.com/databricks/cli/bundle/config/paths"
|
2023-05-16 16:35:39 +00:00
|
|
|
"github.com/databricks/cli/bundle/config/resources"
|
2023-04-17 10:21:21 +00:00
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestVerifyUniqueResourceIdentifiers(t *testing.T) {
|
|
|
|
r := Resources{
|
|
|
|
Jobs: map[string]*resources.Job{
|
|
|
|
"foo": {
|
2023-09-04 09:55:01 +00:00
|
|
|
Paths: paths.Paths{
|
2023-04-17 10:21:21 +00:00
|
|
|
ConfigFilePath: "foo.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Models: map[string]*resources.MlflowModel{
|
|
|
|
"bar": {
|
2023-09-04 09:55:01 +00:00
|
|
|
Paths: paths.Paths{
|
2023-04-17 10:21:21 +00:00
|
|
|
ConfigFilePath: "bar.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Experiments: map[string]*resources.MlflowExperiment{
|
|
|
|
"foo": {
|
2023-09-04 09:55:01 +00:00
|
|
|
Paths: paths.Paths{
|
2023-04-17 10:21:21 +00:00
|
|
|
ConfigFilePath: "foo2.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
_, err := r.VerifyUniqueResourceIdentifiers()
|
|
|
|
assert.ErrorContains(t, err, "multiple resources named foo (job at foo.yml, mlflow_experiment at foo2.yml)")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestVerifySafeMerge(t *testing.T) {
|
|
|
|
r := Resources{
|
|
|
|
Jobs: map[string]*resources.Job{
|
|
|
|
"foo": {
|
2023-09-04 09:55:01 +00:00
|
|
|
Paths: paths.Paths{
|
2023-04-17 10:21:21 +00:00
|
|
|
ConfigFilePath: "foo.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Models: map[string]*resources.MlflowModel{
|
|
|
|
"bar": {
|
2023-09-04 09:55:01 +00:00
|
|
|
Paths: paths.Paths{
|
2023-04-17 10:21:21 +00:00
|
|
|
ConfigFilePath: "bar.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
other := Resources{
|
|
|
|
Pipelines: map[string]*resources.Pipeline{
|
|
|
|
"foo": {
|
2023-09-04 09:55:01 +00:00
|
|
|
Paths: paths.Paths{
|
2023-04-17 10:21:21 +00:00
|
|
|
ConfigFilePath: "foo2.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
err := r.VerifySafeMerge(&other)
|
|
|
|
assert.ErrorContains(t, err, "multiple resources named foo (job at foo.yml, pipeline at foo2.yml)")
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestVerifySafeMergeForSameResourceType(t *testing.T) {
|
|
|
|
r := Resources{
|
|
|
|
Jobs: map[string]*resources.Job{
|
|
|
|
"foo": {
|
2023-09-04 09:55:01 +00:00
|
|
|
Paths: paths.Paths{
|
2023-04-17 10:21:21 +00:00
|
|
|
ConfigFilePath: "foo.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
Models: map[string]*resources.MlflowModel{
|
|
|
|
"bar": {
|
2023-09-04 09:55:01 +00:00
|
|
|
Paths: paths.Paths{
|
2023-04-17 10:21:21 +00:00
|
|
|
ConfigFilePath: "bar.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
other := Resources{
|
|
|
|
Jobs: map[string]*resources.Job{
|
|
|
|
"foo": {
|
2023-09-04 09:55:01 +00:00
|
|
|
Paths: paths.Paths{
|
2023-04-17 10:21:21 +00:00
|
|
|
ConfigFilePath: "foo2.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
err := r.VerifySafeMerge(&other)
|
|
|
|
assert.ErrorContains(t, err, "multiple resources named foo (job at foo.yml, job at foo2.yml)")
|
|
|
|
}
|
2023-10-16 15:32:49 +00:00
|
|
|
|
|
|
|
func TestVerifySafeMergeForRegisteredModels(t *testing.T) {
|
|
|
|
r := Resources{
|
|
|
|
Jobs: map[string]*resources.Job{
|
|
|
|
"foo": {
|
|
|
|
Paths: paths.Paths{
|
|
|
|
ConfigFilePath: "foo.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
RegisteredModels: map[string]*resources.RegisteredModel{
|
|
|
|
"bar": {
|
|
|
|
Paths: paths.Paths{
|
|
|
|
ConfigFilePath: "bar.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
other := Resources{
|
|
|
|
RegisteredModels: map[string]*resources.RegisteredModel{
|
|
|
|
"bar": {
|
|
|
|
Paths: paths.Paths{
|
|
|
|
ConfigFilePath: "bar2.yml",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
err := r.VerifySafeMerge(&other)
|
|
|
|
assert.ErrorContains(t, err, "multiple resources named bar (registered_model at bar.yml, registered_model at bar2.yml)")
|
|
|
|
}
|