]> git.ipfire.org Git - thirdparty/wireguard-go.git/commitdiff
device: get free port when testing
authorSina Siadat <siadat@gmail.com>
Thu, 30 Jul 2020 16:20:49 +0000 (20:50 +0430)
committerJason A. Donenfeld <Jason@zx2c4.com>
Fri, 31 Jul 2020 14:18:53 +0000 (16:18 +0200)
Signed-off-by: Sina Siadat <siadat@gmail.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
device/device_test.go

index 5ea5410d1311e4bc93d58f2adb2c5593f22d98a4..016a0ca334c3ffafb60f127760e79797c1a3a9ff 100644 (file)
@@ -8,6 +8,7 @@ package device
 import (
        "bufio"
        "bytes"
+       "fmt"
        "net"
        "strings"
        "testing"
@@ -16,16 +17,30 @@ import (
        "golang.zx2c4.com/wireguard/tun/tuntest"
 )
 
+func getFreePort(t *testing.T) string {
+       l, err := net.ListenPacket("udp", "localhost:0")
+       if err != nil {
+               t.Fatal(err)
+       }
+       defer l.Close()
+       return fmt.Sprintf("%d", l.LocalAddr().(*net.UDPAddr).Port)
+}
+
 func TestTwoDevicePing(t *testing.T) {
-       // TODO(crawshaw): pick unused ports on localhost
+       port1 := getFreePort(t)
+       port2 := getFreePort(t)
+
        cfg1 := `private_key=481eb0d8113a4a5da532d2c3e9c14b53c8454b34ab109676f6b58c2245e37b58
-listen_port=53511
+listen_port={{PORT1}}
 replace_peers=true
 public_key=f70dbb6b1b92a1dde1c783b297016af3f572fef13b0abb16a2623d89a58e9725
 protocol_version=1
 replace_allowed_ips=true
 allowed_ip=1.0.0.2/32
-endpoint=127.0.0.1:53512`
+endpoint=127.0.0.1:{{PORT2}}`
+       cfg1 = strings.ReplaceAll(cfg1, "{{PORT1}}", port1)
+       cfg1 = strings.ReplaceAll(cfg1, "{{PORT2}}", port2)
+
        tun1 := tuntest.NewChannelTUN()
        dev1 := NewDevice(tun1.TUN(), NewLogger(LogLevelDebug, "dev1: "))
        dev1.Up()
@@ -35,13 +50,16 @@ endpoint=127.0.0.1:53512`
        }
 
        cfg2 := `private_key=98c7989b1661a0d64fd6af3502000f87716b7c4bbcf00d04fc6073aa7b539768
-listen_port=53512
+listen_port={{PORT2}}
 replace_peers=true
 public_key=49e80929259cebdda4f322d6d2b1a6fad819d603acd26fd5d845e7a123036427
 protocol_version=1
 replace_allowed_ips=true
 allowed_ip=1.0.0.1/32
-endpoint=127.0.0.1:53511`
+endpoint=127.0.0.1:{{PORT1}}`
+       cfg2 = strings.ReplaceAll(cfg2, "{{PORT1}}", port1)
+       cfg2 = strings.ReplaceAll(cfg2, "{{PORT2}}", port2)
+
        tun2 := tuntest.NewChannelTUN()
        dev2 := NewDevice(tun2.TUN(), NewLogger(LogLevelDebug, "dev2: "))
        dev2.Up()