diff --git a/ip_test.go b/ip_test.go index bdcdb56..b99b339 100644 --- a/ip_test.go +++ b/ip_test.go @@ -5,6 +5,7 @@ import ( "IPRegion/ip2region" "encoding/json" "fmt" + "sync" "testing" ) @@ -16,3 +17,48 @@ func TestIpInfo(tt *testing.T) { fmt.Println(string(res)) } + +// TestIpRangeChannel 内存测试 +func TestIpRangeChannel(tt *testing.T) { + ch := make(chan struct{}, 600) + defer close(ch) + for ip1 := 1; ip1 <= 255; ip1++ { + for ip2 := 0; ip2 <= 255; ip2++ { + for ip3 := 0; ip3 <= 255; ip3++ { + for ip4 := 1; ip4 <= 254; ip4++ { + ch <- struct{}{} + go func() { + address := fmt.Sprintf("%d.%d.%d.%d", ip1, ip2, ip3, ip4) + ipInfo, _ := ip2region.GetIPInfo(address, global.SearchType) + _, _ = json.Marshal(ipInfo) + fmt.Println(address) + <-ch + }() + + } + } + } + } +} + +// TestIpRangeLock 不限制情况 内存漏完 +func TestIpRangeLock(tt *testing.T) { + var lock sync.Mutex + for ip1 := 1; ip1 <= 255; ip1++ { + for ip2 := 0; ip2 <= 255; ip2++ { + for ip3 := 0; ip3 <= 255; ip3++ { + for ip4 := 1; ip4 <= 254; ip4++ { + go func() { + lock.Lock() + address := fmt.Sprintf("%d.%d.%d.%d", ip1, ip2, ip3, ip4) + ipInfo, _ := ip2region.GetIPInfo(address, global.SearchType) + res, _ := json.Marshal(ipInfo) + fmt.Println(string(res)) + lock.Unlock() + }() + + } + } + } + } +}