github.com/annwntech/go-micro/v2@v2.9.5/util/mdns/server_test.go (about)

     1  package mdns
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  )
     7  
     8  func TestServer_StartStop(t *testing.T) {
     9  	s := makeService(t)
    10  	serv, err := NewServer(&Config{Zone: s, LocalhostChecking: true})
    11  	if err != nil {
    12  		t.Fatalf("err: %v", err)
    13  	}
    14  	defer serv.Shutdown()
    15  }
    16  
    17  func TestServer_Lookup(t *testing.T) {
    18  	serv, err := NewServer(&Config{Zone: makeServiceWithServiceName(t, "_foobar._tcp"), LocalhostChecking: true})
    19  	if err != nil {
    20  		t.Fatalf("err: %v", err)
    21  	}
    22  	defer serv.Shutdown()
    23  
    24  	entries := make(chan *ServiceEntry, 1)
    25  	found := false
    26  	doneCh := make(chan struct{})
    27  	go func() {
    28  		select {
    29  		case e := <-entries:
    30  			if e.Name != "hostname._foobar._tcp.local." {
    31  				t.Fatalf("bad: %v", e)
    32  			}
    33  			if e.Port != 80 {
    34  				t.Fatalf("bad: %v", e)
    35  			}
    36  			if e.Info != "Local web server" {
    37  				t.Fatalf("bad: %v", e)
    38  			}
    39  			found = true
    40  
    41  		case <-time.After(80 * time.Millisecond):
    42  			t.Fatalf("timeout")
    43  		}
    44  		close(doneCh)
    45  	}()
    46  
    47  	params := &QueryParam{
    48  		Service: "_foobar._tcp",
    49  		Domain:  "local",
    50  		Timeout: 50 * time.Millisecond,
    51  		Entries: entries,
    52  	}
    53  	err = Query(params)
    54  	if err != nil {
    55  		t.Fatalf("err: %v", err)
    56  	}
    57  	<-doneCh
    58  	if !found {
    59  		t.Fatalf("record not found")
    60  	}
    61  }