package upnp import ( "net" "testing" "time" ) /* This is a manual test. TODO: set up or find a service to probe open ports. */ func TestUPNP(t *testing.T) { t.Log("hello!") nat, err := Discover() if err != nil { t.Fatalf("NAT upnp could not be discovered: %v", err) } t.Log("ourIP: ", nat.(*upnpNAT).ourIP) ext, err := nat.GetExternalAddress() if err != nil { t.Fatalf("External address error: %v", err) } t.Logf("External address: %v", ext) port, err := nat.AddPortMapping("tcp", 8001, 8001, "testing", 0) if err != nil { t.Fatalf("Port mapping error: %v", err) } t.Logf("Port mapping mapped: %v", port) // also run the listener, open for all remote addresses. listener, err := net.Listen("tcp", ":8001") if err != nil { panic(err) } // now sleep for 10 seconds time.Sleep(10 * time.Second) err = nat.DeletePortMapping("tcp", 8001, 8001) if err != nil { t.Fatalf("Port mapping delete error: %v", err) } t.Logf("Port mapping deleted") listener.Close() }