github.com/anth0d/nomad@v0.0.0-20221214183521-ae3a0a2cad06/nomad/structs/config/limits_test.go (about) 1 package config 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/hashicorp/nomad/ci" 8 "github.com/hashicorp/nomad/helper/pointer" 9 "github.com/stretchr/testify/require" 10 ) 11 12 // TestLimits_Defaults asserts the default limits are valid. 13 func TestLimits_Defaults(t *testing.T) { 14 ci.Parallel(t) 15 16 l := DefaultLimits() 17 d, err := time.ParseDuration(l.HTTPSHandshakeTimeout) 18 require.NoError(t, err) 19 require.True(t, d > 0) 20 21 d, err = time.ParseDuration(l.RPCHandshakeTimeout) 22 require.NoError(t, err) 23 require.True(t, d > 0) 24 } 25 26 // TestLimits_Copy asserts Limits structs are deep copied. 27 func TestLimits_Copy(t *testing.T) { 28 ci.Parallel(t) 29 30 o := DefaultLimits() 31 c := o.Copy() 32 33 // Assert changes to copy are not propagated to the original 34 c.HTTPSHandshakeTimeout = "1s" 35 c.HTTPMaxConnsPerClient = pointer.Of(50) 36 c.RPCHandshakeTimeout = "1s" 37 c.RPCMaxConnsPerClient = pointer.Of(50) 38 39 require.NotEqual(t, c.HTTPSHandshakeTimeout, o.HTTPSHandshakeTimeout) 40 41 // Pointers should be different 42 require.True(t, c.HTTPMaxConnsPerClient != o.HTTPMaxConnsPerClient) 43 44 require.NotEqual(t, c.HTTPMaxConnsPerClient, o.HTTPMaxConnsPerClient) 45 require.NotEqual(t, c.RPCHandshakeTimeout, o.RPCHandshakeTimeout) 46 47 // Pointers should be different 48 require.True(t, c.RPCMaxConnsPerClient != o.RPCMaxConnsPerClient) 49 50 require.NotEqual(t, c.RPCMaxConnsPerClient, o.RPCMaxConnsPerClient) 51 } 52 53 // TestLimits_Merge asserts non-zero fields from the method argument take 54 // precedence over the existing limits. 55 func TestLimits_Merge(t *testing.T) { 56 ci.Parallel(t) 57 58 l := Limits{} 59 o := DefaultLimits() 60 m := l.Merge(o) 61 62 // Operands should not change 63 require.Equal(t, Limits{}, l) 64 require.Equal(t, DefaultLimits(), o) 65 66 // m == o 67 require.Equal(t, m, DefaultLimits()) 68 69 o.HTTPSHandshakeTimeout = "10s" 70 m2 := m.Merge(o) 71 72 // Operands should not change 73 require.Equal(t, m, DefaultLimits()) 74 75 // Use short struct initialization style so it fails to compile if 76 // fields are added 77 expected := Limits{"10s", pointer.Of(100), "5s", pointer.Of(100)} 78 require.Equal(t, expected, m2) 79 80 // Mergin in 0 values should not change anything 81 m3 := m2.Merge(Limits{}) 82 require.Equal(t, m2, m3) 83 }