test(parsers.json): add fuzz test (#12368)
This commit is contained in:
parent
1050d35f33
commit
42640b1def
|
|
@ -0,0 +1,42 @@
|
||||||
|
package fuzz
|
||||||
|
|
||||||
|
// https://github.com/google/AFL/blob/master/dictionaries/json.dict
|
||||||
|
var JSONDictionary = []string{
|
||||||
|
"0",
|
||||||
|
",0",
|
||||||
|
":0",
|
||||||
|
"0:",
|
||||||
|
"-1.2e+3",
|
||||||
|
"true",
|
||||||
|
"false",
|
||||||
|
"null",
|
||||||
|
"\"\"",
|
||||||
|
",\"\"",
|
||||||
|
":\"\"",
|
||||||
|
"\"\":",
|
||||||
|
"{}",
|
||||||
|
",{}",
|
||||||
|
":{}",
|
||||||
|
"{\"\":0}",
|
||||||
|
"{{}}",
|
||||||
|
"[]",
|
||||||
|
",[]",
|
||||||
|
":[]",
|
||||||
|
"[0]",
|
||||||
|
"[[]]",
|
||||||
|
"''",
|
||||||
|
"\\",
|
||||||
|
"\\b",
|
||||||
|
"\\f",
|
||||||
|
"\\n",
|
||||||
|
"\\r",
|
||||||
|
"\\t",
|
||||||
|
"\\u0000",
|
||||||
|
"\\x00",
|
||||||
|
"\\0",
|
||||||
|
"\\uD800\\uDC00",
|
||||||
|
"\\uDBFF\\uDFFF",
|
||||||
|
"\"\":0",
|
||||||
|
"//",
|
||||||
|
"/**/",
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
|
"github.com/influxdata/telegraf/internal/fuzz"
|
||||||
"github.com/influxdata/telegraf/testutil"
|
"github.com/influxdata/telegraf/testutil"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
@ -1356,3 +1357,23 @@ func TestParseArrayWithWildcardTagKeys(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func FuzzParserJSON(f *testing.F) {
|
||||||
|
for _, value := range fuzz.JSONDictionary {
|
||||||
|
f.Add([]byte(value))
|
||||||
|
}
|
||||||
|
|
||||||
|
f.Add([]byte(validJSON))
|
||||||
|
f.Add([]byte(validJSONArray))
|
||||||
|
f.Add([]byte(validJSONArrayMultiple))
|
||||||
|
f.Add([]byte(validJSONArrayTags))
|
||||||
|
f.Add([]byte(validJSONNewline))
|
||||||
|
f.Add([]byte(validJSONTags))
|
||||||
|
|
||||||
|
parser := &Parser{MetricName: "testing"}
|
||||||
|
require.NoError(f, parser.Init())
|
||||||
|
|
||||||
|
f.Fuzz(func(t *testing.T, input []byte) {
|
||||||
|
_, _ = parser.Parse(input)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue