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  }