gitee.com/sasukebo/go-micro/v4@v4.7.1/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  
    65  func TestListener(t *testing.T) {
    66  	tr := NewMemoryTransport()
    67  
    68  	// bind / listen on random port
    69  	l, err := tr.Listen(":0")
    70  	if err != nil {
    71  		t.Fatalf("Unexpected error listening %v", err)
    72  	}
    73  	defer l.Close()
    74  
    75  	// try again
    76  	l2, err := tr.Listen(":0")
    77  	if err != nil {
    78  		t.Fatalf("Unexpected error listening %v", err)
    79  	}
    80  	defer l2.Close()
    81  
    82  	// now make sure it still fails
    83  	l3, err := tr.Listen(":8080")
    84  	if err != nil {
    85  		t.Fatalf("Unexpected error listening %v", err)
    86  	}
    87  	defer l3.Close()
    88  
    89  	if _, err := tr.Listen(":8080"); err == nil {
    90  		t.Fatal("Expected error binding to :8080 got nil")
    91  	}
    92  }