open-nomad/nomad/structs/config/plugins_test.go
2023-04-10 15:36:59 +00:00

106 lines
1.8 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package config
import (
"sort"
"testing"
"github.com/hashicorp/nomad/ci"
"github.com/stretchr/testify/require"
)
func TestPluginConfig_Merge(t *testing.T) {
ci.Parallel(t)
require := require.New(t)
a := &PluginConfig{
Name: "foo",
Args: []string{"bar"},
Config: map[string]interface{}{
"baz": true,
},
}
e1 := &PluginConfig{
Name: "replaced",
Args: []string{"bar"},
Config: map[string]interface{}{
"baz": true,
},
}
o1 := a.Merge(&PluginConfig{Name: "replaced"})
require.Equal(e1, o1)
e2 := &PluginConfig{
Name: "foo",
Args: []string{"replaced", "another"},
Config: map[string]interface{}{
"baz": true,
},
}
o2 := a.Merge(&PluginConfig{
Args: []string{"replaced", "another"},
})
require.Equal(e2, o2)
e3 := &PluginConfig{
Name: "foo",
Args: []string{"bar"},
Config: map[string]interface{}{
"replaced": 1,
},
}
o3 := a.Merge(&PluginConfig{
Config: map[string]interface{}{
"replaced": 1,
},
})
require.Equal(e3, o3)
}
func TestPluginConfigSet_Merge(t *testing.T) {
ci.Parallel(t)
require := require.New(t)
a := &PluginConfig{
Name: "a",
Args: []string{"a1"},
Config: map[string]interface{}{
"a1": true,
},
}
b1 := &PluginConfig{
Name: "b",
Args: []string{"b1"},
Config: map[string]interface{}{
"b1": true,
},
}
b2 := &PluginConfig{
Name: "b",
Args: []string{"b2"},
Config: map[string]interface{}{
"b2": true,
},
}
c := &PluginConfig{
Name: "c",
Args: []string{"c"},
Config: map[string]interface{}{
"c1": true,
},
}
s1 := []*PluginConfig{a, b1}
s2 := []*PluginConfig{b2, c}
out := PluginConfigSetMerge(s1, s2)
sort.Slice(out, func(i, j int) bool {
return out[i].Name < out[j].Name
})
expected := []*PluginConfig{a, b2, c}
require.EqualValues(expected, out)
}