diff --git a/controllers/dns_test.go b/controllers/dns_test.go index a55571f4..245c126a 100644 --- a/controllers/dns_test.go +++ b/controllers/dns_test.go @@ -6,7 +6,6 @@ import ( "testing" "github.com/google/uuid" - "github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/logic" "github.com/gravitl/netmaker/models" "github.com/stretchr/testify/assert" @@ -16,7 +15,7 @@ import ( var dnsHost models.Host func TestGetAllDNS(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() createNet() @@ -47,7 +46,7 @@ func TestGetAllDNS(t *testing.T) { } func TestGetNodeDNS(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() createNet() @@ -94,7 +93,7 @@ func TestGetNodeDNS(t *testing.T) { }) } func TestGetCustomDNS(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() t.Run("NoNetworks", func(t *testing.T) { @@ -133,7 +132,7 @@ func TestGetCustomDNS(t *testing.T) { } func TestGetDNSEntryNum(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() createNet() @@ -152,7 +151,7 @@ func TestGetDNSEntryNum(t *testing.T) { }) } func TestGetDNS(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() createNet() @@ -196,7 +195,7 @@ func TestGetDNS(t *testing.T) { } func TestCreateDNS(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() createNet() @@ -207,7 +206,7 @@ func TestCreateDNS(t *testing.T) { } func TestSetDNS(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() t.Run("NoNetworks", func(t *testing.T) { @@ -255,7 +254,7 @@ func TestSetDNS(t *testing.T) { } func TestGetDNSEntry(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() createNet() @@ -285,7 +284,7 @@ func TestGetDNSEntry(t *testing.T) { } func TestDeleteDNS(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() createNet() @@ -307,7 +306,7 @@ func TestDeleteDNS(t *testing.T) { } func TestValidateDNSUpdate(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllDNS(t) deleteAllNetworks() createNet() @@ -369,7 +368,7 @@ func TestValidateDNSUpdate(t *testing.T) { } func TestValidateDNSCreate(t *testing.T) { - database.InitializeDatabase() + initialize() _ = logic.DeleteDNS("mynode", "skynet") t.Run("NoNetwork", func(t *testing.T) { entry := models.DNSEntry{"10.0.0.2", "", "myhost", "badnet"} diff --git a/controllers/network_test.go b/controllers/network_test.go index 995349be..3a61c631 100644 --- a/controllers/network_test.go +++ b/controllers/network_test.go @@ -1,6 +1,7 @@ package controller import ( + "context" "os" "testing" @@ -321,6 +322,7 @@ func deleteAllNetworks() { func initialize() { database.InitializeDatabase() createAdminUser() + go logic.ManageZombies(context.Background()) } func createAdminUser() { diff --git a/controllers/node_test.go b/controllers/node_test.go index b16c3c9e..fcaf572e 100644 --- a/controllers/node_test.go +++ b/controllers/node_test.go @@ -21,7 +21,7 @@ func TestCreateEgressGateway(t *testing.T) { var gateway models.EgressGatewayRequest gateway.Ranges = []string{"10.100.100.0/24"} gateway.NetID = "skynet" - database.InitializeDatabase() + initialize() deleteAllNetworks() createNet() t.Run("NoNodes", func(t *testing.T) { @@ -78,7 +78,7 @@ func TestCreateEgressGateway(t *testing.T) { } func TestDeleteEgressGateway(t *testing.T) { var gateway models.EgressGatewayRequest - database.InitializeDatabase() + initialize() deleteAllNetworks() createNet() testnode := createTestNode() @@ -110,7 +110,7 @@ func TestDeleteEgressGateway(t *testing.T) { } func TestGetNetworkNodes(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllNetworks() createNet() t.Run("BadNet", func(t *testing.T) { diff --git a/controllers/user_test.go b/controllers/user_test.go index 629964e4..642a3b3f 100644 --- a/controllers/user_test.go +++ b/controllers/user_test.go @@ -3,7 +3,6 @@ package controller import ( "testing" - "github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/logic" "github.com/gravitl/netmaker/models" "github.com/stretchr/testify/assert" @@ -18,7 +17,7 @@ func deleteAllUsers() { func TestHasAdmin(t *testing.T) { //delete all current users - database.InitializeDatabase() + initialize() users, _ := logic.GetUsers() for _, user := range users { success, err := logic.DeleteUser(user.UserName) @@ -48,7 +47,7 @@ func TestHasAdmin(t *testing.T) { }) t.Run("multiple admins", func(t *testing.T) { var user = models.User{"admin1", "password", nil, true, nil} - err := logic.CreateUser(&user) + err := logic.CreateUser(&user) assert.Nil(t, err) found, err := logic.HasAdmin() assert.Nil(t, err) @@ -57,7 +56,7 @@ func TestHasAdmin(t *testing.T) { } func TestCreateUser(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllUsers() user := models.User{"admin", "password", nil, true, nil} t.Run("NoUser", func(t *testing.T) { @@ -72,7 +71,7 @@ func TestCreateUser(t *testing.T) { } func TestCreateAdmin(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllUsers() var user models.User t.Run("NoAdmin", func(t *testing.T) { @@ -90,7 +89,7 @@ func TestCreateAdmin(t *testing.T) { } func TestDeleteUser(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllUsers() t.Run("NonExistent User", func(t *testing.T) { deleted, err := logic.DeleteUser("admin") @@ -107,7 +106,7 @@ func TestDeleteUser(t *testing.T) { } func TestValidateUser(t *testing.T) { - database.InitializeDatabase() + initialize() var user models.User t.Run("Valid Create", func(t *testing.T) { user.UserName = "admin" @@ -155,7 +154,7 @@ func TestValidateUser(t *testing.T) { } func TestGetUser(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllUsers() t.Run("NonExistantUser", func(t *testing.T) { admin, err := logic.GetUser("admin") @@ -172,7 +171,7 @@ func TestGetUser(t *testing.T) { } func TestGetUsers(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllUsers() t.Run("NonExistantUser", func(t *testing.T) { admin, err := logic.GetUsers() @@ -203,7 +202,7 @@ func TestGetUsers(t *testing.T) { } func TestUpdateUser(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllUsers() user := models.User{"admin", "password", nil, true, nil} newuser := models.User{"hello", "world", []string{"wirecat, netmaker"}, true, []string{}} @@ -246,7 +245,7 @@ func TestUpdateUser(t *testing.T) { // } func TestVerifyAuthRequest(t *testing.T) { - database.InitializeDatabase() + initialize() deleteAllUsers() var authRequest models.UserAuthParams t.Run("EmptyUserName", func(t *testing.T) { diff --git a/functions/helpers_test.go b/functions/helpers_test.go index e2737f48..a5afc6c9 100644 --- a/functions/helpers_test.go +++ b/functions/helpers_test.go @@ -20,7 +20,7 @@ var ( ) func TestNetworkExists(t *testing.T) { - err := database.InitializeDatabase() + err := initialize() if err != nil { t.Fatalf("error initilizing database: %s", err) } @@ -53,7 +53,7 @@ func TestNetworkExists(t *testing.T) { } func TestGetAllExtClients(t *testing.T) { - err := database.InitializeDatabase() + err := initialize() if err != nil { t.Fatalf("error initilizing database: %s", err) } diff --git a/logic/host_test.go b/logic/host_test.go index 75ff7a16..e142f634 100644 --- a/logic/host_test.go +++ b/logic/host_test.go @@ -5,13 +5,12 @@ import ( "testing" "github.com/google/uuid" - "github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/models" "github.com/matryer/is" ) func TestCheckPorts(t *testing.T) { - database.InitializeDatabase() + initialize() h := models.Host{ ID: uuid.New(), EndpointIP: net.ParseIP("192.168.1.1"), diff --git a/logic/nodes.go b/logic/nodes.go index db9f1e8f..1ef27229 100644 --- a/logic/nodes.go +++ b/logic/nodes.go @@ -91,7 +91,7 @@ func DeleteNode(node *models.Node, purge bool) error { if err := UpdateNode(node, &newnode); err != nil { return err } - zombies = append(zombies, node.ID) + newZombie <- node.ID return nil } host, err := GetHost(node.HostID.String()) diff --git a/logic/pro/networkuser_test.go b/logic/pro/networkuser_test.go index ac9994dd..ff34c107 100644 --- a/logic/pro/networkuser_test.go +++ b/logic/pro/networkuser_test.go @@ -4,14 +4,13 @@ import ( "testing" "github.com/google/uuid" - "github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/models/promodels" "github.com/stretchr/testify/assert" ) func TestNetworkUserLogic(t *testing.T) { - database.InitializeDatabase() + initialize() networkUser := promodels.NetworkUser{ ID: "helloworld", } diff --git a/logic/pro/usergroups_test.go b/logic/pro/usergroups_test.go index cd472e25..c7094964 100644 --- a/logic/pro/usergroups_test.go +++ b/logic/pro/usergroups_test.go @@ -3,13 +3,12 @@ package pro import ( "testing" - "github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/models/promodels" "github.com/stretchr/testify/assert" ) func TestUserGroupLogic(t *testing.T) { - database.InitializeDatabase() + initialize() t.Run("User Groups initialized successfully", func(t *testing.T) { err := InitializeGroups() diff --git a/logic/zombie.go b/logic/zombie.go index cd1dd307..4b147776 100644 --- a/logic/zombie.go +++ b/logic/zombie.go @@ -17,8 +17,10 @@ const ( ) var ( - zombies []uuid.UUID - hostZombies []uuid.UUID + zombies []uuid.UUID + hostZombies []uuid.UUID + newZombie chan uuid.UUID = make(chan (uuid.UUID), 10) + newHostZombie chan uuid.UUID = make(chan (uuid.UUID), 10) ) // CheckZombies - checks if new node has same hostid as existing node @@ -37,7 +39,7 @@ func CheckZombies(newnode *models.Node) { } if node.HostID == newnode.HostID || time.Now().After(node.ExpirationDateTime) { logger.Log(0, "adding ", node.ID.String(), " to zombie list") - zombies = append(zombies, node.ID) + newZombie <- node.ID } } } @@ -57,7 +59,7 @@ func checkForZombieHosts(h *models.Host) { } if existing.MacAddress.String() == h.MacAddress.String() { //add to hostZombies - hostZombies = append(hostZombies, existing.ID) + newHostZombie <- existing.ID //add all nodes belonging to host to zombile list for _, node := range existing.Nodes { id, err := uuid.Parse(node) @@ -65,7 +67,7 @@ func checkForZombieHosts(h *models.Host) { logger.Log(3, "error parsing uuid from host.Nodes", err.Error()) continue } - zombies = append(zombies, id) + newHostZombie <- id } } } @@ -79,6 +81,10 @@ func ManageZombies(ctx context.Context, peerUpdate chan *models.Node) { select { case <-ctx.Done(): return + case id := <-newZombie: + zombies = append(zombies, id) + case id := <-newHostZombie: + hostZombies = append(hostZombies, id) case <-time.After(time.Second * ZOMBIE_TIMEOUT): logger.Log(3, "checking for zombie nodes") if len(zombies) > 0 { @@ -142,10 +148,10 @@ func InitializeZombies() { } if node.HostID == othernode.HostID { if node.LastCheckIn.After(othernode.LastCheckIn) { - zombies = append(zombies, othernode.ID) + newZombie <- othernode.ID logger.Log(1, "adding", othernode.ID.String(), "to zombie list") } else { - zombies = append(zombies, node.ID) + newZombie <- node.ID logger.Log(1, "adding", node.ID.String(), "to zombie list") } } diff --git a/models/network_test.go b/models/network_test.go index bd79398d..3db60cc3 100644 --- a/models/network_test.go +++ b/models/network_test.go @@ -2,7 +2,7 @@ package models // moved from controllers need work //func TestUpdateNetwork(t *testing.T) { -// database.InitializeDatabase() +// initialize() // createNet() // network := getNet() // t.Run("NetID", func(t *testing.T) {