github.com/EagleQL/Xray-core@v1.4.3/app/dns/fakedns/fakedns_test.go (about) 1 package fakedns 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 8 "github.com/xtls/xray-core/common" 9 "github.com/xtls/xray-core/common/net" 10 "github.com/xtls/xray-core/common/uuid" 11 "github.com/xtls/xray-core/features/dns" 12 ) 13 14 var ( 15 ipPrefix = "198.18." 16 ) 17 18 func TestNewFakeDnsHolder(_ *testing.T) { 19 _, err := NewFakeDNSHolder() 20 common.Must(err) 21 } 22 23 func TestFakeDnsHolderCreateMapping(t *testing.T) { 24 fkdns, err := NewFakeDNSHolder() 25 common.Must(err) 26 27 addr := fkdns.GetFakeIPForDomain("fakednstest.example.com") 28 assert.Equal(t, ipPrefix, addr[0].IP().String()[0:len(ipPrefix)]) 29 } 30 31 func TestFakeDnsHolderCreateMappingMany(t *testing.T) { 32 fkdns, err := NewFakeDNSHolder() 33 common.Must(err) 34 35 addr := fkdns.GetFakeIPForDomain("fakednstest.example.com") 36 assert.Equal(t, ipPrefix, addr[0].IP().String()[0:len(ipPrefix)]) 37 38 addr2 := fkdns.GetFakeIPForDomain("fakednstest2.example.com") 39 assert.Equal(t, ipPrefix, addr2[0].IP().String()[0:len(ipPrefix)]) 40 assert.NotEqual(t, addr[0].IP().String(), addr2[0].IP().String()) 41 } 42 43 func TestFakeDnsHolderCreateMappingManyAndResolve(t *testing.T) { 44 fkdns, err := NewFakeDNSHolder() 45 common.Must(err) 46 47 addr := fkdns.GetFakeIPForDomain("fakednstest.example.com") 48 addr2 := fkdns.GetFakeIPForDomain("fakednstest2.example.com") 49 50 { 51 result := fkdns.GetDomainFromFakeDNS(addr[0]) 52 assert.Equal(t, "fakednstest.example.com", result) 53 } 54 55 { 56 result := fkdns.GetDomainFromFakeDNS(addr2[0]) 57 assert.Equal(t, "fakednstest2.example.com", result) 58 } 59 } 60 61 func TestFakeDnsHolderCreateMappingManySingleDomain(t *testing.T) { 62 fkdns, err := NewFakeDNSHolder() 63 common.Must(err) 64 65 addr := fkdns.GetFakeIPForDomain("fakednstest.example.com") 66 addr2 := fkdns.GetFakeIPForDomain("fakednstest.example.com") 67 assert.Equal(t, addr[0].IP().String(), addr2[0].IP().String()) 68 } 69 70 func TestFakeDnsHolderCreateMappingAndRollOver(t *testing.T) { 71 fkdns, err := NewFakeDNSHolderConfigOnly(&FakeDnsPool{ 72 IpPool: dns.FakeIPPool, 73 LruSize: 256, 74 }) 75 common.Must(err) 76 77 err = fkdns.Start() 78 79 common.Must(err) 80 81 addr := fkdns.GetFakeIPForDomain("fakednstest.example.com") 82 addr2 := fkdns.GetFakeIPForDomain("fakednstest2.example.com") 83 84 for i := 0; i <= 8192; i++ { 85 { 86 result := fkdns.GetDomainFromFakeDNS(addr[0]) 87 assert.Equal(t, "fakednstest.example.com", result) 88 } 89 90 { 91 result := fkdns.GetDomainFromFakeDNS(addr2[0]) 92 assert.Equal(t, "fakednstest2.example.com", result) 93 } 94 95 { 96 uuid := uuid.New() 97 domain := uuid.String() + ".fakednstest.example.com" 98 tempAddr := fkdns.GetFakeIPForDomain(domain) 99 rsaddr := tempAddr[0].IP().String() 100 101 result := fkdns.GetDomainFromFakeDNS(net.ParseAddress(rsaddr)) 102 assert.Equal(t, domain, result) 103 } 104 } 105 }