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  }