Fix bug parsing default timestamps with modified precision (#2949)

This commit is contained in:
Daniel Nelson 2017-06-23 10:59:04 -07:00 committed by GitHub
parent 2c61e5d3a5
commit 87f2b44566
2 changed files with 16 additions and 2 deletions

View File

@ -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

View File

@ -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 {