feat: 添加测试模式,方便开发调试

This commit is contained in:
spiritlhl 2025-04-06 12:51:53 +00:00
parent 1a985cfbbe
commit c9c62e86f3
3 changed files with 31 additions and 30 deletions

View File

@ -5,31 +5,31 @@ import (
"time"
)
func BackTrace() {
// 获取IP地址数量
ipCount := len(ipv4s)
var (
s = make([]string, ipCount) // 动态分配切片大小
c = make(chan Result)
t = time.After(time.Second * 10)
)
for i := range ipv4s {
go trace(c, i)
}
loop:
for range s {
select {
case o := <-c:
s[o.i] = o.s
case <-t:
break loop
}
}
for _, r := range s {
if r != "" {
fmt.Println(r)
}
}
func BackTrace(test bool) {
if !test {
// 获取IP地址数量
ipCount := len(ipv4s)
var (
s = make([]string, ipCount) // 动态分配切片大小
c = make(chan Result)
t = time.After(time.Second * 10)
)
for i := range ipv4s {
go trace(c, i)
}
loop:
for range s {
select {
case o := <-c:
s[o.i] = o.s
case <-t:
break loop
}
}
for _, r := range s {
if r != "" {
fmt.Println(r)
}
}
}
}

View File

@ -16,5 +16,5 @@ import (
//}
func TestBackTrace(t *testing.T) {
BackTrace()
BackTrace(false)
}

View File

@ -25,12 +25,13 @@ func main() {
http.Get("https://hits.spiritlhl.net/backtrace.svg?action=hit&title=Hits&title_bg=%23555555&count_bg=%230eecf8&edge_flat=false")
}()
fmt.Println(Green("项目地址:"), Yellow("https://github.com/oneclickvirt/backtrace"))
var showVersion, showIpInfo, help bool
var showVersion, showIpInfo, help, test bool
backtraceFlag := flag.NewFlagSet("backtrace", flag.ContinueOnError)
backtraceFlag.BoolVar(&help, "h", false, "Show help information")
backtraceFlag.BoolVar(&showVersion, "v", false, "Show version")
backtraceFlag.BoolVar(&showIpInfo, "s", true, "Disabe show ip info")
backtraceFlag.BoolVar(&backtrace.EnableLoger, "e", false, "Enable logging")
backtraceFlag.BoolVar(&test, "test", false, "Test Mode")
backtraceFlag.Parse(os.Args[1:])
if help {
fmt.Printf("Usage: %s [options]\n", os.Args[0])
@ -56,7 +57,7 @@ func main() {
}
}
}
backtrace.BackTrace()
backtrace.BackTrace(test)
fmt.Println(Yellow("准确线路自行查看详细路由,本测试结果仅作参考"))
fmt.Println(Yellow("同一目标地址多个线路时,可能检测已越过汇聚层,除了第一个线路外,后续信息可能无效"))
if runtime.GOOS == "windows" || runtime.GOOS == "darwin" {