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 }