mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-03 18:53:13 -05:00 
			
		
		
		
	We don't need to network to do tests, we up enough local servers to we don't need to forward to,s say 8.8.8.8
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package test
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/miekg/dns"
 | 
						|
)
 | 
						|
 | 
						|
// Start 2 tests server, server A will proxy to B, server B is an CH server.
 | 
						|
func TestProxyToChaosServer(t *testing.T) {
 | 
						|
	corefile := `.:0 {
 | 
						|
	chaos CoreDNS-001 miek@miek.nl
 | 
						|
}
 | 
						|
`
 | 
						|
	chaos, tcpCH, udpCH, err := Server(t, corefile)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("Could get server: %s", err)
 | 
						|
	}
 | 
						|
	defer chaos.Stop()
 | 
						|
 | 
						|
	corefileProxy := `.:0 {
 | 
						|
		proxy . ` + udpCH + `
 | 
						|
}
 | 
						|
`
 | 
						|
	proxy, _, udp, err := Server(t, corefileProxy)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("Could get server: %s", err)
 | 
						|
	}
 | 
						|
	defer proxy.Stop()
 | 
						|
 | 
						|
	chaosTest(t, udpCH, "udp")
 | 
						|
	chaosTest(t, tcpCH, "tcp")
 | 
						|
 | 
						|
	chaosTest(t, udp, "udp")
 | 
						|
	// chaosTest(t, tcp, "tcp"), commented out because we use the original transport to reach the
 | 
						|
	// proxy and we only forward to the udp port.
 | 
						|
}
 | 
						|
 | 
						|
func chaosTest(t *testing.T, server, net string) {
 | 
						|
	m := Msg("version.bind.", dns.TypeTXT, nil)
 | 
						|
	m.Question[0].Qclass = dns.ClassCHAOS
 | 
						|
 | 
						|
	r, err := Exchange(m, server, net)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("Could not send message: %s", err)
 | 
						|
	}
 | 
						|
	if r.Rcode != dns.RcodeSuccess || len(r.Answer) == 0 {
 | 
						|
		t.Fatalf("Expected successful reply on %s, got %s", net, dns.RcodeToString[r.Rcode])
 | 
						|
	}
 | 
						|
	if r.Answer[0].String() != `version.bind.	0	CH	TXT	"CoreDNS-001"` {
 | 
						|
		t.Fatalf("Expected version.bind. reply, got %s", r.Answer[0].String())
 | 
						|
	}
 | 
						|
}
 |