87 lines
2.2 KiB
Go
87 lines
2.2 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package config
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/hashicorp/nomad/ci"
|
|
"github.com/hashicorp/nomad/helper/pointer"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// TestLimits_Defaults asserts the default limits are valid.
|
|
func TestLimits_Defaults(t *testing.T) {
|
|
ci.Parallel(t)
|
|
|
|
l := DefaultLimits()
|
|
d, err := time.ParseDuration(l.HTTPSHandshakeTimeout)
|
|
require.NoError(t, err)
|
|
require.True(t, d > 0)
|
|
|
|
d, err = time.ParseDuration(l.RPCHandshakeTimeout)
|
|
require.NoError(t, err)
|
|
require.True(t, d > 0)
|
|
}
|
|
|
|
// TestLimits_Copy asserts Limits structs are deep copied.
|
|
func TestLimits_Copy(t *testing.T) {
|
|
ci.Parallel(t)
|
|
|
|
o := DefaultLimits()
|
|
c := o.Copy()
|
|
|
|
// Assert changes to copy are not propagated to the original
|
|
c.HTTPSHandshakeTimeout = "1s"
|
|
c.HTTPMaxConnsPerClient = pointer.Of(50)
|
|
c.RPCHandshakeTimeout = "1s"
|
|
c.RPCMaxConnsPerClient = pointer.Of(50)
|
|
|
|
require.NotEqual(t, c.HTTPSHandshakeTimeout, o.HTTPSHandshakeTimeout)
|
|
|
|
// Pointers should be different
|
|
require.True(t, c.HTTPMaxConnsPerClient != o.HTTPMaxConnsPerClient)
|
|
|
|
require.NotEqual(t, c.HTTPMaxConnsPerClient, o.HTTPMaxConnsPerClient)
|
|
require.NotEqual(t, c.RPCHandshakeTimeout, o.RPCHandshakeTimeout)
|
|
|
|
// Pointers should be different
|
|
require.True(t, c.RPCMaxConnsPerClient != o.RPCMaxConnsPerClient)
|
|
|
|
require.NotEqual(t, c.RPCMaxConnsPerClient, o.RPCMaxConnsPerClient)
|
|
}
|
|
|
|
// TestLimits_Merge asserts non-zero fields from the method argument take
|
|
// precedence over the existing limits.
|
|
func TestLimits_Merge(t *testing.T) {
|
|
ci.Parallel(t)
|
|
|
|
l := Limits{}
|
|
o := DefaultLimits()
|
|
m := l.Merge(o)
|
|
|
|
// Operands should not change
|
|
require.Equal(t, Limits{}, l)
|
|
require.Equal(t, DefaultLimits(), o)
|
|
|
|
// m == o
|
|
require.Equal(t, m, DefaultLimits())
|
|
|
|
o.HTTPSHandshakeTimeout = "10s"
|
|
m2 := m.Merge(o)
|
|
|
|
// Operands should not change
|
|
require.Equal(t, m, DefaultLimits())
|
|
|
|
// Use short struct initialization style so it fails to compile if
|
|
// fields are added
|
|
expected := Limits{"10s", pointer.Of(100), "5s", pointer.Of(100)}
|
|
require.Equal(t, expected, m2)
|
|
|
|
// Mergin in 0 values should not change anything
|
|
m3 := m2.Merge(Limits{})
|
|
require.Equal(t, m2, m3)
|
|
}
|