From 0b0720ab73d7f6378b8b6ac37acbafe547c268c8 Mon Sep 17 00:00:00 2001 From: Ayman Khalil Date: Tue, 25 Oct 2022 01:25:14 -0700 Subject: [PATCH] Fix marshalling time.Time{} to uint64 (#865) --- pulsar/internal/utils.go | 4 ++++ pulsar/internal/utils_test.go | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/pulsar/internal/utils.go b/pulsar/internal/utils.go index 0763cedcb4..e4a4994a3e 100644 --- a/pulsar/internal/utils.go +++ b/pulsar/internal/utils.go @@ -28,6 +28,10 @@ import ( // TimestampMillis return a time unix nano. func TimestampMillis(t time.Time) uint64 { + // calling UnixNano on the zero Time is undefined + if t.IsZero() { + return 0 + } return uint64(t.UnixNano()) / uint64(time.Millisecond) } diff --git a/pulsar/internal/utils_test.go b/pulsar/internal/utils_test.go index 65babd04e9..90d6f2d5b3 100644 --- a/pulsar/internal/utils_test.go +++ b/pulsar/internal/utils_test.go @@ -55,3 +55,8 @@ func TestParseRelativeTimeInSeconds(t *testing.T) { assert.Nil(t, err) assert.Equal(t, time.Duration(10)*time.Hour*24*7*365, timestamp) } + +func TestTimestampMillis(t *testing.T) { + assert.Equal(t, uint64(0), TimestampMillis(time.Time{})) + assert.Equal(t, uint64(7), TimestampMillis(time.Unix(0, 7*int64(time.Millisecond)))) +}