VictoriaMetrics/lib/logstorage/stats_uniq_values_test.go
2024-05-22 21:01:20 +02:00

417 lines
5.3 KiB
Go

package logstorage
import (
"testing"
)
func TestParseStatsUniqValuesSuccess(t *testing.T) {
f := func(pipeStr string) {
t.Helper()
expectParseStatsFuncSuccess(t, pipeStr)
}
f(`uniq_values(*)`)
f(`uniq_values(a)`)
f(`uniq_values(a, b)`)
f(`uniq_values(a, b) limit 10`)
}
func TestParseStatsUniqValuesFailure(t *testing.T) {
f := func(pipeStr string) {
t.Helper()
expectParseStatsFuncFailure(t, pipeStr)
}
f(`uniq_values`)
f(`uniq_values(a b)`)
f(`uniq_values(x) y`)
f(`uniq_values(x) limit`)
f(`uniq_values(x) limit N`)
}
func TestStatsUniqValues(t *testing.T) {
f := func(pipeStr string, rows, rowsExpected [][]Field) {
t.Helper()
expectPipeResults(t, pipeStr, rows, rowsExpected)
}
f("stats uniq_values(*) as x", [][]Field{
{
{"_msg", `abc`},
{"a", `2`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
},
{
{"a", `-3`},
{"b", `54`},
},
}, [][]Field{
{
{"x", `["-3","1","2","3","54","abc","def"]`},
},
})
f("stats uniq_values(*) limit 1999 as x", [][]Field{
{
{"_msg", `abc`},
{"a", `2`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
},
{
{"a", `-3`},
{"b", `54`},
},
}, [][]Field{
{
{"x", `["-3","1","2","3","54","abc","def"]`},
},
})
f("stats uniq_values(a) as x", [][]Field{
{
{"_msg", `abc`},
{"a", `2`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
},
{
{"a", `3`},
{"b", `54`},
},
}, [][]Field{
{
{"x", `["1","2","3"]`},
},
})
f("stats uniq_values(a, b) as x", [][]Field{
{
{"_msg", `abc`},
{"a", `2`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
},
{
{"a", `3`},
{"b", `54`},
},
}, [][]Field{
{
{"x", `["1","2","3","54"]`},
},
})
f("stats uniq_values(b) as x", [][]Field{
{
{"_msg", `abc`},
{"a", `2`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
},
{
{"a", `3`},
{"b", `54`},
},
}, [][]Field{
{
{"x", `["3","54"]`},
},
})
f("stats uniq_values(c) as x", [][]Field{
{
{"_msg", `abc`},
{"a", `2`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
},
{
{"a", `3`},
{"b", `54`},
},
}, [][]Field{
{
{"x", `[]`},
},
})
f("stats uniq_values(a) if (b:*) as x", [][]Field{
{
{"_msg", `abc`},
{"a", `2`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
},
{
{"a", `3`},
{"b", `54`},
},
}, [][]Field{
{
{"x", `["2","3"]`},
},
})
f("stats by (b) uniq_values(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", `["1","2"]`},
},
{
{"b", ""},
{"x", `[]`},
},
})
f("stats by (a) uniq_values(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", `["5","7"]`},
},
})
f("stats by (a) uniq_values(*) as x", [][]Field{
{
{"_msg", `abc`},
{"a", `1`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
{"c", "3"},
},
{
{"a", `3`},
{"b", `5`},
},
{
{"a", `3`},
{"b", `7`},
},
}, [][]Field{
{
{"a", "1"},
{"x", `["1","3","abc","def"]`},
},
{
{"a", "3"},
{"x", `["3","5","7"]`},
},
})
f("stats by (a) uniq_values(*) limit 100 as x", [][]Field{
{
{"_msg", `abc`},
{"a", `1`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
{"c", "3"},
},
{
{"a", `3`},
{"b", `5`},
},
{
{"a", `3`},
{"b", `7`},
},
}, [][]Field{
{
{"a", "1"},
{"x", `["1","3","abc","def"]`},
},
{
{"a", "3"},
{"x", `["3","5","7"]`},
},
})
f("stats by (a) uniq_values(c) as x", [][]Field{
{
{"_msg", `abc`},
{"a", `1`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
},
{
{"a", `3`},
{"c", `5`},
},
{
{"a", `3`},
{"b", `7`},
},
}, [][]Field{
{
{"a", "1"},
{"x", `[]`},
},
{
{"a", "3"},
{"x", `["5"]`},
},
})
f("stats by (a) uniq_values(a, b, c) as x", [][]Field{
{
{"_msg", `abc`},
{"a", `1`},
{"b", `3`},
},
{
{"_msg", `def`},
{"a", `1`},
{"c", "3"},
},
{
{"a", `3`},
{"b", `5`},
},
{
{"a", `3`},
{"b", `7`},
},
}, [][]Field{
{
{"a", "1"},
{"x", `["1","3"]`},
},
{
{"a", "3"},
{"x", `["3","5","7"]`},
},
})
f("stats by (a, b) uniq_values(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) uniq_values(c) 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", `[]`},
},
{
{"a", "1"},
{"b", ""},
{"x", `["3"]`},
},
{
{"a", "3"},
{"b", "5"},
{"x", `[]`},
},
})
}