mirror of
https://gitlab.com/NebulousLabs/go-upnp.git
synced 2025-10-05 15:06:49 +08:00
65 lines
1010 B
Go
65 lines
1010 B
Go
package upnp
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
// TestConcurrentUPNP tests that several threads calling Discover() concurrently
|
|
// succeed.
|
|
func TestConcurrentUPNP(t *testing.T) {
|
|
// verify that a router exists
|
|
_, err := Discover()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// now try to concurrently Discover() using 10 threads
|
|
for i := 0; i < 10; i++ {
|
|
go func() {
|
|
_, err := Discover()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}()
|
|
}
|
|
}
|
|
|
|
func TestIGD(t *testing.T) {
|
|
// connect to router
|
|
d, err := Discover()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// discover external IP
|
|
ip, err := d.ExternalIP()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log("Your external IP is:", ip)
|
|
|
|
// forward a port
|
|
err = d.Forward(9001, "upnp test")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// un-forward a port
|
|
err = d.Clear(9001)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// record router's location
|
|
loc := d.Location()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// connect to router directly
|
|
d, err = Load(loc)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|