package logstorage import ( "testing" ) func TestParseStatsMaxSuccess(t *testing.T) { f := func(pipeStr string) { t.Helper() expectParseStatsFuncSuccess(t, pipeStr) } f(`max(*)`) f(`max(a)`) f(`max(a, b)`) } func TestParseStatsMaxFailure(t *testing.T) { f := func(pipeStr string) { t.Helper() expectParseStatsFuncFailure(t, pipeStr) } f(`max`) f(`max(a b)`) f(`max(x) y`) } func TestStatsMax(t *testing.T) { f := func(pipeStr string, rows, rowsExpected [][]Field) { t.Helper() expectPipeResults(t, pipeStr, rows, rowsExpected) } f("stats max(*) as x", [][]Field{ { {"_msg", `abc`}, {"a", `2`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, }, { {"a", `3`}, {"b", `54`}, }, }, [][]Field{ { {"x", "def"}, }, }) f("stats max(a) as x", [][]Field{ { {"_msg", `abc`}, {"a", `2`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, }, { {"a", `3`}, {"b", `54`}, }, }, [][]Field{ { {"x", "3"}, }, }) f("stats max(a, b) as x", [][]Field{ { {"_msg", `abc`}, {"a", `2`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, }, { {"a", `3`}, {"b", `54`}, {"c", "1232"}, }, }, [][]Field{ { {"x", "54"}, }, }) f("stats max(b) as x", [][]Field{ { {"_msg", `abc`}, {"a", `2`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, }, { {"a", `3`}, {"b", `54`}, }, }, [][]Field{ { {"x", "54"}, }, }) f("stats max(c) as x", [][]Field{ { {"_msg", `abc`}, {"a", `2`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, }, { {"a", `3`}, {"b", `54`}, }, }, [][]Field{ { {"x", ""}, }, }) f("stats max(a) if (b:*) as x", [][]Field{ { {"_msg", `abc`}, {"a", `2`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `3432`}, }, { {"a", `3`}, {"b", `54`}, }, }, [][]Field{ { {"x", "3"}, }, }) f("stats by (b) max(a) if (b:*) as x", [][]Field{ { {"_msg", `abc`}, {"a", `2`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, {"b", "3"}, }, { {"a", `3`}, {"c", `54`}, }, }, [][]Field{ { {"b", "3"}, {"x", "2"}, }, { {"b", ""}, {"x", ""}, }, }) f("stats by (a) max(b) as x", [][]Field{ { {"_msg", `abc`}, {"a", `1`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, }, { {"a", `3`}, {"b", `5`}, }, { {"a", `3`}, {"b", `7`}, }, }, [][]Field{ { {"a", "1"}, {"x", "3"}, }, { {"a", "3"}, {"x", "7"}, }, }) f("stats by (a) max(*) as x", [][]Field{ { {"_msg", `abc`}, {"a", `1`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, {"c", "10"}, }, { {"a", `3`}, {"b", `5`}, }, { {"a", `3`}, {"b", `7`}, }, }, [][]Field{ { {"a", "1"}, {"x", "def"}, }, { {"a", "3"}, {"x", "7"}, }, }) f("stats by (a) max(c) as x", [][]Field{ { {"_msg", `abc`}, {"a", `1`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, }, { {"a", `3`}, {"c", `foo`}, }, { {"a", `3`}, {"b", `7`}, }, }, [][]Field{ { {"a", "1"}, {"x", ""}, }, { {"a", "3"}, {"x", "foo"}, }, }) f("stats by (a) max(a, b, c) as x", [][]Field{ { {"_msg", `abc`}, {"a", `1`}, {"b", `34`}, }, { {"_msg", `def`}, {"a", `1`}, {"c", "3"}, }, { {"a", `3`}, {"b", `5`}, }, { {"a", `3`}, {"b", `7`}, }, }, [][]Field{ { {"a", "1"}, {"x", "34"}, }, { {"a", "3"}, {"x", "7"}, }, }) f("stats by (a, b) max(a) as x", [][]Field{ { {"_msg", `abc`}, {"a", `1`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, {"c", "3"}, }, { {"a", `3`}, {"b", `5`}, }, }, [][]Field{ { {"a", "1"}, {"b", "3"}, {"x", "1"}, }, { {"a", "1"}, {"b", ""}, {"x", "1"}, }, { {"a", "3"}, {"b", "5"}, {"x", "3"}, }, }) f("stats by (a, b) max(c) as x", [][]Field{ { {"_msg", `abc`}, {"a", `1`}, {"b", `3`}, }, { {"_msg", `def`}, {"a", `1`}, {"c", "foo"}, }, { {"a", `3`}, {"b", `5`}, {"c", "4"}, }, }, [][]Field{ { {"a", "1"}, {"b", "3"}, {"x", ""}, }, { {"a", "1"}, {"b", ""}, {"x", "foo"}, }, { {"a", "3"}, {"b", "5"}, {"x", "4"}, }, }) }