@@ -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+
2955func 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