From 1816b4b9153e516ed2a449e7d0cd75d2ef01e810 Mon Sep 17 00:00:00 2001 From: Alexander Greene Date: Wed, 1 Feb 2023 14:19:07 -0800 Subject: [PATCH] Thread Safety test for UpdateSubsSyncCounterStorage Introduces a test that ensure that the UpdateSubsSyncCounterStorage function is thread safe and avoids concurrent map writes. Signed-off-by: Alexander Greene --- pkg/metrics/metrics_test.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 pkg/metrics/metrics_test.go diff --git a/pkg/metrics/metrics_test.go b/pkg/metrics/metrics_test.go new file mode 100644 index 0000000000..5987a38f21 --- /dev/null +++ b/pkg/metrics/metrics_test.go @@ -0,0 +1,34 @@ +package metrics_test + +import ( + "fmt" + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + operatorsv1alpha1 "github.com/operator-framework/api/pkg/operators/v1alpha1" + "github.com/operator-framework/operator-lifecycle-manager/pkg/metrics" +) + +func TestUpdateSubsSyncCounterStorageThreadSafety(t *testing.T) { + for i := 0; i < 1000; i++ { + go func(ii int) { + sub := &operatorsv1alpha1.Subscription{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "foo", + Name: "foo", + }, + Spec: &operatorsv1alpha1.SubscriptionSpec{ + Channel: "foo", + Package: "foo", + InstallPlanApproval: "automatic", + }, + Status: operatorsv1alpha1.SubscriptionStatus{ + InstalledCSV: "foo", + }, + } + sub.Spec.Channel = fmt.Sprintf("bar-%v", ii) + metrics.UpdateSubsSyncCounterStorage(sub) + }(i) + } +}