mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-03 18:53:13 -05:00 
			
		
		
		
	* Rename middleware to plugin first pass; mostly used 'sed', few spots where I manually changed text. This still builds a coredns binary. * fmt error * Rename AddMiddleware to AddPlugin * Readd AddMiddleware to remain backwards compat
		
			
				
	
	
		
			95 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package out
 | 
						|
 | 
						|
import (
 | 
						|
	"net"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	fs "github.com/farsightsec/golang-framestream"
 | 
						|
)
 | 
						|
 | 
						|
func acceptOne(t *testing.T, l net.Listener) {
 | 
						|
	server, err := l.Accept()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("server accept: %s", err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	dec, err := fs.NewDecoder(server, &fs.DecoderOptions{
 | 
						|
		ContentType:   []byte("protobuf:dnstap.Dnstap"),
 | 
						|
		Bidirectional: true,
 | 
						|
	})
 | 
						|
	if err != nil {
 | 
						|
		t.Fatalf("server decoder: %s", err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	if _, err := dec.Decode(); err != nil {
 | 
						|
		t.Errorf("server decode: %s", err)
 | 
						|
	}
 | 
						|
 | 
						|
	if err := server.Close(); err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 | 
						|
func sendOne(socket *Socket) error {
 | 
						|
	if _, err := socket.Write([]byte("frame")); err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	if err := socket.enc.Flush(); err != nil {
 | 
						|
		// Would happen during Write in real life.
 | 
						|
		socket.conn.Close()
 | 
						|
		socket.err = err
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 | 
						|
func TestSocket(t *testing.T) {
 | 
						|
	socket, err := NewSocket("dnstap.sock")
 | 
						|
	if err == nil {
 | 
						|
		t.Fatal("new socket: not listening but no error")
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	if err := sendOne(socket); err == nil {
 | 
						|
		t.Fatal("not listening but no error")
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	l, err := net.Listen("unix", "dnstap.sock")
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	wait := make(chan bool)
 | 
						|
	go func() {
 | 
						|
		acceptOne(t, l)
 | 
						|
		wait <- true
 | 
						|
	}()
 | 
						|
 | 
						|
	if err := sendOne(socket); err != nil {
 | 
						|
		t.Fatalf("send one: %s", err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	<-wait
 | 
						|
	if err := sendOne(socket); err == nil {
 | 
						|
		panic("must fail")
 | 
						|
	}
 | 
						|
 | 
						|
	go func() {
 | 
						|
		acceptOne(t, l)
 | 
						|
		wait <- true
 | 
						|
	}()
 | 
						|
 | 
						|
	if err := sendOne(socket); err != nil {
 | 
						|
		t.Fatalf("send one: %s", err)
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	<-wait
 | 
						|
	if err := l.Close(); err != nil {
 | 
						|
		t.Error(err)
 | 
						|
	}
 | 
						|
}
 |