github.com/tickoalcantara12/micro/v3@v3.0.0-20221007104245-9d75b9bcbab9/service/network/transport/memory/memory_test.go (about) 1 // Licensed under the Apache License, Version 2.0 (the "License"); 2 // you may not use this file except in compliance with the License. 3 // You may obtain a copy of the License at 4 // 5 // https://www.apache.org/licenses/LICENSE-2.0 6 // 7 // Unless required by applicable law or agreed to in writing, software 8 // distributed under the License is distributed on an "AS IS" BASIS, 9 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10 // See the License for the specific language governing permissions and 11 // limitations under the License. 12 // 13 // Original source: github.com/micro/go-micro/v3/network/transport/memory/memory_test.go 14 15 package memory 16 17 import ( 18 "os" 19 "testing" 20 21 "github.com/tickoalcantara12/micro/v3/service/network/transport" 22 ) 23 24 func TestMemoryTransport(t *testing.T) { 25 tr := NewTransport() 26 27 // bind / listen 28 l, err := tr.Listen("127.0.0.1:8080") 29 if err != nil { 30 t.Fatalf("Unexpected error listening %v", err) 31 } 32 defer l.Close() 33 34 // accept 35 go func() { 36 if err := l.Accept(func(sock transport.Socket) { 37 for { 38 var m transport.Message 39 if err := sock.Recv(&m); err != nil { 40 return 41 } 42 if len(os.Getenv("IN_TRAVIS_CI")) == 0 { 43 t.Logf("Server Received %s", string(m.Body)) 44 } 45 if err := sock.Send(&transport.Message{ 46 Body: []byte(`pong`), 47 }); err != nil { 48 return 49 } 50 } 51 }); err != nil { 52 t.Fatalf("Unexpected error accepting %v", err) 53 } 54 }() 55 56 // dial 57 c, err := tr.Dial("127.0.0.1:8080") 58 if err != nil { 59 t.Fatalf("Unexpected error dialing %v", err) 60 } 61 defer c.Close() 62 63 // send <=> receive 64 for i := 0; i < 3; i++ { 65 if err := c.Send(&transport.Message{ 66 Body: []byte(`ping`), 67 }); err != nil { 68 return 69 } 70 var m transport.Message 71 if err := c.Recv(&m); err != nil { 72 return 73 } 74 if len(os.Getenv("IN_TRAVIS_CI")) == 0 { 75 t.Logf("Client Received %s", string(m.Body)) 76 } 77 } 78 79 } 80 81 func TestListener(t *testing.T) { 82 tr := NewTransport() 83 84 // bind / listen on random port 85 l, err := tr.Listen(":0") 86 if err != nil { 87 t.Fatalf("Unexpected error listening %v", err) 88 } 89 defer l.Close() 90 91 // try again 92 l2, err := tr.Listen(":0") 93 if err != nil { 94 t.Fatalf("Unexpected error listening %v", err) 95 } 96 defer l2.Close() 97 98 // now make sure it still fails 99 l3, err := tr.Listen(":8080") 100 if err != nil { 101 t.Fatalf("Unexpected error listening %v", err) 102 } 103 defer l3.Close() 104 105 if _, err := tr.Listen(":8080"); err == nil { 106 t.Fatal("Expected error binding to :8080 got nil") 107 } 108 }