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