Fail metrics parsing on unescaped quotes (#3409)
Before this change Fields() method on a metric parsed from a line with unescaped quotes could panic. This change makes such line unparseable. Fixes #3326
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package influx
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -24,6 +25,8 @@ const (
|
||||
validInfluxNoNewline = "cpu_load_short,cpu=cpu0 value=10 1257894000000000000"
|
||||
invalidInflux = "I don't think this is line protocol\n"
|
||||
invalidInflux2 = "{\"a\": 5, \"b\": {\"c\": 6}}\n"
|
||||
invalidInflux3 = `name text="unescaped "quote" ",value=1 1498077493081000000`
|
||||
invalidInflux4 = `name text="unbalanced "quote" 1498077493081000000`
|
||||
)
|
||||
|
||||
const influxMulti = `
|
||||
@@ -221,10 +224,21 @@ func TestParseInvalidInflux(t *testing.T) {
|
||||
assert.Error(t, err)
|
||||
_, err = parser.Parse([]byte(invalidInflux2))
|
||||
assert.Error(t, err)
|
||||
_, err = parser.Parse([]byte(invalidInflux3))
|
||||
assert.Error(t, err)
|
||||
fmt.Printf("%+v\n", err) // output for debug
|
||||
_, err = parser.Parse([]byte(invalidInflux4))
|
||||
assert.Error(t, err)
|
||||
|
||||
_, err = parser.ParseLine(invalidInflux)
|
||||
assert.Error(t, err)
|
||||
_, err = parser.ParseLine(invalidInflux2)
|
||||
assert.Error(t, err)
|
||||
_, err = parser.ParseLine(invalidInflux3)
|
||||
assert.Error(t, err)
|
||||
_, err = parser.ParseLine(invalidInflux4)
|
||||
assert.Error(t, err)
|
||||
|
||||
}
|
||||
|
||||
func BenchmarkParse(b *testing.B) {
|
||||
|
||||
Reference in New Issue
Block a user