This commit is contained in:
unknown
2026-02-04 20:27:13 +08:00
commit 3b042d1dad
9410 changed files with 1488147 additions and 0 deletions

View File

@@ -0,0 +1,306 @@
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
//go:build plus
package nodes_test
import (
"crypto/tls"
"github.com/miekg/dns"
"testing"
"time"
)
func TestDNS_Query_A_UDP(t *testing.T) {
type query struct {
Domain string
Type uint16
}
c := new(dns.Client)
for _, query := range []query{
{"hello.world.teaos.cn", dns.TypeA},
{"cdn.teaos.cn", dns.TypeA},
{"hello.teaos.cn", dns.TypeCNAME},
{"hello.teaos.cn", dns.TypeA},
{"edgecdn.teaos.cn", dns.TypeA},
} {
var m = new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
r, _, err := c.Exchange(m, "127.0.0.1:53")
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
for _, a := range r.Answer {
t.Log(a)
}
}
}
func TestDNS_Query_A_Many(t *testing.T) {
type queryDef struct {
Domain string
Type uint16
}
var c = new(dns.Client)
for i := 0; i < 10000; i++ {
for _, query := range []queryDef{
{"hello.goedge.cn", dns.TypeA},
} {
var m = new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
r, _, err := c.Exchange(m, "127.0.0.1:53")
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
_ = r
}
}
}
func TestDNS_Query_CNAME(t *testing.T) {
type query struct {
Domain string
Type uint16
}
c := new(dns.Client)
for _, query := range []query{
{"hello.teaos.cn", dns.TypeA},
} {
m := new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
r, _, err := c.Exchange(m, "127.0.0.1:53")
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
for _, a := range r.Answer {
t.Log(a)
}
}
}
func TestDNS_Query_A_TCP(t *testing.T) {
type query struct {
Domain string
Type uint16
}
c := new(dns.Client)
for _, query := range []query{
{"hello.world.teaos.cn", dns.TypeA},
{"cdn.teaos.cn", dns.TypeA},
{"hello.teaos.cn", dns.TypeCNAME},
{"goedge.cn", dns.TypeA},
{"www.goedge.cn", dns.TypeA},
} {
m := new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
//r, _, err := c.Exchange(m, "127.0.0.1:54")
conn, err := dns.Dial("tcp", "127.0.0.1:53")
if err != nil {
t.Fatal(err)
}
r, _, err := c.ExchangeWithConn(m, conn)
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
for _, a := range r.Answer {
t.Log(a)
}
}
}
func TestDNS_Query_A_TLS(t *testing.T) {
type query struct {
Domain string
Type uint16
}
c := new(dns.Client)
for _, query := range []query{
{"hello.world.teaos.cn", dns.TypeA},
{"cdn.teaos.cn", dns.TypeA},
{"hello.teaos.cn", dns.TypeCNAME},
} {
m := new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
//r, _, err := c.Exchange(m, "127.0.0.1:54")
conn, err := dns.DialWithTLS("tcp", "127.0.0.1:853", &tls.Config{
InsecureSkipVerify: true,
})
if err != nil {
t.Fatal(err)
}
r, _, err := c.ExchangeWithConn(m, conn)
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
for _, a := range r.Answer {
t.Log(a)
}
}
}
func TestDNS_Query_Internet(t *testing.T) {
type query struct {
Domain string
Type uint16
}
c := new(dns.Client)
for _, query := range []query{
{"1.goedge.cn", dns.TypeA},
} {
m := new(dns.Msg)
//m.RecursionDesired = true
m.SetQuestion(query.Domain+".", query.Type)
conn, err := dns.Dial("udp", "ns1.teaos.cn:53")
if err != nil {
t.Fatal(err)
}
r, _, err := c.ExchangeWithConn(m, conn)
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
for _, a := range r.Answer {
t.Log(a)
}
}
}
func TestDNS_Query_TSIG(t *testing.T) {
type query struct {
Domain string
Type uint16
}
c := new(dns.Client)
c.TsigSecret = map[string]string{"teaos.": "NzhhZDExMzM5NWMwN2Q5OWM5YTFhMzgxZWNkZGMwMDA2ODUzODdiYTM2ODA5N2I2YjYwZWRlNmNlNjlhMzdmM2JmNjcxZmQ4NzVjMjI1Y2QwOTQ2Njk5OWY0MzRkMTJkNTczNjFlZDgwYmQxZWZjZDM4ZjAxNDNmM2Y2NTU1YjE="}
for _, query := range []query{
{"hello.cdn.teaos.cn", dns.TypeA},
{"cdn.teaos.cn", dns.TypeA},
{"hello.teaos.cn", dns.TypeCNAME},
{"hello.teaos.cn", dns.TypeA},
{"edgecdn.teaos.cn", dns.TypeA},
} {
m := new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
m.SetTsig("teaos.", dns.HmacSHA512, 300, time.Now().Unix())
r, _, err := c.Exchange(m, "127.0.0.1:53")
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
for _, a := range r.Answer {
t.Log(a)
}
}
}
func TestDNS_Query_A_Route(t *testing.T) {
type query struct {
Domain string
Type uint16
}
c := new(dns.Client)
for _, query := range []query{
{"route.com", dns.TypeA},
} {
m := new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
r, _, err := c.Exchange(m, "127.0.0.1:53")
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
for _, a := range r.Answer {
t.Log(a)
}
}
}
func TestDNS_Query_Recursion(t *testing.T) {
type query struct {
Domain string
Type uint16
}
c := new(dns.Client)
for _, query := range []query{
{"example.org", dns.TypeA},
} {
m := new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
r, _, err := c.Exchange(m, "127.0.0.1:53")
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
for _, a := range r.Answer {
t.Log(a)
}
}
}
func TestDNS_Flood(t *testing.T) {
type query struct {
Domain string
Type uint16
}
var c = new(dns.Client)
for i := 0; i < 1_000_000; i++ {
for _, query := range []query{
{"hello.world.teaos.cn", dns.TypeA},
{"cdn.teaos.cn", dns.TypeA},
{"hello.teaos.cn", dns.TypeCNAME},
{"hello.teaos.cn", dns.TypeA},
{"edgecdn.teaos.cn", dns.TypeA},
} {
var m = new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
r, _, err := c.Exchange(m, "192.168.2.60:58")
if err != nil {
t.Fatalf("failed to exchange: %v", err)
}
_ = r
}
}
}
func BenchmarkDNSNode(b *testing.B) {
var c = new(dns.Client)
conn, err := c.Dial("192.168.2.60:58")
if err != nil {
b.Fatal(err)
}
b.ResetTimer()
type query struct {
Domain string
Type uint16
}
for i := 0; i < b.N; i++ {
for _, query := range []query{
{"cdn.teaos.cn", dns.TypeA},
} {
var m = new(dns.Msg)
m.SetQuestion(query.Domain+".", query.Type)
_, _, err := c.ExchangeWithConn(m, conn)
if err != nil {
b.Fatal(err)
}
}
}
}