add version flag and use it for the searcher create

This commit is contained in:
lion 2025-09-04 15:42:38 +08:00
parent 34e89d3f50
commit 33beaf96c9

View File

@ -364,7 +364,7 @@ commands:
func testBench() {
var err error
var dbFile, srcFile, logLevel = "", "", ""
var dbFile, srcFile, ipVersion, logLevel = "", "", "", ""
var ignoreError = false
var fErr = iterateFlags(func(key string, val string) error {
switch key {
@ -372,6 +372,8 @@ func testBench() {
dbFile = val
case "src":
srcFile = val
case "version":
ipVersion = val
case "log-level":
logLevel = val
case "ignore-error":
@ -397,11 +399,23 @@ func testBench() {
fmt.Printf("options:\n")
fmt.Printf(" --db string ip2region binary xdb 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(" --ignore-error bool keep going if bench failed\n")
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
err = applyLogLevel(logLevel)
if err != nil {
@ -409,7 +423,7 @@ func testBench() {
return
}
searcher, err := xdb.NewSearcher(xdb.V4, dbFile)
searcher, err := xdb.NewSearcher(version, dbFile)
if err != nil {
fmt.Printf("failed to create searcher with `%s`: %s\n", dbFile, err)
return
@ -429,9 +443,9 @@ func testBench() {
var iErr = xdb.IterateSegments(handle, nil, func(seg *xdb.Segment) error {
var l = fmt.Sprintf("%d|%d|%s", seg.StartIP, seg.EndIP, seg.Region)
slog.Debug("try to bench", "segment", l)
mip := xdb.IPMiddle(seg.StartIP, seg.EndIP)
for _, ip := range [][]byte{
seg.StartIP, xdb.IPMiddle(seg.EndIP, mip), mip, xdb.IPMiddle(mip, seg.EndIP), seg.EndIP} {
// mip := xdb.IPMiddle(seg.StartIP, seg.EndIP)
// for _, ip := range [][]byte{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))
r, _, err := searcher.Search(ip)
if err != nil {