deliver_test.go 882 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package deliver
  2. import (
  3. "bytes"
  4. "encoding/binary"
  5. "io"
  6. "net"
  7. "testing"
  8. "time"
  9. )
  10. func TestDeliver(t *testing.T) {
  11. buf := &bytes.Buffer{}
  12. lis, err := net.Listen("tcp", "127.0.0.1:12233")
  13. if err != nil {
  14. t.Fatal(err)
  15. }
  16. go func() {
  17. conn, err := lis.Accept()
  18. if err != nil {
  19. t.Fatal(err)
  20. }
  21. io.Copy(buf, conn)
  22. }()
  23. data := []byte("hello world")
  24. readed := make(chan bool, 1)
  25. d, err := New([]string{"127.0.0.1:12233"}, func() ([]byte, error) {
  26. readed <- true
  27. return data, nil
  28. })
  29. if err != nil {
  30. t.Fatal(err)
  31. }
  32. time.Sleep(500 * time.Millisecond)
  33. if !bytes.Equal(buf.Bytes()[0:2], _magicBuf) {
  34. t.Error("invalid data, wrong magic header")
  35. }
  36. if int(binary.BigEndian.Uint32(buf.Bytes()[2:6])) != len(data) {
  37. t.Error("wrong data length")
  38. }
  39. if !bytes.Equal(buf.Bytes()[6:], data) {
  40. t.Errorf("invalid content %s", buf.Bytes()[6:])
  41. }
  42. d.Close()
  43. }