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  }