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  }