From a785076ef74792a88c5eaa9b38273fdfdeabd166 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 Kubernetes-commit: 0c8632de57075191e6c4e34897fb7871034c7081 --- .../filters/priority-and-fairness_test.go | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/pkg/server/filters/priority-and-fairness_test.go b/pkg/server/filters/priority-and-fairness_test.go index ad3ac780b..55ef87fdf 100644 --- a/pkg/server/filters/priority-and-fairness_test.go +++ b/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