github.com/Asutorufa/yuhaiin@v0.3.6-0.20240502055049-7984da7023a0/pkg/net/trie/domain/domain_test.go (about) 1 package domain 2 3 import ( 4 "testing" 5 6 "github.com/Asutorufa/yuhaiin/pkg/net/netapi" 7 "github.com/Asutorufa/yuhaiin/pkg/utils/assert" 8 ) 9 10 // BenchmarkDomainMatcher_Search-4 19006478 71.57 ns/op 64 B/op 2 allocs/op 11 func BenchmarkDomainMatcher_Search(b *testing.B) { 12 root := NewDomainMapper[string]() 13 root.Insert("*.baidu.com", "test_baidu") 14 root.Insert("www.baidu.sub.com.cn", "test_baidu") 15 root.Insert("www.google.com", "test_google") 16 17 addr := netapi.ParseAddressPort(0, "www.baidu.sub.com.cn.net", netapi.ParsePort(0)) 18 19 b.RunParallel(func(p *testing.PB) { 20 for p.Next() { 21 root.Search(addr) 22 } 23 }) 24 } 25 26 func TestDomainMatcherSearch(t *testing.T) { 27 root := NewDomainMapper[string]() 28 root.Insert("*.baidu.com", "sub_baidu_test") 29 root.Insert("www.baidu.com", "test_baidu") 30 root.Insert("last.baidu.*", "test_last_baidu") 31 root.Insert("*.baidu.*", "last_sub_baidu_test") 32 root.Insert("spo.baidu.com", "test_no_sub_baidu") 33 root.Insert("www.google.com", "test_google") 34 root.Insert("music.111.com", "1111") 35 root.Insert("163.com", "163") 36 root.Insert("*.google.com", "google") 37 root.Insert("*.dl.google.com", "google_dl") 38 root.Insert("api.sec.miui.*", "ad_miui") 39 root.Insert("*.miui.com", "miui") 40 41 search := func(s string) string { 42 res, _ := root.Search(netapi.ParseAddressPort(0, s, netapi.ParsePort(0))) 43 return res 44 } 45 assert.Equal(t, "test_baidu", search("www.baidu.com")) 46 assert.Equal(t, "test_no_sub_baidu", search("spo.baidu.com")) 47 assert.Equal(t, "test_last_baidu", search("last.baidu.com.cn")) 48 assert.Equal(t, "sub_baidu_test", search("test.baidu.com")) 49 assert.Equal(t, "sub_baidu_test", search("test.test2.baidu.com")) 50 assert.Equal(t, "last_sub_baidu_test", search("www.baidu.cn")) 51 assert.Equal(t, "test_google", search("www.google.com")) 52 assert.Equal(t, "", search("www.google.cn")) 53 assert.Equal(t, "", search("music.163.com")) 54 assert.Equal(t, "163", search("163.com")) 55 assert.Equal(t, "google", search("www.x.google.com")) 56 assert.Equal(t, "google_dl", search("dl.google.com")) 57 assert.Equal(t, "ad_miui", search("api.sec.miui.com")) 58 }