package insertutils import ( "testing" "github.com/VictoriaMetrics/VictoriaMetrics/lib/logstorage" ) func TestExtractTimestampRFC3339NanoFromFields_Success(t *testing.T) { f := func(timeField string, fields []logstorage.Field, nsecsExpected int64) { t.Helper() nsecs, err := ExtractTimestampRFC3339NanoFromFields(timeField, fields) if err != nil { t.Fatalf("unexpected error: %s", err) } if nsecs != nsecsExpected { t.Fatalf("unexpected nsecs; got %d; want %d", nsecs, nsecsExpected) } for _, f := range fields { if f.Name == timeField { if f.Value != "" { t.Fatalf("unexpected value for field %s; got %q; want %q", timeField, f.Value, "") } } } } f("time", []logstorage.Field{ {Name: "foo", Value: "bar"}, {Name: "time", Value: "2024-06-18T23:37:20Z"}, }, 1718753840000000000) f("time", []logstorage.Field{ {Name: "foo", Value: "bar"}, {Name: "time", Value: "2024-06-18T23:37:20+08:00"}, }, 1718725040000000000) f("time", []logstorage.Field{ {Name: "foo", Value: "bar"}, {Name: "time", Value: "2024-06-18T23:37:20.123-05:30"}, }, 1718773640123000000) f("time", []logstorage.Field{ {Name: "time", Value: "2024-06-18T23:37:20.123456789-05:30"}, {Name: "foo", Value: "bar"}, }, 1718773640123456789) } func TestExtractTimestampRFC3339NanoFromFields_Error(t *testing.T) { f := func(s string) { t.Helper() fields := []logstorage.Field{ {Name: "time", Value: s}, } nsecs, err := ExtractTimestampRFC3339NanoFromFields("time", fields) if err == nil { t.Fatalf("expecting non-nil error") } if nsecs != 0 { t.Fatalf("unexpected nsecs; got %d; want %d", nsecs, 0) } } f("foobar") // no Z at the end f("2024-06-18T23:37:20") // incomplete time f("2024-06-18") f("2024-06-18T23:37") }