session_test.go 934 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package yamux
  2. import (
  3. "io"
  4. "testing"
  5. )
  6. type pipeConn struct {
  7. reader *io.PipeReader
  8. writer *io.PipeWriter
  9. }
  10. func (p *pipeConn) Read(b []byte) (int, error) {
  11. return p.reader.Read(b)
  12. }
  13. func (p *pipeConn) Write(b []byte) (int, error) {
  14. return p.writer.Write(b)
  15. }
  16. func (p *pipeConn) Close() error {
  17. p.reader.Close()
  18. return p.writer.Close()
  19. }
  20. func testConn() (io.ReadWriteCloser, io.ReadWriteCloser) {
  21. read1, write1 := io.Pipe()
  22. read2, write2 := io.Pipe()
  23. return &pipeConn{read1, write2}, &pipeConn{read2, write1}
  24. }
  25. func TestPing(t *testing.T) {
  26. conn1, conn2 := testConn()
  27. client := Client(conn1, nil)
  28. defer client.Close()
  29. server := Server(conn2, nil)
  30. defer server.Close()
  31. rtt, err := client.Ping()
  32. if err != nil {
  33. t.Fatalf("err: %v", err)
  34. }
  35. if rtt == 0 {
  36. t.Fatalf("bad: %v", rtt)
  37. }
  38. rtt, err = server.Ping()
  39. if err != nil {
  40. t.Fatalf("err: %v", err)
  41. }
  42. if rtt == 0 {
  43. t.Fatalf("bad: %v", rtt)
  44. }
  45. }