gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/transport/memory/memory_test.go (about)

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