@@ -35,6 +35,7 @@ import (
35
35
clientset "k8s.io/client-go/kubernetes"
36
36
"k8s.io/client-go/rest"
37
37
"sigs.k8s.io/controller-runtime/pkg/client"
38
+ clicfg "sigs.k8s.io/controller-runtime/pkg/client/config"
38
39
39
40
"sigs.k8s.io/gateway-api/apis/v1beta1"
40
41
confv1 "sigs.k8s.io/gateway-api/conformance/apis/v1"
@@ -307,6 +308,10 @@ func NewConformanceTestSuite(options ConformanceOptions) (*ConformanceTestSuite,
307
308
// Conformance Test Suite - Public Methods
308
309
// -----------------------------------------------------------------------------
309
310
311
+ const (
312
+ testSuiteUserAgentPrefix = "gateway-api-conformance.test"
313
+ )
314
+
310
315
// Setup ensures the base resources required for conformance tests are installed
311
316
// in the cluster. It also ensures that all relevant resources are ready.
312
317
func (suite * ConformanceTestSuite ) Setup (t * testing.T , tests []ConformanceTest ) {
@@ -374,6 +379,39 @@ func (suite *ConformanceTestSuite) Setup(t *testing.T, tests []ConformanceTest)
374
379
}
375
380
}
376
381
382
+ func (suite * ConformanceTestSuite ) setClientsetForTest (test ConformanceTest ) error {
383
+ cfg , err := clicfg .GetConfig ()
384
+ if err != nil {
385
+ return err
386
+ }
387
+ featureNames := []string {}
388
+ for _ , v := range test .Features {
389
+ featureNames = append (featureNames , string (v ))
390
+ }
391
+ if len (test .Features ) > 0 {
392
+ featureNames = append (featureNames , "unknownFeature" )
393
+ }
394
+ cfg .UserAgent = strings .Join (
395
+ []string {
396
+ testSuiteUserAgentPrefix ,
397
+ suite .apiVersion ,
398
+ test .ShortName ,
399
+ strings .Join (featureNames , "," ),
400
+ },
401
+ "::" )
402
+ client , err := client .New (cfg , client.Options {})
403
+ if err != nil {
404
+ return err
405
+ }
406
+ clientset , err := clientset .NewForConfig (cfg )
407
+ if err != nil {
408
+ return err
409
+ }
410
+ suite .Client = client
411
+ suite .Clientset = clientset
412
+ return nil
413
+ }
414
+
377
415
// Run runs the provided set of conformance tests.
378
416
func (suite * ConformanceTestSuite ) Run (t * testing.T , tests []ConformanceTest ) error {
379
417
// verify that the test suite isn't already running, don't start a new run
@@ -394,6 +432,8 @@ func (suite *ConformanceTestSuite) Run(t *testing.T, tests []ConformanceTest) er
394
432
results := make (map [string ]testResult )
395
433
for _ , test := range tests {
396
434
succeeded := t .Run (test .ShortName , func (t * testing.T ) {
435
+ err := suite .setClientsetForTest (test )
436
+ require .NoError (t , err , "failed to create new clientset for test" )
397
437
test .Run (t , suite )
398
438
})
399
439
res := testSucceeded
0 commit comments