diff --git a/internal/internal.go b/internal/internal.go index 22cb685ac0a..5b55f586e25 100644 --- a/internal/internal.go +++ b/internal/internal.go @@ -53,5 +53,9 @@ func UnixNanoToTimestamp(u pdata.TimestampUnixNano) *timestamp.Timestamp { } func UnixNanoToTime(u pdata.TimestampUnixNano) time.Time { + // 0 is a special case and want to make sure we return a time that IsZero() returns true. + if u == 0 { + return time.Time{} + } return time.Unix(0, int64(u)).UTC() } diff --git a/internal/internal_test.go b/internal/internal_test.go index 9b683750305..906a2ea466f 100644 --- a/internal/internal_test.go +++ b/internal/internal_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package internal_test +package internal import ( "testing" @@ -22,7 +22,6 @@ import ( "github.com/stretchr/testify/assert" "go.opentelemetry.io/collector/consumer/pdata" - "go.opentelemetry.io/collector/internal" ) func TestTimeConverters(t *testing.T) { @@ -30,9 +29,9 @@ func TestTimeConverters(t *testing.T) { t1 := time.Date(2018, 10, 31, 19, 43, 35, 789, time.UTC) assert.EqualValues(t, int64(1541015015000000789), t1.UnixNano()) - tp := internal.TimeToTimestamp(t1) + tp := TimeToTimestamp(t1) assert.EqualValues(t, ×tamp.Timestamp{Seconds: 1541015015, Nanos: 789}, tp) - assert.EqualValues(t, int64(1541015015000000789), internal.TimestampToTime(tp).UnixNano()) + assert.EqualValues(t, int64(1541015015000000789), TimestampToTime(tp).UnixNano()) } func TestUnixNanosConverters(t *testing.T) { @@ -40,7 +39,13 @@ func TestUnixNanosConverters(t *testing.T) { tun := pdata.TimestampUnixNano(t1.UnixNano()) assert.EqualValues(t, uint64(1585012403000000789), tun) - tp := internal.UnixNanoToTimestamp(tun) + tp := UnixNanoToTimestamp(tun) assert.EqualValues(t, ×tamp.Timestamp{Seconds: 1585012403, Nanos: 789}, tp) - assert.EqualValues(t, tun, internal.TimestampToUnixNano(tp)) + assert.EqualValues(t, tun, TimestampToUnixNano(tp)) +} + +func TestZeroTimestamps(t *testing.T) { + assert.Nil(t, TimeToTimestamp(time.Time{})) + assert.Nil(t, UnixNanoToTimestamp(0)) + assert.True(t, UnixNanoToTime(0).IsZero()) }