gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/transport/memory/memory_test.go (about) 1 package memory 2 3 import ( 4 "testing" 5 6 "gitee.com/liuxuezhan/go-micro-v1.18.0/transport" 7 ) 8 9 func TestMemoryTransport(t *testing.T) { 10 tr := NewTransport() 11 12 // bind / listen 13 l, err := tr.Listen("127.0.0.1:8080") 14 if err != nil { 15 t.Fatalf("Unexpected error listening %v", err) 16 } 17 defer l.Close() 18 19 // accept 20 go func() { 21 if err := l.Accept(func(sock transport.Socket) { 22 for { 23 var m transport.Message 24 if err := sock.Recv(&m); err != nil { 25 return 26 } 27 t.Logf("Server Received %s", string(m.Body)) 28 if err := sock.Send(&transport.Message{ 29 Body: []byte(`pong`), 30 }); err != nil { 31 return 32 } 33 } 34 }); err != nil { 35 t.Fatalf("Unexpected error accepting %v", err) 36 } 37 }() 38 39 // dial 40 c, err := tr.Dial("127.0.0.1:8080") 41 if err != nil { 42 t.Fatalf("Unexpected error dialing %v", err) 43 } 44 defer c.Close() 45 46 // send <=> receive 47 for i := 0; i < 3; i++ { 48 if err := c.Send(&transport.Message{ 49 Body: []byte(`ping`), 50 }); err != nil { 51 return 52 } 53 var m transport.Message 54 if err := c.Recv(&m); err != nil { 55 return 56 } 57 t.Logf("Client Received %s", string(m.Body)) 58 } 59 60 } 61 62 func TestListener(t *testing.T) { 63 tr := NewTransport() 64 65 // bind / listen on random port 66 l, err := tr.Listen(":0") 67 if err != nil { 68 t.Fatalf("Unexpected error listening %v", err) 69 } 70 defer l.Close() 71 72 // try again 73 l2, err := tr.Listen(":0") 74 if err != nil { 75 t.Fatalf("Unexpected error listening %v", err) 76 } 77 defer l2.Close() 78 79 // now make sure it still fails 80 l3, err := tr.Listen(":8080") 81 if err != nil { 82 t.Fatalf("Unexpected error listening %v", err) 83 } 84 defer l3.Close() 85 86 if _, err := tr.Listen(":8080"); err == nil { 87 t.Fatal("Expected error binding to :8080 got nil") 88 } 89 }