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  // }