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