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