You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.0 KiB

  1. package peer
  2. import (
  3. "testing"
  4. "time"
  5. )
  6. /*
  7. This is a manual test.
  8. TODO: set up or find a service to probe open ports.
  9. */
  10. func TestUPNP(t *testing.T) {
  11. t.Log("hello!")
  12. nat, err := Discover()
  13. if err != nil {
  14. t.Fatalf("NAT upnp could not be discovered: %v", err)
  15. }
  16. t.Log("ourIP: ", nat.(*upnpNAT).ourIP)
  17. ext, err := nat.GetExternalAddress()
  18. if err != nil {
  19. t.Fatalf("External address error: %v", err)
  20. }
  21. t.Logf("External address: %v", ext)
  22. port, err := nat.AddPortMapping("tcp", 8001, 8001, "testing", 0)
  23. if err != nil {
  24. t.Fatalf("Port mapping error: %v", err)
  25. }
  26. t.Logf("Port mapping mapped: %v", port)
  27. // also run the listener, open for all remote addresses.
  28. listener := NewDefaultListener("tcp", "0.0.0.0:8001")
  29. // now sleep for 10 seconds
  30. time.Sleep(10 * time.Second)
  31. err = nat.DeletePortMapping("tcp", 8001, 8001)
  32. if err != nil {
  33. t.Fatalf("Port mapping delete error: %v", err)
  34. }
  35. t.Logf("Port mapping deleted")
  36. listener.Stop()
  37. }