github.com/jmigpin/editor@v1.6.0/core/godebug/debug/server_test.go (about)

     1  package debug
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  	"io"
     7  	"net"
     8  	"sync"
     9  	"testing"
    10  	"time"
    11  )
    12  
    13  func init() {
    14  	//logger = log.New(os.Stdout, "debug: ", 0)
    15  	hasGenConfig = true
    16  	ServerNetwork = "tcp"
    17  	ServerAddress = "127.0.0.1:10002"
    18  	acceptOnlyFirstClient = true
    19  
    20  	// manually register to run tests
    21  	RegisterStructsForEncodeDecode(encoderId)
    22  }
    23  
    24  func TestServer1(t *testing.T) {
    25  	clientWait := &sync.WaitGroup{}
    26  	clientWait.Add(1)
    27  	go func() {
    28  		defer clientWait.Done()
    29  
    30  		time.Sleep(500 * time.Millisecond)
    31  		c, err := newTestClient()
    32  		if err != nil {
    33  			t.Fatal(err)
    34  		}
    35  
    36  		msg := &ReqStartMsg{}
    37  		b, err := EncodeMessage(msg)
    38  		if err != nil {
    39  			t.Fatal(err)
    40  		}
    41  		c.conn.Write(b)
    42  
    43  		c.receiveLoop()
    44  		//go c.receiveLoop()
    45  		//c.conn.Close()
    46  	}()
    47  
    48  	srv, err := NewServer()
    49  	if err != nil {
    50  		t.Fatal(err)
    51  	}
    52  
    53  	srv.Close()
    54  
    55  	clientWait.Wait()
    56  }
    57  
    58  //----------
    59  
    60  type testClient struct {
    61  	conn net.Conn
    62  }
    63  
    64  func newTestClient() (*testClient, error) {
    65  	dialer := &net.Dialer{}
    66  	conn, err := dialer.Dial(ServerNetwork, ServerAddress)
    67  	if err != nil {
    68  		return nil, err
    69  	}
    70  	c := &testClient{conn: conn}
    71  	return c, nil
    72  }
    73  func (c *testClient) receiveLoop() {
    74  	for {
    75  		msg, err := DecodeMessage(c.conn)
    76  		if err != nil {
    77  			if !errors.Is(err, io.EOF) {
    78  				fmt.Printf("decode error: %v\n", err)
    79  			}
    80  			return
    81  		}
    82  		fmt.Printf("msg: %#v\n", msg)
    83  	}
    84  }