github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/nomad/structs/config/plugins_test.go (about) 1 package config 2 3 import ( 4 "sort" 5 "testing" 6 7 "github.com/hashicorp/nomad/ci" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestPluginConfig_Merge(t *testing.T) { 12 ci.Parallel(t) 13 require := require.New(t) 14 a := &PluginConfig{ 15 Name: "foo", 16 Args: []string{"bar"}, 17 Config: map[string]interface{}{ 18 "baz": true, 19 }, 20 } 21 22 e1 := &PluginConfig{ 23 Name: "replaced", 24 Args: []string{"bar"}, 25 Config: map[string]interface{}{ 26 "baz": true, 27 }, 28 } 29 o1 := a.Merge(&PluginConfig{Name: "replaced"}) 30 require.Equal(e1, o1) 31 32 e2 := &PluginConfig{ 33 Name: "foo", 34 Args: []string{"replaced", "another"}, 35 Config: map[string]interface{}{ 36 "baz": true, 37 }, 38 } 39 o2 := a.Merge(&PluginConfig{ 40 Args: []string{"replaced", "another"}, 41 }) 42 require.Equal(e2, o2) 43 44 e3 := &PluginConfig{ 45 Name: "foo", 46 Args: []string{"bar"}, 47 Config: map[string]interface{}{ 48 "replaced": 1, 49 }, 50 } 51 o3 := a.Merge(&PluginConfig{ 52 Config: map[string]interface{}{ 53 "replaced": 1, 54 }, 55 }) 56 require.Equal(e3, o3) 57 } 58 59 func TestPluginConfigSet_Merge(t *testing.T) { 60 ci.Parallel(t) 61 require := require.New(t) 62 63 a := &PluginConfig{ 64 Name: "a", 65 Args: []string{"a1"}, 66 Config: map[string]interface{}{ 67 "a1": true, 68 }, 69 } 70 b1 := &PluginConfig{ 71 Name: "b", 72 Args: []string{"b1"}, 73 Config: map[string]interface{}{ 74 "b1": true, 75 }, 76 } 77 b2 := &PluginConfig{ 78 Name: "b", 79 Args: []string{"b2"}, 80 Config: map[string]interface{}{ 81 "b2": true, 82 }, 83 } 84 c := &PluginConfig{ 85 Name: "c", 86 Args: []string{"c"}, 87 Config: map[string]interface{}{ 88 "c1": true, 89 }, 90 } 91 92 s1 := []*PluginConfig{a, b1} 93 s2 := []*PluginConfig{b2, c} 94 95 out := PluginConfigSetMerge(s1, s2) 96 sort.Slice(out, func(i, j int) bool { 97 return out[i].Name < out[j].Name 98 }) 99 100 expected := []*PluginConfig{a, b2, c} 101 require.EqualValues(expected, out) 102 }