fakedns_test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package fakedns
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. "github.com/xtls/xray-core/common"
  6. "github.com/xtls/xray-core/common/net"
  7. "github.com/xtls/xray-core/common/uuid"
  8. )
  9. func TestNewFakeDnsHolder(_ *testing.T) {
  10. _, err := NewFakeDNSHolder()
  11. common.Must(err)
  12. }
  13. func TestFakeDnsHolderCreateMapping(t *testing.T) {
  14. fkdns, err := NewFakeDNSHolder()
  15. common.Must(err)
  16. addr := fkdns.GetFakeIPForDomain("fakednstest.example.com")
  17. assert.Equal(t, "240.", addr[0].IP().String()[0:4])
  18. }
  19. func TestFakeDnsHolderCreateMappingMany(t *testing.T) {
  20. fkdns, err := NewFakeDNSHolder()
  21. common.Must(err)
  22. addr := fkdns.GetFakeIPForDomain("fakednstest.example.com")
  23. assert.Equal(t, "240.", addr[0].IP().String()[0:4])
  24. addr2 := fkdns.GetFakeIPForDomain("fakednstest2.example.com")
  25. assert.Equal(t, "240.", addr2[0].IP().String()[0:4])
  26. assert.NotEqual(t, addr[0].IP().String(), addr2[0].IP().String())
  27. }
  28. func TestFakeDnsHolderCreateMappingManyAndResolve(t *testing.T) {
  29. fkdns, err := NewFakeDNSHolder()
  30. common.Must(err)
  31. addr := fkdns.GetFakeIPForDomain("fakednstest.example.com")
  32. addr2 := fkdns.GetFakeIPForDomain("fakednstest2.example.com")
  33. {
  34. result := fkdns.GetDomainFromFakeDNS(addr[0])
  35. assert.Equal(t, "fakednstest.example.com", result)
  36. }
  37. {
  38. result := fkdns.GetDomainFromFakeDNS(addr2[0])
  39. assert.Equal(t, "fakednstest2.example.com", result)
  40. }
  41. }
  42. func TestFakeDnsHolderCreateMappingManySingleDomain(t *testing.T) {
  43. fkdns, err := NewFakeDNSHolder()
  44. common.Must(err)
  45. addr := fkdns.GetFakeIPForDomain("fakednstest.example.com")
  46. addr2 := fkdns.GetFakeIPForDomain("fakednstest.example.com")
  47. assert.Equal(t, addr[0].IP().String(), addr2[0].IP().String())
  48. }
  49. func TestFakeDnsHolderCreateMappingAndRollOver(t *testing.T) {
  50. fkdns, err := NewFakeDNSHolderConfigOnly(&FakeDnsPool{
  51. IpPool: "240.0.0.0/12",
  52. LruSize: 256,
  53. })
  54. common.Must(err)
  55. err = fkdns.Start()
  56. common.Must(err)
  57. addr := fkdns.GetFakeIPForDomain("fakednstest.example.com")
  58. addr2 := fkdns.GetFakeIPForDomain("fakednstest2.example.com")
  59. for i := 0; i <= 8192; i++ {
  60. {
  61. result := fkdns.GetDomainFromFakeDNS(addr[0])
  62. assert.Equal(t, "fakednstest.example.com", result)
  63. }
  64. {
  65. result := fkdns.GetDomainFromFakeDNS(addr2[0])
  66. assert.Equal(t, "fakednstest2.example.com", result)
  67. }
  68. {
  69. uuid := uuid.New()
  70. domain := uuid.String() + ".fakednstest.example.com"
  71. tempAddr := fkdns.GetFakeIPForDomain(domain)
  72. rsaddr := tempAddr[0].IP().String()
  73. result := fkdns.GetDomainFromFakeDNS(net.ParseAddress(rsaddr))
  74. assert.Equal(t, domain, result)
  75. }
  76. }
  77. }