diff --git a/client/internal/httpsender_test.go b/client/internal/httpsender_test.go index 65df9c5..8c2034f 100644 --- a/client/internal/httpsender_test.go +++ b/client/internal/httpsender_test.go @@ -62,6 +62,22 @@ func TestHTTPSenderRetryForStatusTooManyRequests(t *testing.T) { srv.Close() } +func TestHTTPSenderSetHeartbeatInterval(t *testing.T) { + sender := NewHTTPSender(&sharedinternal.NopLogger{}) + + // Default interval should be 30s as per OpAMP Specification + assert.Equal(t, (30 * time.Second).Milliseconds(), sender.pollingIntervalMs) + + // zero is invalid for http sender + sender.SetHeartbeatInterval(0) + assert.Equal(t, (30 * time.Second).Milliseconds(), sender.pollingIntervalMs) + + // zero should be valid for http sender + expected := 10 * time.Second + sender.SetHeartbeatInterval(expected) + assert.Equal(t, expected.Milliseconds(), sender.pollingIntervalMs) +} + func TestAddTLSConfig(t *testing.T) { sender := NewHTTPSender(&sharedinternal.NopLogger{}) diff --git a/client/internal/wssender_test.go b/client/internal/wssender_test.go new file mode 100644 index 0000000..801b5ca --- /dev/null +++ b/client/internal/wssender_test.go @@ -0,0 +1,24 @@ +package internal + +import ( + "testing" + "time" + + sharedinternal "github.com/open-telemetry/opamp-go/internal" + "github.com/stretchr/testify/assert" +) + +func TestWSSenderSetHeartbeatInterval(t *testing.T) { + sender := NewSender(&sharedinternal.NopLogger{}) + + // Default interval should be 30s as per OpAMP Specification + assert.Equal(t, int64((30 * time.Second).Seconds()), sender.heartbeatIntervalSeconds.Load()) + + // zero is valid for ws sender + sender.SetHeartbeatInterval(0) + assert.Equal(t, int64(0), sender.heartbeatIntervalSeconds.Load()) + + var expected int64 = 10 + sender.SetHeartbeatInterval(time.Duration(expected) * time.Second) + assert.Equal(t, expected, sender.heartbeatIntervalSeconds.Load()) +}