diff --git a/pkg/logql/shardmapper_test.go b/pkg/logql/shardmapper_test.go index 9929c9e929..f02107b7ad 100644 --- a/pkg/logql/shardmapper_test.go +++ b/pkg/logql/shardmapper_test.go @@ -119,6 +119,51 @@ func TestMapSampleExpr(t *testing.T) { } } +func TestMappingStrings(t *testing.T) { + m, err := NewShardMapper(2) + require.Nil(t, err) + for _, tc := range []struct { + in string + out string + }{ + { + in: `sum(rate({foo="bar"}[1m]))`, + out: `sum(downstream ++ downstream)`, + }, + { + in: `max(count(rate({foo="bar"}[5m]))) / 2`, + out: `max(sum(downstream ++ downstream)) / 2.000000`, + }, + { + in: `topk(3, rate({foo="bar"}[5m]))`, + out: `topk(3,downstream ++ downstream)`, + }, + { + in: `sum(max(rate({foo="bar"}[5m])))`, + out: `sum(max(downstream ++ downstream))`, + }, + { + in: `{foo="bar"} |= "id=123"`, + out: `downstream<{foo="bar"}|="id=123", shard=0_of_2> ++ downstream<{foo="bar"}|="id=123", shard=1_of_2>`, + }, + { + in: `sum by (cluster) (rate({foo="bar"} |= "id=123" [5m]))`, + out: `sum by(cluster)(downstream ++ downstream)`, + }, + } { + t.Run(tc.in, func(t *testing.T) { + ast, err := ParseExpr(tc.in) + require.Nil(t, err) + + mapped, err := m.Map(ast) + require.Nil(t, err) + + require.Equal(t, tc.out, mapped.String()) + + }) + } +} + func TestMapping(t *testing.T) { m, err := NewShardMapper(2) require.Nil(t, err)