package sessdata import ( "fmt" "net" "os" "path" "testing" "github.com/bjdgyc/anylink/base" "github.com/bjdgyc/anylink/dbdata" "github.com/stretchr/testify/assert" ) func preIpData() { base.Cfg.Ipv4Network = "192.168.3.0" base.Cfg.Ipv4Netmask = "255.255.255.0" base.Cfg.Ipv4Pool = []string{"192.168.3.1", "192.168.3.199"} tmpDb := path.Join(os.TempDir(), "anylink_test.db") base.Cfg.DbFile = tmpDb dbdata.Start() } func closeIpdata() { dbdata.Stop() tmpDb := path.Join(os.TempDir(), "anylink_test.db") os.Remove(tmpDb) } func TestIpPool(t *testing.T) { assert := assert.New(t) preIpData() defer closeIpdata() initIpPool() var ip net.IP for i := 1; i <= 100; i++ { ip = AcquireIp("user", fmt.Sprintf("mac-%d", i)) } ip = AcquireIp("user", fmt.Sprintf("mac-new")) assert.True(net.IPv4(192, 168, 3, 101).Equal(ip)) for i := 102; i <= 199; i++ { ip = AcquireIp("user", fmt.Sprintf("mac-%d", i)) } assert.True(net.IPv4(192, 168, 3, 199).Equal(ip)) ip = AcquireIp("user", fmt.Sprintf("mac-nil")) assert.Nil(ip) ReleaseIp(net.IPv4(192, 168, 3, 88), "mac-88") ReleaseIp(net.IPv4(192, 168, 3, 77), "mac-77") // 最早过期的ip ip = AcquireIp("user", "mac-release-new") assert.True(net.IPv4(192, 168, 3, 88).Equal(ip)) }