From ed4444cfa87fef85a70314ca7c55024a287bc51a Mon Sep 17 00:00:00 2001 From: Alexander Greene Date: Thu, 2 Feb 2023 10:13:08 -0800 Subject: [PATCH] Thread Safety test for UpdateSubsSyncCounterStorage (#2918) Introduces a test that ensure that the UpdateSubsSyncCounterStorage function is thread safe and avoids concurrent map writes. Signed-off-by: Alexander Greene Upstream-repository: operator-lifecycle-manager Upstream-commit: 84ab8d27288ae40d92bdf7f58ebec537f8b187fc --- .../pkg/metrics/metrics_test.go | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 staging/operator-lifecycle-manager/pkg/metrics/metrics_test.go diff --git a/staging/operator-lifecycle-manager/pkg/metrics/metrics_test.go b/staging/operator-lifecycle-manager/pkg/metrics/metrics_test.go new file mode 100644 index 0000000000..5987a38f21 --- /dev/null +++ b/staging/operator-lifecycle-manager/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) + } +}