blob: 76b97c603ec39e1c733b2d66b1df30c99416fd98 [file] [log] [blame]
package ignore
import (
"net/url"
"testing"
"time"
"github.com/stretchr/testify/require"
"go.skia.org/infra/go/paramtools"
"go.skia.org/infra/go/testutils/unittest"
data "go.skia.org/infra/golden/go/testutils/data_three_devices"
)
func TestToQuery(t *testing.T) {
unittest.SmallTest(t)
queries, err := toQuery([]*Rule{})
require.NoError(t, err)
require.Len(t, queries, 0)
r1 := NewRule("jon@example.com", time.Now().Add(time.Hour), "config=gpu", "reason")
queries, err = toQuery([]*Rule{r1})
require.NoError(t, err)
require.Equal(t, queries[0], url.Values{"config": []string{"gpu"}})
// A bad rule won't get converted
r1 = NewRule("jon@example.com", time.Now().Add(time.Hour), "bad=%", "reason")
queries, err = toQuery([]*Rule{r1})
require.NotNil(t, err)
require.Empty(t, queries)
}
func TestFilterIgnored(t *testing.T) {
unittest.SmallTest(t)
// With no ignore rules, nothing is filtered
ft, pm, err := FilterIgnored(data.MakeTestTile(), nil)
require.NoError(t, err)
require.Empty(t, pm)
require.Equal(t, data.MakeTestTile(), ft)
future := time.Now().Add(time.Hour)
ignores := []*Rule{
NewRule("user@example.com", future, "device=crosshatch", "note"),
}
// Now filter the tile and make sure those traces are filtered out.
ft, pm, err = FilterIgnored(data.MakeTestTile(), ignores)
require.NoError(t, err)
require.Equal(t, paramtools.ParamMatcher{
{
"device": {"crosshatch"},
},
}, pm)
require.Len(t, ft.Traces, 4)
require.NotContains(t, ft.Traces, data.CrosshatchAlphaTraceID)
require.NotContains(t, ft.Traces, data.CrosshatchBetaTraceID)
}