func()

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)
			}
		}
	})
}