12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package ganserv_test
- import (
- "fmt"
- "net"
- "strconv"
- "testing"
- "imuslab.com/zoraxy/mod/ganserv"
- )
- func TestGetRandomFreeIP(t *testing.T) {
- n := ganserv.Network{
- CIDR: "172.16.0.0/12",
- Nodes: []*ganserv.Node{
- {
- Name: "nodeC1",
- ManagedIP: net.ParseIP("172.16.1.142"),
- },
- {
- Name: "nodeC2",
- ManagedIP: net.ParseIP("172.16.5.174"),
- },
- },
- }
- // Call the function for 10 times
- for i := 0; i < 10; i++ {
- freeIP, err := n.GetRandomFreeIP()
- fmt.Println("["+strconv.Itoa(i)+"] Free IP address assigned: ", freeIP)
- // Assert that no error occurred
- if err != nil {
- t.Errorf("Unexpected error: %s", err.Error())
- }
- // Assert that the returned IP is a valid IPv4 address
- if freeIP.To4() == nil {
- t.Errorf("Invalid IP address format: %s", freeIP.String())
- }
- // Assert that the returned IP is not already used by a node
- for _, node := range n.Nodes {
- if freeIP.Equal(node.ManagedIP) {
- t.Errorf("Returned IP is already in use: %s", freeIP.String())
- }
- }
- n.Nodes = append(n.Nodes, &ganserv.Node{
- Name: "NodeT" + strconv.Itoa(i),
- ManagedIP: freeIP,
- })
- }
- }
|