anylink/common/ip_pool_test.go

51 lines
1.1 KiB
Go

package common
import (
"fmt"
"net"
"testing"
)
func TestAcquireIp(t *testing.T) {
ServerCfg.Ipv4Network = "192.168.1.0"
ServerCfg.Ipv4Netmask = "255.255.255.0"
macIps = map[string]*MacIp{}
initIpPool()
var ip net.IP
for i := 2; i <= 100; i++ {
ip = AcquireIp(fmt.Sprintf("mac-%d", i))
}
ip = AcquireIp(fmt.Sprintf("mac-new"))
AssertTrue(t, ip.Equal(net.IPv4(192, 168, 1, 101)))
for i := 102; i <= 254; i++ {
ip = AcquireIp(fmt.Sprintf("mac-%d", i))
}
ip = AcquireIp(fmt.Sprintf("mac-nil"))
AssertTrue(t, ip == nil)
}
func TestReleaseIp(t *testing.T) {
ServerCfg.Ipv4Network = "192.168.1.0"
ServerCfg.Ipv4Netmask = "255.255.255.0"
macIps = map[string]*MacIp{}
initIpPool()
var ip net.IP
// 分配完所有数据
for i := 2; i <= 254; i++ {
ip = AcquireIp(fmt.Sprintf("mac-%d", i))
}
ip = AcquireIp(fmt.Sprintf("mac-more"))
AssertTrue(t, ip == nil)
ReleaseIp(net.IPv4(192, 168, 1, 123), "mac-123")
ReleaseIp(net.IPv4(192, 168, 1, 100), "mac-100")
ip = AcquireIp(fmt.Sprintf("mac-new"))
// 最早过期的ip
AssertTrue(t, ip.Equal(net.IPv4(192, 168, 1, 123)))
}