@@ -21,6 +21,7 @@ import (
21
21
"fmt"
22
22
"io/ioutil"
23
23
"reflect"
24
+ "sync"
24
25
"testing"
25
26
26
27
"github.com/GoogleContainerTools/skaffold/pkg/skaffold/util"
@@ -47,9 +48,9 @@ func (f *testForwarder) Terminate(pfe *portForwardEntry) {
47
48
delete (f .forwardedPorts , pfe .port )
48
49
}
49
50
50
- func mockRetrieveAvailablePort (taken map [int ]struct {}, availablePorts []int ) func (int ) int {
51
+ func mockRetrieveAvailablePort (taken map [int ]struct {}, availablePorts []int ) func (int , * sync. Map ) int {
51
52
// Return first available port in ports that isn't taken
52
- return func (int ) int {
53
+ return func (int , * sync. Map ) int {
53
54
for _ , p := range availablePorts {
54
55
if _ , ok := taken [p ]; ok {
55
56
continue
@@ -61,22 +62,6 @@ func mockRetrieveAvailablePort(taken map[int]struct{}, availablePorts []int) fun
61
62
}
62
63
}
63
64
64
- func mockIsPortAvailable (taken map [int ]struct {}, availablePorts []int ) func (int ) bool {
65
- // Return true if p is in availablePorts and is not in taken
66
- return func (p int ) bool {
67
- if _ , ok := taken [p ]; ok {
68
- return false
69
- }
70
- for _ , port := range availablePorts {
71
- if p == port {
72
- taken [p ] = struct {}{}
73
- return true
74
- }
75
- }
76
- return false
77
- }
78
- }
79
-
80
65
func newTestForwarder (forwardErr error ) * testForwarder {
81
66
return & testForwarder {
82
67
forwardedEntries : map [string ]* portForwardEntry {},
@@ -102,10 +87,11 @@ func TestPortForwardPod(t *testing.T) {
102
87
},
103
88
availablePorts : []int {8080 },
104
89
expectedEntries : map [string ]* portForwardEntry {
105
- "containername-8080" : {
90
+ "containername-podname-namespace- 8080" : {
106
91
resourceVersion : 1 ,
107
92
podName : "podname" ,
108
93
containerName : "containername" ,
94
+ namespace : "namespace" ,
109
95
port : 8080 ,
110
96
localPort : 8080 ,
111
97
},
@@ -115,6 +101,7 @@ func TestPortForwardPod(t *testing.T) {
115
101
ObjectMeta : metav1.ObjectMeta {
116
102
Name : "podname" ,
117
103
ResourceVersion : "1" ,
104
+ Namespace : "namespace" ,
118
105
},
119
106
Spec : v1.PodSpec {
120
107
Containers : []v1.Container {
@@ -137,10 +124,11 @@ func TestPortForwardPod(t *testing.T) {
137
124
9000 : true ,
138
125
},
139
126
expectedEntries : map [string ]* portForwardEntry {
140
- "containername-8080" : {
127
+ "containername-podname-namespace- 8080" : {
141
128
resourceVersion : 1 ,
142
129
podName : "podname" ,
143
130
containerName : "containername" ,
131
+ namespace : "namespace" ,
144
132
port : 8080 ,
145
133
localPort : 9000 ,
146
134
},
@@ -151,6 +139,7 @@ func TestPortForwardPod(t *testing.T) {
151
139
ObjectMeta : metav1.ObjectMeta {
152
140
Name : "podname" ,
153
141
ResourceVersion : "1" ,
142
+ Namespace : "namespace" ,
154
143
},
155
144
Spec : v1.PodSpec {
156
145
Containers : []v1.Container {
@@ -178,6 +167,7 @@ func TestPortForwardPod(t *testing.T) {
178
167
ObjectMeta : metav1.ObjectMeta {
179
168
Name : "podname" ,
180
169
ResourceVersion : "10000000000a" ,
170
+ Namespace : "namespace" ,
181
171
},
182
172
Spec : v1.PodSpec {
183
173
Containers : []v1.Container {
@@ -203,10 +193,11 @@ func TestPortForwardPod(t *testing.T) {
203
193
shouldErr : true ,
204
194
availablePorts : []int {8080 },
205
195
expectedEntries : map [string ]* portForwardEntry {
206
- "containername-8080" : {
196
+ "containername-podname-namespace- 8080" : {
207
197
resourceVersion : 1 ,
208
198
podName : "podname" ,
209
199
containerName : "containername" ,
200
+ namespace : "namespace" ,
210
201
port : 8080 ,
211
202
localPort : 8080 ,
212
203
},
@@ -216,6 +207,7 @@ func TestPortForwardPod(t *testing.T) {
216
207
ObjectMeta : metav1.ObjectMeta {
217
208
Name : "podname" ,
218
209
ResourceVersion : "1" ,
210
+ Namespace : "namespace" ,
219
211
},
220
212
Spec : v1.PodSpec {
221
213
Containers : []v1.Container {
@@ -240,17 +232,19 @@ func TestPortForwardPod(t *testing.T) {
240
232
},
241
233
availablePorts : []int {8080 , 50051 },
242
234
expectedEntries : map [string ]* portForwardEntry {
243
- "containername-8080" : {
235
+ "containername-podname-namespace- 8080" : {
244
236
resourceVersion : 1 ,
245
237
podName : "podname" ,
246
238
containerName : "containername" ,
239
+ namespace : "namespace" ,
247
240
port : 8080 ,
248
241
localPort : 8080 ,
249
242
},
250
- "containername2-50051" : {
243
+ "containername2-podname2-namespace2- 50051" : {
251
244
resourceVersion : 1 ,
252
245
podName : "podname2" ,
253
246
containerName : "containername2" ,
247
+ namespace : "namespace2" ,
254
248
port : 50051 ,
255
249
localPort : 50051 ,
256
250
},
@@ -260,6 +254,7 @@ func TestPortForwardPod(t *testing.T) {
260
254
ObjectMeta : metav1.ObjectMeta {
261
255
Name : "podname" ,
262
256
ResourceVersion : "1" ,
257
+ Namespace : "namespace" ,
263
258
},
264
259
Spec : v1.PodSpec {
265
260
Containers : []v1.Container {
@@ -278,6 +273,7 @@ func TestPortForwardPod(t *testing.T) {
278
273
ObjectMeta : metav1.ObjectMeta {
279
274
Name : "podname2" ,
280
275
ResourceVersion : "1" ,
276
+ Namespace : "namespace2" ,
281
277
},
282
278
Spec : v1.PodSpec {
283
279
Containers : []v1.Container {
@@ -302,17 +298,19 @@ func TestPortForwardPod(t *testing.T) {
302
298
},
303
299
availablePorts : []int {8080 , 9000 },
304
300
expectedEntries : map [string ]* portForwardEntry {
305
- "containername-8080" : {
301
+ "containername-podname-namespace- 8080" : {
306
302
resourceVersion : 1 ,
307
303
podName : "podname" ,
308
304
containerName : "containername" ,
305
+ namespace : "namespace" ,
309
306
port : 8080 ,
310
307
localPort : 8080 ,
311
308
},
312
- "containername2-8080" : {
309
+ "containername2-podname2-namespace2- 8080" : {
313
310
resourceVersion : 1 ,
314
311
podName : "podname2" ,
315
312
containerName : "containername2" ,
313
+ namespace : "namespace2" ,
316
314
port : 8080 ,
317
315
localPort : 9000 ,
318
316
},
@@ -322,6 +320,7 @@ func TestPortForwardPod(t *testing.T) {
322
320
ObjectMeta : metav1.ObjectMeta {
323
321
Name : "podname" ,
324
322
ResourceVersion : "1" ,
323
+ Namespace : "namespace" ,
325
324
},
326
325
Spec : v1.PodSpec {
327
326
Containers : []v1.Container {
@@ -340,6 +339,7 @@ func TestPortForwardPod(t *testing.T) {
340
339
ObjectMeta : metav1.ObjectMeta {
341
340
Name : "podname2" ,
342
341
ResourceVersion : "1" ,
342
+ Namespace : "namespace2" ,
343
343
},
344
344
Spec : v1.PodSpec {
345
345
Containers : []v1.Container {
@@ -363,10 +363,11 @@ func TestPortForwardPod(t *testing.T) {
363
363
},
364
364
availablePorts : []int {8080 },
365
365
expectedEntries : map [string ]* portForwardEntry {
366
- "containername-8080" : {
366
+ "containername-podname-namespace- 8080" : {
367
367
resourceVersion : 2 ,
368
368
podName : "podname" ,
369
369
containerName : "containername" ,
370
+ namespace : "namespace" ,
370
371
port : 8080 ,
371
372
localPort : 8080 ,
372
373
},
@@ -376,6 +377,7 @@ func TestPortForwardPod(t *testing.T) {
376
377
ObjectMeta : metav1.ObjectMeta {
377
378
Name : "podname" ,
378
379
ResourceVersion : "1" ,
380
+ Namespace : "namespace" ,
379
381
},
380
382
Spec : v1.PodSpec {
381
383
Containers : []v1.Container {
@@ -394,6 +396,7 @@ func TestPortForwardPod(t *testing.T) {
394
396
ObjectMeta : metav1.ObjectMeta {
395
397
Name : "podname" ,
396
398
ResourceVersion : "2" ,
399
+ Namespace : "namespace" ,
397
400
},
398
401
Spec : v1.PodSpec {
399
402
Containers : []v1.Container {
@@ -422,12 +425,6 @@ func TestPortForwardPod(t *testing.T) {
422
425
retrieveAvailablePort = originalGetAvailablePort
423
426
}()
424
427
425
- originalIsPortAvailable := isPortAvailable
426
- isPortAvailable = mockIsPortAvailable (taken , test .availablePorts )
427
- defer func () {
428
- isPortAvailable = originalIsPortAvailable
429
- }()
430
-
431
428
p := NewPortForwarder (ioutil .Discard , NewImageList (), []string {"" })
432
429
if test .forwarder == nil {
433
430
test .forwarder = newTestForwarder (nil )
0 commit comments