Skip to content

Commit e933a30

Browse files
authored
Merge pull request kubernetes#128848 from yongruilin/flagz-integration-test-apiserver
test: Add integration test for apiserver flagz endpoint
2 parents f2bec18 + 8836548 commit e933a30

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

test/integration/controlplane/kube_apiserver_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ import (
3838
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3939
"k8s.io/apimachinery/pkg/util/intstr"
4040
"k8s.io/apimachinery/pkg/util/wait"
41+
utilfeature "k8s.io/apiserver/pkg/util/feature"
4142
"k8s.io/client-go/kubernetes"
43+
featuregatetesting "k8s.io/component-base/featuregate/testing"
44+
"k8s.io/component-base/zpages/features"
4245
"k8s.io/kube-aggregator/pkg/apis/apiregistration"
4346
"k8s.io/kube-openapi/pkg/validation/spec"
4447
kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
@@ -127,6 +130,36 @@ func TestLivezAndReadyz(t *testing.T) {
127130
}
128131
}
129132

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!\nExpected:\n%s\n\nGot:\n%s", expectedHeader, string(raw))
160+
}
161+
}
162+
130163
// TestOpenAPIDelegationChainPlumbing is a smoke test that checks for
131164
// the existence of some representative paths from the
132165
// apiextensions-server and the kube-aggregator server, both part of

0 commit comments

Comments
 (0)