mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #128848 from yongruilin/flagz-integration-test-apiserver
test: Add integration test for apiserver flagz endpoint
This commit is contained in:
		@@ -38,7 +38,10 @@ import (
 | 
				
			|||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/intstr"
 | 
						"k8s.io/apimachinery/pkg/util/intstr"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/util/wait"
 | 
						"k8s.io/apimachinery/pkg/util/wait"
 | 
				
			||||||
 | 
						utilfeature "k8s.io/apiserver/pkg/util/feature"
 | 
				
			||||||
	"k8s.io/client-go/kubernetes"
 | 
						"k8s.io/client-go/kubernetes"
 | 
				
			||||||
 | 
						featuregatetesting "k8s.io/component-base/featuregate/testing"
 | 
				
			||||||
 | 
						"k8s.io/component-base/zpages/features"
 | 
				
			||||||
	"k8s.io/kube-aggregator/pkg/apis/apiregistration"
 | 
						"k8s.io/kube-aggregator/pkg/apis/apiregistration"
 | 
				
			||||||
	"k8s.io/kube-openapi/pkg/validation/spec"
 | 
						"k8s.io/kube-openapi/pkg/validation/spec"
 | 
				
			||||||
	kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
 | 
						kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
 | 
				
			||||||
@@ -127,6 +130,36 @@ func TestLivezAndReadyz(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestFlagz(t *testing.T) {
 | 
				
			||||||
 | 
						featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.ComponentFlagz, true)
 | 
				
			||||||
 | 
						server := kubeapiservertesting.StartTestServerOrDie(t, nil, framework.DefaultTestServerFlags(), framework.SharedEtcd())
 | 
				
			||||||
 | 
						defer server.TearDownFn()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						client, err := kubernetes.NewForConfig(server.ClientConfig)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatalf("Unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						res := client.CoreV1().RESTClient().Get().RequestURI("/flagz").Do(context.TODO())
 | 
				
			||||||
 | 
						var status int
 | 
				
			||||||
 | 
						res.StatusCode(&status)
 | 
				
			||||||
 | 
						if status != http.StatusOK {
 | 
				
			||||||
 | 
							t.Fatalf("flagz/ should be healthy, got %v", status)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						expectedHeader := `
 | 
				
			||||||
 | 
					kube-apiserver flags
 | 
				
			||||||
 | 
					Warning: This endpoint is not meant to be machine parseable, has no formatting compatibility guarantees and is for debugging purposes only.`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						raw, err := res.Raw()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							t.Fatal(err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !bytes.HasPrefix(raw, []byte(expectedHeader)) {
 | 
				
			||||||
 | 
							t.Fatalf("Header mismatch!\nExpected:\n%s\n\nGot:\n%s", expectedHeader, string(raw))
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TestOpenAPIDelegationChainPlumbing is a smoke test that checks for
 | 
					// TestOpenAPIDelegationChainPlumbing is a smoke test that checks for
 | 
				
			||||||
// the existence of some representative paths from the
 | 
					// the existence of some representative paths from the
 | 
				
			||||||
// apiextensions-server and the kube-aggregator server, both part of
 | 
					// apiextensions-server and the kube-aggregator server, both part of
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user