host_test.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. package logic
  2. import (
  3. "context"
  4. "net"
  5. "os"
  6. "testing"
  7. "github.com/google/uuid"
  8. "github.com/gravitl/netmaker/database"
  9. "github.com/gravitl/netmaker/logger"
  10. "github.com/gravitl/netmaker/models"
  11. "github.com/matryer/is"
  12. )
  13. func TestMain(m *testing.M) {
  14. database.InitializeDatabase()
  15. defer database.CloseDB()
  16. CreateAdmin(&models.User{
  17. UserName: "admin",
  18. Password: "password",
  19. IsAdmin: true,
  20. Networks: []string{},
  21. Groups: []string{},
  22. })
  23. peerUpdate := make(chan *models.Node)
  24. go ManageZombies(context.Background(), peerUpdate)
  25. go func() {
  26. for update := range peerUpdate {
  27. //do nothing
  28. logger.Log(3, "received node update", update.Action)
  29. }
  30. }()
  31. os.Exit(m.Run())
  32. }
  33. func TestCheckPorts(t *testing.T) {
  34. h := models.Host{
  35. ID: uuid.New(),
  36. EndpointIP: net.ParseIP("192.168.1.1"),
  37. ListenPort: 51821,
  38. ProxyListenPort: maxPort,
  39. }
  40. testHost := models.Host{
  41. ID: uuid.New(),
  42. EndpointIP: net.ParseIP("192.168.1.1"),
  43. ListenPort: 51830,
  44. ProxyListenPort: 51730,
  45. }
  46. CreateHost(&h)
  47. t.Run("no change", func(t *testing.T) {
  48. is := is.New(t)
  49. CheckHostPorts(&testHost)
  50. is.Equal(testHost.ListenPort, 51830)
  51. is.Equal(testHost.ProxyListenPort, 51730)
  52. })
  53. t.Run("same listen port", func(t *testing.T) {
  54. is := is.New(t)
  55. testHost.ListenPort = 51821
  56. CheckHostPorts(&testHost)
  57. is.Equal(testHost.ListenPort, 51822)
  58. is.Equal(testHost.ProxyListenPort, 51730)
  59. })
  60. t.Run("same proxy port", func(t *testing.T) {
  61. is := is.New(t)
  62. testHost.ProxyListenPort = 65535
  63. CheckHostPorts(&testHost)
  64. is.Equal(testHost.ListenPort, 51822)
  65. is.Equal(testHost.ProxyListenPort, minPort)
  66. })
  67. t.Run("listenport equals proxy port", func(t *testing.T) {
  68. is := is.New(t)
  69. testHost.ListenPort = maxPort
  70. CheckHostPorts(&testHost)
  71. is.Equal(testHost.ListenPort, minPort)
  72. is.Equal(testHost.ProxyListenPort, minPort+1)
  73. })
  74. t.Run("proxyport equals listenport", func(t *testing.T) {
  75. is := is.New(t)
  76. testHost.ProxyListenPort = 51821
  77. CheckHostPorts(&testHost)
  78. is.Equal(testHost.ListenPort, minPort)
  79. is.Equal(testHost.ProxyListenPort, 51822)
  80. })
  81. }