Skip to content

Commit f88c63a

Browse files
committed
update
1 parent 078e52a commit f88c63a

File tree

9 files changed

+164
-14
lines changed

9 files changed

+164
-14
lines changed

codegen/test/api/things.test.io/v1/sets/sets.go

+6-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

contrib/codegen/templates/sets/sets.gotmpl

+3-1
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,9 @@ func (s *{{ $kindLowerCamel }}MergedSet) Equal(
361361
}
362362

363363
func (s *{{ $kindLowerCamel }}MergedSet) Delete({{ $resource.Kind }} ezkube.ResourceId) {
364-
panic("unimplemented")
364+
for _, set := range s.sets {
365+
set.Delete({{ $resource.Kind }})
366+
}
365367
}
366368

367369
func (s *{{ $kindLowerCamel }}MergedSet) Union(set {{ $resource.Kind }}Set) {{ $resource.Kind }}Set {
+122
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
package sets
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
v1 "github.com/solo-io/skv2/pkg/api/core.skv2.solo.io/v1"
8+
"github.com/solo-io/skv2/pkg/ezkube"
9+
)
10+
11+
// Define a global variable to prevent compiler optimizations
12+
var result interface{}
13+
14+
var scale = 10000
15+
16+
// func Benchmark(b *testing.B) {
17+
// b.Run("Resources_Insert", BenchmarkResources_Insert)
18+
// b.Run("Resources_Find", BenchmarkResources_Find)
19+
// // b.Run("Resources_Delete", BenchmarkResources_Delete)
20+
// b.Run("Resources_List", BenchmarkResources_List)
21+
// b.Run("Resources_UnsortedList", BenchmarkResources_UnsortedList)
22+
// }
23+
24+
func BenchmarkResources_Insert(b *testing.B) {
25+
var r Resources
26+
for i := 0; i < b.N; i++ {
27+
r = newResources() // Assume newResources is corrected to initialize correctly
28+
for j := 0; j < scale; j++ {
29+
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
30+
r.Insert(resource)
31+
}
32+
}
33+
// Store the result to a package level variable
34+
// so the compiler cannot eliminate the Benchmark itself.
35+
result = r
36+
}
37+
38+
func BenchmarkResources_Find(b *testing.B) {
39+
r := newResources()
40+
for j := 0; j < scale; j++ {
41+
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
42+
r.Insert(resource)
43+
}
44+
45+
b.ResetTimer()
46+
for i := 0; i < b.N; i++ {
47+
_, _ = r.Find(&v1.TypedObjectRef{}, &v1.ObjectRef{Namespace: "namespace", Name: "name500"})
48+
}
49+
}
50+
51+
func BenchmarkResources_Delete(b *testing.B) {
52+
var r Resources
53+
for i := 0; i < b.N; i++ {
54+
r = newResources()
55+
for j := 0; j < scale; j++ {
56+
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
57+
r.Insert(resource)
58+
}
59+
b.ResetTimer()
60+
for j := 0; j < scale; j++ {
61+
r.Delete(&v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)})
62+
}
63+
b.StopTimer()
64+
}
65+
result = r
66+
}
67+
68+
func BenchmarkResources_List(b *testing.B) {
69+
r := newResources()
70+
for j := 0; j < scale; j++ {
71+
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
72+
r.Insert(resource)
73+
}
74+
75+
b.ResetTimer()
76+
var res []ezkube.ResourceId
77+
for i := 0; i < b.N; i++ {
78+
res = r.List()
79+
}
80+
// Store the result to prevent the compiler from optimizing the loop away.
81+
result = res
82+
}
83+
84+
func BenchmarkResources_UnsortedList(b *testing.B) {
85+
r := newResources()
86+
for j := 0; j < scale; j++ {
87+
resource := &v1.ObjectRef{Namespace: "namespace", Name: "name" + fmt.Sprint(j)}
88+
r.Insert(resource)
89+
}
90+
91+
b.ResetTimer()
92+
var res []ezkube.ResourceId
93+
for i := 0; i < b.N; i++ {
94+
res = r.UnsortedList()
95+
}
96+
// Store the result to prevent the compiler from optimizing the loop away.
97+
result = res
98+
}
99+
100+
// func BenchmarkResources_Delta(b *testing.B) {
101+
// // Define the scale for the number of resources in each set.
102+
// const scale = 1000
103+
104+
// // Create and populate the original set with resources.
105+
// originalSet := newResources()
106+
// for i := 0; i < scale; i++ {
107+
// resource := &v1.ObjectRef{Namespace: "namespace", Name: "originalName" + fmt.Sprint(i)}
108+
// originalSet.Insert(resource)
109+
// }
110+
111+
// // Create and populate a new set with some overlapping and some unique resources.
112+
// newSet := newResources()
113+
// for i := scale / 2; i < scale+(scale/2); i++ {
114+
// resource := &v1.ObjectRef{Namespace: "namespace", Name: "newName" + fmt.Sprint(i)}
115+
// newSet.Insert(resource)
116+
// }
117+
118+
// b.ResetTimer() // Start timing the benchmark loop.
119+
// for i := 0; i < b.N; i++ {
120+
// _ = originalSet.Delta(newSet)
121+
// }
122+
// }

pkg/api/multicluster.solo.io/v1alpha1/sets/sets.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/multicluster/internal/k8s/admissionregistration.k8s.io/v1/sets/sets.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/multicluster/internal/k8s/apiextensions.k8s.io/v1/sets/sets.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/multicluster/internal/k8s/certificates.k8s.io/v1beta1/sets/sets.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/multicluster/internal/k8s/core/v1/sets/sets.go

+9-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/multicluster/internal/k8s/rbac.authorization.k8s.io/v1/sets/sets.go

+12-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)