Skip to content

Commit 648bd9e

Browse files
committed
protosanitizer: add benchmark
1 parent a085ea1 commit 648bd9e

File tree

1 file changed

+75
-25
lines changed

1 file changed

+75
-25
lines changed

protosanitizer/protosanitizer_test.go

Lines changed: 75 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,32 @@ import (
2626
"google.golang.org/protobuf/proto"
2727
)
2828

29+
// Test case from https://github.com/kubernetes-csi/csi-lib-utils/pull/1#pullrequestreview-180126394.
30+
var testReq = csi.CreateVolumeRequest{
31+
Name: "test-volume",
32+
CapacityRange: &csi.CapacityRange{
33+
RequiredBytes: int64(1024),
34+
LimitBytes: int64(1024),
35+
},
36+
VolumeCapabilities: []*csi.VolumeCapability{
37+
{
38+
AccessType: &csi.VolumeCapability_Mount{
39+
Mount: &csi.VolumeCapability_MountVolume{
40+
FsType: "ext4",
41+
MountFlags: []string{"flag1", "flag2", "flag3"},
42+
},
43+
},
44+
AccessMode: &csi.VolumeCapability_AccessMode{
45+
Mode: csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER,
46+
},
47+
},
48+
},
49+
Secrets: map[string]string{"secret1": "secret1", "secret2": "secret2"},
50+
Parameters: map[string]string{"param1": "param1", "param2": "param2"},
51+
VolumeContentSource: &csi.VolumeContentSource{},
52+
AccessibilityRequirements: &csi.TopologyRequirement{},
53+
}
54+
2955
func TestStripSecrets(t *testing.T) {
3056
secretName := "secret-abc"
3157
secretValue := "123"
@@ -116,31 +142,7 @@ func TestStripSecrets(t *testing.T) {
116142
{true, "true"},
117143
{false, "false"},
118144
{&csi.CreateVolumeRequest{}, `{}`},
119-
// Test case from https://github.com/kubernetes-csi/csi-lib-utils/pull/1#pullrequestreview-180126394.
120-
{&csi.CreateVolumeRequest{
121-
Name: "test-volume",
122-
CapacityRange: &csi.CapacityRange{
123-
RequiredBytes: int64(1024),
124-
LimitBytes: int64(1024),
125-
},
126-
VolumeCapabilities: []*csi.VolumeCapability{
127-
{
128-
AccessType: &csi.VolumeCapability_Mount{
129-
Mount: &csi.VolumeCapability_MountVolume{
130-
FsType: "ext4",
131-
MountFlags: []string{"flag1", "flag2", "flag3"},
132-
},
133-
},
134-
AccessMode: &csi.VolumeCapability_AccessMode{
135-
Mode: csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER,
136-
},
137-
},
138-
},
139-
Secrets: map[string]string{"secret1": "secret1", "secret2": "secret2"},
140-
Parameters: map[string]string{"param1": "param1", "param2": "param2"},
141-
VolumeContentSource: &csi.VolumeContentSource{},
142-
AccessibilityRequirements: &csi.TopologyRequirement{},
143-
}, `{"accessibility_requirements":{},"capacity_range":{"limit_bytes":1024,"required_bytes":1024},"name":"test-volume","parameters":{"param1":"param1","param2":"param2"},"secrets":"***stripped***","volume_capabilities":[{"AccessType":{"Mount":{"fs_type":"ext4","mount_flags":["flag1","flag2","flag3"]}},"access_mode":{"mode":5}}],"volume_content_source":{"Type":null}}`},
145+
{&testReq, `{"accessibility_requirements":{},"capacity_range":{"limit_bytes":1024,"required_bytes":1024},"name":"test-volume","parameters":{"param1":"param1","param2":"param2"},"secrets":"***stripped***","volume_capabilities":[{"AccessType":{"Mount":{"fs_type":"ext4","mount_flags":["flag1","flag2","flag3"]}},"access_mode":{"mode":5}}],"volume_content_source":{"Type":null}}`},
144146
{createVolume, `{"accessibility_requirements":{"requisite":[{"segments":{"foo":"bar","x":"y"}},{"segments":{"a":"b"}}]},"capacity_range":{"required_bytes":1024},"name":"foo","secrets":"***stripped***","volume_capabilities":[{"AccessType":{"Mount":{"fs_type":"ext4"}}}]}`},
145147
{&csitest.CreateVolumeRequest{}, `{}`},
146148
{createVolumeFuture,
@@ -179,3 +181,51 @@ func TestStripSecrets(t *testing.T) {
179181
assert.NotContains(t, dump, secretName)
180182
assert.NotContains(t, dump, secretValue)
181183
}
184+
185+
func BenchmarkStrip(b *testing.B) {
186+
msg := StripSecrets(&testReq)
187+
for i := 0; i < b.N; i++ {
188+
_ = msg.String()
189+
}
190+
}
191+
192+
func BenchmarkStripLarge(b *testing.B) {
193+
largeRequest := &csi.CreateVolumeRequest{
194+
Name: "foo",
195+
Parameters: map[string]string{
196+
"param1": "param1",
197+
"param2": "param2",
198+
},
199+
VolumeCapabilities: []*csi.VolumeCapability{
200+
{
201+
AccessType: &csi.VolumeCapability_Mount{
202+
Mount: &csi.VolumeCapability_MountVolume{
203+
FsType: "ext4",
204+
},
205+
},
206+
AccessMode: &csi.VolumeCapability_AccessMode{
207+
Mode: csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
208+
},
209+
},
210+
},
211+
AccessibilityRequirements: &csi.TopologyRequirement{},
212+
}
213+
topologies := make([]*csi.Topology, 10000)
214+
for i := range topologies {
215+
topologies[i] = &csi.Topology{
216+
Segments: map[string]string{
217+
"example.com/instance": fmt.Sprintf("i-%05d", i),
218+
"topology.kubernetes.io/zone": "us-east-1a",
219+
"topology.kubernetes.io/region": "us-east-1",
220+
},
221+
}
222+
}
223+
largeRequest.AccessibilityRequirements.Requisite = topologies
224+
largeRequest.AccessibilityRequirements.Preferred = topologies
225+
226+
msg := StripSecrets(&largeRequest)
227+
b.ResetTimer()
228+
for i := 0; i < b.N; i++ {
229+
_ = msg.String()
230+
}
231+
}

0 commit comments

Comments
 (0)