You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
882 B
45 lines
882 B
package deliver |
|
|
|
import ( |
|
"bytes" |
|
"encoding/binary" |
|
"io" |
|
"net" |
|
"testing" |
|
"time" |
|
) |
|
|
|
func TestDeliver(t *testing.T) { |
|
buf := &bytes.Buffer{} |
|
lis, err := net.Listen("tcp", "127.0.0.1:12233") |
|
if err != nil { |
|
t.Fatal(err) |
|
} |
|
go func() { |
|
conn, err := lis.Accept() |
|
if err != nil { |
|
t.Fatal(err) |
|
} |
|
io.Copy(buf, conn) |
|
}() |
|
data := []byte("hello world") |
|
readed := make(chan bool, 1) |
|
d, err := New([]string{"127.0.0.1:12233"}, func() ([]byte, error) { |
|
readed <- true |
|
return data, nil |
|
}) |
|
if err != nil { |
|
t.Fatal(err) |
|
} |
|
time.Sleep(500 * time.Millisecond) |
|
if !bytes.Equal(buf.Bytes()[0:2], _magicBuf) { |
|
t.Error("invalid data, wrong magic header") |
|
} |
|
if int(binary.BigEndian.Uint32(buf.Bytes()[2:6])) != len(data) { |
|
t.Error("wrong data length") |
|
} |
|
if !bytes.Equal(buf.Bytes()[6:], data) { |
|
t.Errorf("invalid content %s", buf.Bytes()[6:]) |
|
} |
|
d.Close() |
|
}
|
|
|