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