github.com/zhuohuang-hust/src-cbuild@v0.0.0-20230105071821-c7aab3e7c840/mergeCode/libnetwork/hostdiscovery/hostdiscovery_test.go (about) 1 package hostdiscovery 2 3 import ( 4 "net" 5 "testing" 6 7 mapset "github.com/deckarep/golang-set" 8 _ "github.com/docker/libnetwork/testutils" 9 10 "github.com/docker/docker/pkg/discovery" 11 ) 12 13 func TestDiff(t *testing.T) { 14 existing := mapset.NewSetFromSlice([]interface{}{"1.1.1.1", "2.2.2.2"}) 15 addedIP := "3.3.3.3" 16 updated := existing.Clone() 17 updated.Add(addedIP) 18 19 added, removed := diff(existing, updated) 20 if len(added) != 1 { 21 t.Fatalf("Diff failed for an Add update. Expecting 1 element, but got %d elements", len(added)) 22 } 23 if added[0].String() != addedIP { 24 t.Fatalf("Expecting : %v, Got : %v", addedIP, added[0]) 25 } 26 if len(removed) > 0 { 27 t.Fatalf("Diff failed for remove use-case. Expecting 0 element, but got %d elements", len(removed)) 28 } 29 30 updated = mapset.NewSetFromSlice([]interface{}{addedIP}) 31 added, removed = diff(existing, updated) 32 if len(removed) != 2 { 33 t.Fatalf("Diff failed for a remove update. Expecting 2 element, but got %d elements", len(removed)) 34 } 35 if len(added) != 1 { 36 t.Fatalf("Diff failed for add use-case. Expecting 1 element, but got %d elements", len(added)) 37 } 38 } 39 40 func TestAddedCallback(t *testing.T) { 41 hd := hostDiscovery{} 42 hd.nodes = mapset.NewSetFromSlice([]interface{}{"1.1.1.1"}) 43 update := []*discovery.Entry{{Host: "1.1.1.1", Port: "0"}, {Host: "2.2.2.2", Port: "0"}} 44 45 added := false 46 removed := false 47 hd.processCallback(update, func() {}, func(hosts []net.IP) { added = true }, func(hosts []net.IP) { removed = true }) 48 if !added { 49 t.Fatalf("Expecting an Added callback notification. But none received") 50 } 51 } 52 53 func TestRemovedCallback(t *testing.T) { 54 hd := hostDiscovery{} 55 hd.nodes = mapset.NewSetFromSlice([]interface{}{"1.1.1.1", "2.2.2.2"}) 56 update := []*discovery.Entry{{Host: "1.1.1.1", Port: "0"}} 57 58 added := false 59 removed := false 60 hd.processCallback(update, func() {}, func(hosts []net.IP) { added = true }, func(hosts []net.IP) { removed = true }) 61 if !removed { 62 t.Fatalf("Expecting a Removed callback notification. But none received") 63 } 64 } 65 66 func TestNoCallback(t *testing.T) { 67 hd := hostDiscovery{} 68 hd.nodes = mapset.NewSetFromSlice([]interface{}{"1.1.1.1", "2.2.2.2"}) 69 update := []*discovery.Entry{{Host: "1.1.1.1", Port: "0"}, {Host: "2.2.2.2", Port: "0"}} 70 71 added := false 72 removed := false 73 hd.processCallback(update, func() {}, func(hosts []net.IP) { added = true }, func(hosts []net.IP) { removed = true }) 74 if added || removed { 75 t.Fatalf("Not expecting any callback notification. But received a callback") 76 } 77 }