gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/registry/mdns_test.go (about) 1 package registry 2 3 import ( 4 "os" 5 "testing" 6 "time" 7 ) 8 9 func TestMDNS(t *testing.T) { 10 testData := []*Service{ 11 { 12 Name: "test1", 13 Version: "1.0.1", 14 Nodes: []*Node{ 15 { 16 Id: "test1-1", 17 Address: "10.0.0.1:10001", 18 Metadata: map[string]string{ 19 "foo": "bar", 20 }, 21 }, 22 }, 23 }, 24 { 25 Name: "test2", 26 Version: "1.0.2", 27 Nodes: []*Node{ 28 { 29 Id: "test2-1", 30 Address: "10.0.0.2:10002", 31 Metadata: map[string]string{ 32 "foo2": "bar2", 33 }, 34 }, 35 }, 36 }, 37 { 38 Name: "test3", 39 Version: "1.0.3", 40 Nodes: []*Node{ 41 { 42 Id: "test3-1", 43 Address: "10.0.0.3:10003", 44 Metadata: map[string]string{ 45 "foo3": "bar3", 46 }, 47 }, 48 }, 49 }, 50 } 51 52 travis := os.Getenv("TRAVIS") 53 54 var opts []Option 55 56 if travis == "true" { 57 opts = append(opts, Timeout(time.Millisecond*100)) 58 } 59 60 // new registry 61 r := NewRegistry(opts...) 62 63 for _, service := range testData { 64 // register service 65 if err := r.Register(service); err != nil { 66 t.Fatal(err) 67 } 68 69 // get registered service 70 s, err := r.GetService(service.Name) 71 if err != nil { 72 t.Fatal(err) 73 } 74 75 if len(s) != 1 { 76 t.Fatalf("Expected one result for %s got %d", service.Name, len(s)) 77 78 } 79 80 if s[0].Name != service.Name { 81 t.Fatalf("Expected name %s got %s", service.Name, s[0].Name) 82 } 83 84 if s[0].Version != service.Version { 85 t.Fatalf("Expected version %s got %s", service.Version, s[0].Version) 86 } 87 88 if len(s[0].Nodes) != 1 { 89 t.Fatalf("Expected 1 node, got %d", len(s[0].Nodes)) 90 } 91 92 node := s[0].Nodes[0] 93 94 if node.Id != service.Nodes[0].Id { 95 t.Fatalf("Expected node id %s got %s", service.Nodes[0].Id, node.Id) 96 } 97 98 if node.Address != service.Nodes[0].Address { 99 t.Fatalf("Expected node address %s got %s", service.Nodes[0].Address, node.Address) 100 } 101 } 102 103 services, err := r.ListServices() 104 if err != nil { 105 t.Fatal(err) 106 } 107 108 for _, service := range testData { 109 var seen bool 110 for _, s := range services { 111 if s.Name == service.Name { 112 seen = true 113 break 114 } 115 } 116 if !seen { 117 t.Fatalf("Expected service %s got nothing", service.Name) 118 } 119 120 // deregister 121 if err := r.Deregister(service); err != nil { 122 t.Fatal(err) 123 } 124 125 time.Sleep(time.Millisecond * 5) 126 127 // check its gone 128 s, _ := r.GetService(service.Name) 129 if len(s) > 0 { 130 t.Fatalf("Expected nothing got %+v", s[0]) 131 } 132 } 133 134 }