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