From 0c8632de57075191e6c4e34897fb7871034c7081 Mon Sep 17 00:00:00 2001 From: Abu Kashem Date: Thu, 5 Sep 2024 11:57:47 -0400 Subject: [PATCH] apiserver: fix apf watch test the assert to verify that 'atomicReadOnlyExecuting' is zero should be executed if the apf handler panics, all apf bookkeeping must be completed before the handler returns --- .../filters/priority-and-fairness_test.go | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/server/filters/priority-and-fairness_test.go b/staging/src/k8s.io/apiserver/pkg/server/filters/priority-and-fairness_test.go index ad3ac780b30..55ef87fdf36 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/filters/priority-and-fairness_test.go +++ b/staging/src/k8s.io/apiserver/pkg/server/filters/priority-and-fairness_test.go @@ -177,11 +177,21 @@ func newApfHandlerWithFilter(t *testing.T, flowControlFilter utilflowcontrol.Int r = r.WithContext(apirequest.WithUser(r.Context(), &user.DefaultInfo{ Groups: []string{user.AllUnauthenticated}, })) - apfHandler.ServeHTTP(w, r) - postExecute() - if atomicReadOnlyExecuting != 0 { - t.Errorf("Wanted %d requests executing, got %d", 0, atomicReadOnlyExecuting) - } + func() { + // the APF handler completes its run, either normally or + // with a panic, in either case, all APF book keeping must + // be completed by now. Also, whether the request is + // executed or rejected, we expect the counter to be zero. + // TODO: all test(s) using this filter must run + // serially to each other + defer func() { + if atomicReadOnlyExecuting != 0 { + t.Errorf("Wanted %d requests executing, got %d", 0, atomicReadOnlyExecuting) + } + }() + apfHandler.ServeHTTP(w, r) + postExecute() + }() }), requestInfoFactory) return handler