mirror of
https://github.com/lionsoul2014/ip2region.git
synced 2025-12-08 19:25:22 +00:00
add version flag and use it for the searcher create
This commit is contained in:
parent
34e89d3f50
commit
33beaf96c9
@ -364,7 +364,7 @@ commands:
|
|||||||
|
|
||||||
func testBench() {
|
func testBench() {
|
||||||
var err error
|
var err error
|
||||||
var dbFile, srcFile, logLevel = "", "", ""
|
var dbFile, srcFile, ipVersion, logLevel = "", "", "", ""
|
||||||
var ignoreError = false
|
var ignoreError = false
|
||||||
var fErr = iterateFlags(func(key string, val string) error {
|
var fErr = iterateFlags(func(key string, val string) error {
|
||||||
switch key {
|
switch key {
|
||||||
@ -372,6 +372,8 @@ func testBench() {
|
|||||||
dbFile = val
|
dbFile = val
|
||||||
case "src":
|
case "src":
|
||||||
srcFile = val
|
srcFile = val
|
||||||
|
case "version":
|
||||||
|
ipVersion = val
|
||||||
case "log-level":
|
case "log-level":
|
||||||
logLevel = val
|
logLevel = val
|
||||||
case "ignore-error":
|
case "ignore-error":
|
||||||
@ -397,11 +399,23 @@ func testBench() {
|
|||||||
fmt.Printf("options:\n")
|
fmt.Printf("options:\n")
|
||||||
fmt.Printf(" --db string ip2region binary xdb file path\n")
|
fmt.Printf(" --db string ip2region binary xdb file path\n")
|
||||||
fmt.Printf(" --src string source ip text file path\n")
|
fmt.Printf(" --src string source ip text file path\n")
|
||||||
|
fmt.Printf(" --version string IP version, options: ipv4/ipv6, specify this flag so you don't get confused \n")
|
||||||
fmt.Printf(" --log-level string set the log level, options: debug/info/warn/error\n")
|
fmt.Printf(" --log-level string set the log level, options: debug/info/warn/error\n")
|
||||||
fmt.Printf(" --ignore-error bool keep going if bench failed\n")
|
fmt.Printf(" --ignore-error bool keep going if bench failed\n")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check and define the IP version
|
||||||
|
var version *xdb.Version = nil
|
||||||
|
if len(ipVersion) < 2 {
|
||||||
|
slog.Error("please specify the ip version with flag --version, ipv4 or ipv6 ?")
|
||||||
|
return
|
||||||
|
} else if v, err := xdb.VersionFromName(ipVersion); err != nil {
|
||||||
|
slog.Error("failed to parse version name", "error", err)
|
||||||
|
} else {
|
||||||
|
version = v
|
||||||
|
}
|
||||||
|
|
||||||
// check and apply the log level
|
// check and apply the log level
|
||||||
err = applyLogLevel(logLevel)
|
err = applyLogLevel(logLevel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -409,7 +423,7 @@ func testBench() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
searcher, err := xdb.NewSearcher(xdb.V4, dbFile)
|
searcher, err := xdb.NewSearcher(version, dbFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("failed to create searcher with `%s`: %s\n", dbFile, err)
|
fmt.Printf("failed to create searcher with `%s`: %s\n", dbFile, err)
|
||||||
return
|
return
|
||||||
@ -429,9 +443,9 @@ func testBench() {
|
|||||||
var iErr = xdb.IterateSegments(handle, nil, func(seg *xdb.Segment) error {
|
var iErr = xdb.IterateSegments(handle, nil, func(seg *xdb.Segment) error {
|
||||||
var l = fmt.Sprintf("%d|%d|%s", seg.StartIP, seg.EndIP, seg.Region)
|
var l = fmt.Sprintf("%d|%d|%s", seg.StartIP, seg.EndIP, seg.Region)
|
||||||
slog.Debug("try to bench", "segment", l)
|
slog.Debug("try to bench", "segment", l)
|
||||||
mip := xdb.IPMiddle(seg.StartIP, seg.EndIP)
|
// mip := xdb.IPMiddle(seg.StartIP, seg.EndIP)
|
||||||
for _, ip := range [][]byte{
|
// for _, ip := range [][]byte{seg.StartIP, xdb.IPMiddle(seg.EndIP, mip), mip, xdb.IPMiddle(mip, seg.EndIP), seg.EndIP} {
|
||||||
seg.StartIP, xdb.IPMiddle(seg.EndIP, mip), mip, xdb.IPMiddle(mip, seg.EndIP), seg.EndIP} {
|
for _, ip := range [][]byte{seg.StartIP, seg.EndIP} {
|
||||||
slog.Debug("|-try to bench", "ip", xdb.IP2String(ip))
|
slog.Debug("|-try to bench", "ip", xdb.IP2String(ip))
|
||||||
r, _, err := searcher.Search(ip)
|
r, _, err := searcher.Search(ip)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user