coredns/middleware/dnstap/out/tcp_test.go
Yong Tang 4b14243e9b Add k8s tags to related tests (#1018)
, so that `make test` will pass by default.

Also fixed several ineffassign and golint issues.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
2017-09-01 19:21:05 +02:00

66 lines
1 KiB
Go

package out
import (
"net"
"testing"
)
func sendOneTCP(tcp *TCP) error {
if _, err := tcp.Write([]byte("frame")); err != nil {
return err
}
if err := tcp.Flush(); err != nil {
return err
}
return nil
}
func TestTCP(t *testing.T) {
tcp := NewTCP("localhost:14000")
if err := sendOneTCP(tcp); err == nil {
t.Fatal("Not listening but no error.")
return
}
l, err := net.Listen("tcp", "localhost:14000")
if err != nil {
t.Fatal(err)
return
}
wait := make(chan bool)
go func() {
acceptOne(t, l)
wait <- true
}()
if err := sendOneTCP(tcp); err != nil {
t.Fatalf("send one: %s", err)
return
}
<-wait
// TODO: When the server isn't responding according to the framestream protocol
// the thread is blocked.
/*
if err := sendOneTCP(tcp); err == nil {
panic("must fail")
}
*/
go func() {
acceptOne(t, l)
wait <- true
}()
if err := sendOneTCP(tcp); err != nil {
t.Fatalf("send one: %s", err)
return
}
<-wait
if err := l.Close(); err != nil {
t.Error(err)
}
}