Fix bug parsing default timestamps with modified precision (#2949)
This commit is contained in:
parent
2c61e5d3a5
commit
87f2b44566
|
@ -129,7 +129,7 @@ func parseMetric(buf []byte,
|
||||||
// apply precision multiplier
|
// apply precision multiplier
|
||||||
var nsec int64
|
var nsec int64
|
||||||
multiplier := getPrecisionMultiplier(precision)
|
multiplier := getPrecisionMultiplier(precision)
|
||||||
if multiplier > 1 {
|
if len(ts) > 0 && multiplier > 1 {
|
||||||
tsint, err := parseIntBytes(ts, 10, 64)
|
tsint, err := parseIntBytes(ts, 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -380,11 +380,25 @@ func TestParsePrecision(t *testing.T) {
|
||||||
} {
|
} {
|
||||||
metrics, err := ParseWithDefaultTimePrecision(
|
metrics, err := ParseWithDefaultTimePrecision(
|
||||||
[]byte(tt.line+"\n"), time.Now(), tt.precision)
|
[]byte(tt.line+"\n"), time.Now(), tt.precision)
|
||||||
assert.NoError(t, err, tt)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, tt.expected, metrics[0].UnixNano())
|
assert.Equal(t, tt.expected, metrics[0].UnixNano())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestParsePrecisionUnsetTime(t *testing.T) {
|
||||||
|
for _, tt := range []struct {
|
||||||
|
line string
|
||||||
|
precision string
|
||||||
|
}{
|
||||||
|
{"test v=42", "s"},
|
||||||
|
{"test v=42", "ns"},
|
||||||
|
} {
|
||||||
|
_, err := ParseWithDefaultTimePrecision(
|
||||||
|
[]byte(tt.line+"\n"), time.Now(), tt.precision)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestParseMaxKeyLength(t *testing.T) {
|
func TestParseMaxKeyLength(t *testing.T) {
|
||||||
key := ""
|
key := ""
|
||||||
for {
|
for {
|
||||||
|
|
Loading…
Reference in New Issue