in src/go/configgenerator/filtergen/filtergentest/filtergentest.go [61:106]
func (tc *SuccessOPTestCase) RunTest(t *testing.T, factory filtergen.FilterGeneratorOPFactory) {
t.Helper()
if tc.OptsMergeBehavior == nil {
tc.OptsMergeBehavior = mergo.WithOverride
}
t.Run(tc.Desc, func(t *testing.T) {
opts := options.DefaultConfigGeneratorOptions()
if err := mergo.Merge(&opts, tc.OptsIn, tc.OptsMergeBehavior); err != nil {
t.Fatalf("Merge() of test opts into default opts got err: %v", err)
}
gotGenerators, err := factory(tc.ServiceConfigIn, opts)
if err != nil {
t.Fatalf("NewXYZFilterGensFromOPConfig() got error: %v", err)
}
if len(gotGenerators) != len(tc.WantFilterConfigs) {
t.Fatalf("Invalid number of filter generators, got %d, want %d", len(gotGenerators), len(tc.WantFilterConfigs))
}
for i, gotGenerator := range gotGenerators {
gotConfig, err := gotGenerator.GenFilterConfig()
if err != nil {
t.Fatalf("GenFilterConfig() at generator %d got error: %v", i, err)
}
gotHTTPFilter := gotConfig
if !tc.OnlyCheckFilterConfig {
gotHTTPFilter, err = filtergen.FilterConfigToHTTPFilter(gotConfig, gotGenerator.FilterName())
if err != nil {
t.Fatalf("Fail to convert filter config to HTTP filter for generator %d: %v", i, err)
}
}
gotJson, err := util.ProtoToJson(gotHTTPFilter)
if err != nil {
t.Fatalf("Fail to convert HTTP filter config proto at generator %d to JSON: %v", i, err)
}
if err := util.JsonEqual(tc.WantFilterConfigs[i], gotJson); err != nil {
t.Errorf("Fail during filter config JSON comparison at generator %d \n %v", i, err)
}
}
})
}