106 lines
3.2 KiB
Go
106 lines
3.2 KiB
Go
// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
|
//go:build plus
|
|
|
|
package uam_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/TeaOSLab/EdgeNode/internal/uam"
|
|
"github.com/iwind/TeaGo/assert"
|
|
"github.com/iwind/TeaGo/types"
|
|
"net/http"
|
|
"testing"
|
|
)
|
|
|
|
func TestManager_ComposeKey(t *testing.T) {
|
|
manager, err := uam.NewManager("abc", "123")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
req, err := http.NewRequest(http.MethodGet, "https://127.0.0.1/hello", nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36")
|
|
t.Logf("%#v", manager.ComposeKey(req, "127.0.0.1"))
|
|
}
|
|
|
|
func TestManager_GeneratePrevKey(t *testing.T) {
|
|
manager, err := uam.NewManager("abc", "123")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
req, err := http.NewRequest(http.MethodGet, "https://127.0.0.1/hello", nil)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36")
|
|
key, err := manager.EncodeKey(manager.ComposeKey(req, "127.0.0.1"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Log("[" + types.String(len(key)) + "]" + key)
|
|
}
|
|
|
|
func TestParseTopDomain(t *testing.T) {
|
|
var a = assert.NewAssertion(t)
|
|
|
|
manager, err := uam.NewManager("", "")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
a.IsTrue(manager.ParseTopDomain("") == "")
|
|
a.IsTrue(manager.ParseTopDomain("192.168.1.1") == "192.168.1.1")
|
|
a.IsTrue(manager.ParseTopDomain("192.168.1.1:1234") == "192.168.1.1")
|
|
a.IsTrue(manager.ParseTopDomain("example.com") == "example.com")
|
|
a.IsTrue(manager.ParseTopDomain("sub.example.com") == "example.com")
|
|
a.IsTrue(manager.ParseTopDomain("google") == "google")
|
|
a.IsTrue(manager.ParseTopDomain("sub1.sub2.sub3.sub.example.com") == "example.com")
|
|
a.IsTrue(manager.ParseTopDomain("example.com.cn") == "example.com.cn")
|
|
a.IsTrue(manager.ParseTopDomain("example.net.cn") == "example.net.cn")
|
|
a.IsTrue(manager.ParseTopDomain("example.org.cn") == "example.org.cn")
|
|
a.IsTrue(manager.ParseTopDomain("sub.example.com.cn") == "example.com.cn")
|
|
a.IsTrue(manager.ParseTopDomain("a.中国") == "a.中国")
|
|
a.IsTrue(manager.ParseTopDomain("b.a.中国") == "a.中国")
|
|
}
|
|
|
|
func BenchmarkManager_MarshalKey_PB(b *testing.B) {
|
|
manager, err := uam.NewManager("abc", "123")
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
|
|
req, err := http.NewRequest(http.MethodGet, "https://127.0.0.1/hello", nil)
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36")
|
|
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
_, _ = manager.ComposeKey(req, "127.0.0.1").AsPB()
|
|
}
|
|
}
|
|
|
|
func BenchmarkManager_MarshalKey_JSON(b *testing.B) {
|
|
manager, err := uam.NewManager("abc", "123")
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
|
|
req, err := http.NewRequest(http.MethodGet, "https://127.0.0.1/hello", nil)
|
|
if err != nil {
|
|
b.Fatal(err)
|
|
}
|
|
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.83 Safari/537.36")
|
|
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
_, _ = json.Marshal(manager.ComposeKey(req, "127.0.0.1"))
|
|
}
|
|
}
|