6bb7782745
* agent: configure server lastseen timestamp Signed-off-by: Dan Bond <danbond@protonmail.com> * use correct config Signed-off-by: Dan Bond <danbond@protonmail.com> * add comments Signed-off-by: Dan Bond <danbond@protonmail.com> * use default age in test golden data Signed-off-by: Dan Bond <danbond@protonmail.com> * add changelog Signed-off-by: Dan Bond <danbond@protonmail.com> * fix runtime test Signed-off-by: Dan Bond <danbond@protonmail.com> * agent: add server_metadata Signed-off-by: Dan Bond <danbond@protonmail.com> * update comments Signed-off-by: Dan Bond <danbond@protonmail.com> * correctly check if metadata file does not exist Signed-off-by: Dan Bond <danbond@protonmail.com> * follow instructions for adding new config Signed-off-by: Dan Bond <danbond@protonmail.com> * add comments Signed-off-by: Dan Bond <danbond@protonmail.com> * update comments Signed-off-by: Dan Bond <danbond@protonmail.com> * Update agent/agent.go Co-authored-by: Dan Upton <daniel@floppy.co> * agent/config: add validation for duration with min Signed-off-by: Dan Bond <danbond@protonmail.com> * docs: add new server_rejoin_age_max config definition Signed-off-by: Dan Bond <danbond@protonmail.com> * agent: add unit test for checking server last seen Signed-off-by: Dan Bond <danbond@protonmail.com> * agent: log continually for 60s before erroring Signed-off-by: Dan Bond <danbond@protonmail.com> * pr comments Signed-off-by: Dan Bond <danbond@protonmail.com> * remove unneeded todo * agent: fix error message Signed-off-by: Dan Bond <danbond@protonmail.com> --------- Signed-off-by: Dan Bond <danbond@protonmail.com> Co-authored-by: Dan Upton <daniel@floppy.co>
69 lines
1.3 KiB
Go
69 lines
1.3 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package consul
|
|
|
|
import (
|
|
"bytes"
|
|
"errors"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type mockServerMetadataWriter struct {
|
|
writeErr error
|
|
}
|
|
|
|
func (m *mockServerMetadataWriter) Write(p []byte) (n int, err error) {
|
|
if m.writeErr != nil {
|
|
return 0, m.writeErr
|
|
}
|
|
|
|
return 1, nil
|
|
}
|
|
|
|
func TestServerMetadata(t *testing.T) {
|
|
now := time.Now()
|
|
|
|
t.Run("TestIsLastSeenStaleTrue", func(t *testing.T) {
|
|
// Create a server that is 48 hours old.
|
|
md := &ServerMetadata{
|
|
LastSeenUnix: now.Add(-48 * time.Hour).Unix(),
|
|
}
|
|
|
|
stale := md.IsLastSeenStale(24 * time.Hour)
|
|
assert.True(t, stale)
|
|
})
|
|
|
|
t.Run("TestIsLastSeenStaleFalse", func(t *testing.T) {
|
|
// Create a server that is 1 hour old.
|
|
md := &ServerMetadata{
|
|
LastSeenUnix: now.Add(-1 * time.Hour).Unix(),
|
|
}
|
|
|
|
stale := md.IsLastSeenStale(24 * time.Hour)
|
|
assert.False(t, stale)
|
|
})
|
|
}
|
|
|
|
func TestWriteServerMetadata(t *testing.T) {
|
|
t.Run("TestWriteError", func(t *testing.T) {
|
|
m := &mockServerMetadataWriter{
|
|
writeErr: errors.New("write error"),
|
|
}
|
|
|
|
err := WriteServerMetadata(m)
|
|
assert.Error(t, err)
|
|
})
|
|
|
|
t.Run("TestOK", func(t *testing.T) {
|
|
b := new(bytes.Buffer)
|
|
|
|
err := WriteServerMetadata(b)
|
|
assert.NoError(t, err)
|
|
assert.True(t, b.Len() > 0)
|
|
})
|
|
}
|