github.com/nxtrace/NTrace-core@v1.3.1-0.20240513132635-39169291e8c9/ipgeo/ipgeo_test.go (about) 1 package ipgeo 2 3 import ( 4 "errors" 5 "fmt" 6 "log" 7 "os" 8 "strconv" 9 "testing" 10 ) 11 12 // import ( 13 // "testing" 14 15 // "github.com/stretchr/testify/assert" 16 // ) 17 18 func TestXxx(t *testing.T) { 19 const IdFixedHeader = "10" 20 var processID = fmt.Sprintf("%07b", os.Getpid()&0x7f) //取进程ID的前7位 21 var ttl = fmt.Sprintf("%06b", 95) //取TTL的后6位 22 fmt.Println(os.Getpid()&0x7f, 95) 23 24 var parity int 25 id := IdFixedHeader + processID + ttl 26 for _, c := range id { 27 if c == '1' { 28 parity++ 29 } 30 } 31 if parity%2 == 0 { 32 id += "1" 33 } else { 34 id += "0" 35 } 36 processId, ttlR, _ := reverseID(id) 37 log.Println(processId, ttlR) 38 } 39 40 func TestFilter(t *testing.T) { 41 res, err := Filter("fd11::1") 42 //打印whois信息 43 fmt.Println(res.Whois) 44 print(err) 45 } 46 47 func reverseID(id string) (int64, int64, error) { 48 ttl, _ := strconv.ParseInt(id[9:15], 2, 32) 49 //process ID 50 processID, _ := strconv.ParseInt(id[2:9], 2, 32) 51 52 parity := 0 53 for i := 0; i < len(id)-1; i++ { 54 if id[i] == '1' { 55 parity++ 56 } 57 } 58 59 if parity%2 == 1 { 60 if id[len(id)-1] == '0' { 61 fmt.Println("Parity check passed.") 62 } else { 63 fmt.Println("Parity check failed.") 64 return 0, 0, errors.New("err") 65 } 66 } else { 67 if id[len(id)-1] == '1' { 68 fmt.Println("Parity check passed.") 69 } else { 70 fmt.Println("Parity check failed.") 71 return 0, 0, errors.New("err") 72 } 73 } 74 return processID, ttl, nil 75 } 76 77 // func TestLeoIP(t *testing.T) { 78 // // res, err := LeoIP("1.1.1.1") 79 // // assert.Nil(t, err) 80 // // assert.NotNil(t, res) 81 // // assert.NotEmpty(t, res.Asnumber) 82 // // assert.NotEmpty(t, res.Isp) 83 // } 84 85 // func TestIPSB(t *testing.T) { 86 // // Not available 87 // //res, err := IPSB("1.1.1.1") 88 // //assert.Nil(t, err) 89 // //assert.NotNil(t, res) 90 // //assert.NotEmpty(t, res.Asnumber) 91 // //assert.NotEmpty(t, res.Isp) 92 // } 93 94 // func TestIPInfo(t *testing.T) { 95 // res, err := IPInfo("1.1.1.1") 96 // assert.Nil(t, err) 97 // assert.NotNil(t, res) 98 // // assert.NotEmpty(t, res.Country) 99 // assert.NotEmpty(t, res.City) 100 // assert.NotEmpty(t, res.Prov) 101 // } 102 103 // func TestIPInSight(t *testing.T) { 104 // // res, err := IPInSight("1.1.1.1") 105 // // assert.Nil(t, err) 106 // // assert.NotNil(t, res) 107 // // assert.NotEmpty(t, res.Country) 108 // // assert.NotEmpty(t, res.Prov) 109 // // 这个库有时候不提供城市信息,返回值为"" 110 // //assert.NotEmpty(t, res.City) 111 // } 112 113 // func TestIPApiCom(t *testing.T) { 114 // res, err := IPApiCom("1.1.1.1") 115 // assert.Nil(t, err) 116 // assert.NotNil(t, res) 117 // assert.NotEmpty(t, res.Country) 118 // assert.NotEmpty(t, res.City) 119 // assert.NotEmpty(t, res.Prov) 120 // }