@@ -38,7 +38,10 @@ import (
38
38
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
39
39
"k8s.io/apimachinery/pkg/util/intstr"
40
40
"k8s.io/apimachinery/pkg/util/wait"
41
+ utilfeature "k8s.io/apiserver/pkg/util/feature"
41
42
"k8s.io/client-go/kubernetes"
43
+ featuregatetesting "k8s.io/component-base/featuregate/testing"
44
+ "k8s.io/component-base/zpages/features"
42
45
"k8s.io/kube-aggregator/pkg/apis/apiregistration"
43
46
"k8s.io/kube-openapi/pkg/validation/spec"
44
47
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
@@ -127,6 +130,36 @@ func TestLivezAndReadyz(t *testing.T) {
127
130
}
128
131
}
129
132
133
+ func TestFlagz (t * testing.T ) {
134
+ featuregatetesting .SetFeatureGateDuringTest (t , utilfeature .DefaultFeatureGate , features .ComponentFlagz , true )
135
+ server := kubeapiservertesting .StartTestServerOrDie (t , nil , framework .DefaultTestServerFlags (), framework .SharedEtcd ())
136
+ defer server .TearDownFn ()
137
+
138
+ client , err := kubernetes .NewForConfig (server .ClientConfig )
139
+ if err != nil {
140
+ t .Fatalf ("Unexpected error: %v" , err )
141
+ }
142
+
143
+ res := client .CoreV1 ().RESTClient ().Get ().RequestURI ("/flagz" ).Do (context .TODO ())
144
+ var status int
145
+ res .StatusCode (& status )
146
+ if status != http .StatusOK {
147
+ t .Fatalf ("flagz/ should be healthy, got %v" , status )
148
+ }
149
+
150
+ expectedHeader := `
151
+ kube-apiserver flags
152
+ Warning: This endpoint is not meant to be machine parseable, has no formatting compatibility guarantees and is for debugging purposes only.`
153
+
154
+ raw , err := res .Raw ()
155
+ if err != nil {
156
+ t .Fatal (err )
157
+ }
158
+ if ! bytes .HasPrefix (raw , []byte (expectedHeader )) {
159
+ t .Fatalf ("Header mismatch!\n Expected:\n %s\n \n Got:\n %s" , expectedHeader , string (raw ))
160
+ }
161
+ }
162
+
130
163
// TestOpenAPIDelegationChainPlumbing is a smoke test that checks for
131
164
// the existence of some representative paths from the
132
165
// apiextensions-server and the kube-aggregator server, both part of
0 commit comments