(b *testing.B)
| 29 | ) |
| 30 | |
| 31 | func BenchmarkMergeFrom(b *testing.B) { |
| 32 | cm1 := &corev1.ConfigMap{} |
| 33 | cm1.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("ConfigMap")) |
| 34 | cm1.ResourceVersion = "anything" |
| 35 | |
| 36 | cm2 := cm1.DeepCopy() |
| 37 | cm2.Data = map[string]string{"key": "value"} |
| 38 | |
| 39 | sts1 := &appsv1.StatefulSet{} |
| 40 | sts1.SetGroupVersionKind(appsv1.SchemeGroupVersion.WithKind("StatefulSet")) |
| 41 | sts1.ResourceVersion = "somesuch" |
| 42 | |
| 43 | sts2 := sts1.DeepCopy() |
| 44 | sts2.Spec.Template.Spec.Containers = []corev1.Container{{ |
| 45 | Resources: corev1.ResourceRequirements{ |
| 46 | Requests: map[corev1.ResourceName]resource.Quantity{ |
| 47 | corev1.ResourceCPU: resource.MustParse("1m"), |
| 48 | corev1.ResourceMemory: resource.MustParse("1M"), |
| 49 | }, |
| 50 | }, |
| 51 | ReadinessProbe: &corev1.Probe{ |
| 52 | ProbeHandler: corev1.ProbeHandler{ |
| 53 | HTTPGet: &corev1.HTTPGetAction{}, |
| 54 | }, |
| 55 | }, |
| 56 | Lifecycle: &corev1.Lifecycle{ |
| 57 | PreStop: &corev1.LifecycleHandler{ |
| 58 | HTTPGet: &corev1.HTTPGetAction{}, |
| 59 | }, |
| 60 | }, |
| 61 | SecurityContext: &corev1.SecurityContext{}, |
| 62 | }} |
| 63 | |
| 64 | b.Run("NoOptions", func(b *testing.B) { |
| 65 | cmPatch := MergeFrom(cm1) |
| 66 | if _, err := cmPatch.Data(cm2); err != nil { |
| 67 | b.Fatalf("expected no error, got %v", err) |
| 68 | } |
| 69 | |
| 70 | stsPatch := MergeFrom(sts1) |
| 71 | if _, err := stsPatch.Data(sts2); err != nil { |
| 72 | b.Fatalf("expected no error, got %v", err) |
| 73 | } |
| 74 | |
| 75 | b.ResetTimer() |
| 76 | for i := 0; i < b.N; i++ { |
| 77 | _, _ = cmPatch.Data(cm2) |
| 78 | _, _ = stsPatch.Data(sts2) |
| 79 | } |
| 80 | }) |
| 81 | |
| 82 | b.Run("WithOptimisticLock", func(b *testing.B) { |
| 83 | cmPatch := MergeFromWithOptions(cm1, MergeFromWithOptimisticLock{}) |
| 84 | if _, err := cmPatch.Data(cm2); err != nil { |
| 85 | b.Fatalf("expected no error, got %v", err) |
| 86 | } |
| 87 | |
| 88 | stsPatch := MergeFromWithOptions(sts1, MergeFromWithOptimisticLock{}) |
nothing calls this directly
no test coverage detected
searching dependent graphs…