@@ -19,31 +19,37 @@ limitations under the License.
19
19
package options
20
20
21
21
import (
22
+ "fmt"
22
23
"net"
23
24
"testing"
24
25
)
25
26
26
27
func TestCreateListenerSharePort (t * testing.T ) {
27
- addr := "127.0.0.1:12345"
28
28
c := net.ListenConfig {Control : permitPortReuse }
29
29
30
- if _ , _ , err := CreateListener ("tcp" , addr , c ); err != nil {
30
+ l , port , err := CreateListener ("tcp" , "127.0.0.1:0" , c )
31
+ if err != nil {
31
32
t .Fatalf ("failed to create listener: %v" , err )
32
33
}
34
+ defer l .Close ()
33
35
34
- if _ , _ , err := CreateListener ("tcp" , addr , c ); err != nil {
36
+ l2 , _ , err := CreateListener ("tcp" , fmt .Sprintf ("127.0.0.1:%d" , port ), c )
37
+ if err != nil {
35
38
t .Fatalf ("failed to create 2nd listener: %v" , err )
36
39
}
40
+ defer l2 .Close ()
37
41
}
38
42
39
43
func TestCreateListenerPreventUpgrades (t * testing.T ) {
40
- addr := "127.0.0.1:12346"
41
-
42
- if _ , _ , err := CreateListener ("tcp" , addr , net.ListenConfig {}); err != nil {
44
+ l , port , err := CreateListener ("tcp" , "127.0.0.1:0" , net.ListenConfig {})
45
+ if err != nil {
43
46
t .Fatalf ("failed to create listener: %v" , err )
44
47
}
48
+ defer l .Close ()
45
49
46
- if _ , _ , err := CreateListener ("tcp" , addr , net.ListenConfig {Control : permitPortReuse }); err == nil {
50
+ l2 , _ , err := CreateListener ("tcp" , fmt .Sprintf ("127.0.0.1:%d" , port ), net.ListenConfig {Control : permitPortReuse })
51
+ if err == nil {
52
+ l2 .Close ()
47
53
t .Fatalf ("creating second listener without port sharing should fail" )
48
54
}
49
55
}
0 commit comments