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  }