github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/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.Fatal("Expecting an Added callback notification. But none received") 50 } 51 if removed { 52 t.Fatal("Not expecting a Removed callback notification. But received a callback") 53 } 54 } 55 56 func TestRemovedCallback(t *testing.T) { 57 hd := hostDiscovery{} 58 hd.nodes = mapset.NewSetFromSlice([]interface{}{"1.1.1.1", "2.2.2.2"}) 59 update := []*discovery.Entry{{Host: "1.1.1.1", Port: "0"}} 60 61 added := false 62 removed := false 63 hd.processCallback(update, func() {}, func(hosts []net.IP) { added = true }, func(hosts []net.IP) { removed = true }) 64 if added { 65 t.Fatal("Not expecting an Added callback notification. But received a callback") 66 } 67 if !removed { 68 t.Fatal("Expecting a Removed callback notification. But none received") 69 } 70 } 71 72 func TestNoCallback(t *testing.T) { 73 hd := hostDiscovery{} 74 hd.nodes = mapset.NewSetFromSlice([]interface{}{"1.1.1.1", "2.2.2.2"}) 75 update := []*discovery.Entry{{Host: "1.1.1.1", Port: "0"}, {Host: "2.2.2.2", Port: "0"}} 76 77 added := false 78 removed := false 79 hd.processCallback(update, func() {}, func(hosts []net.IP) { added = true }, func(hosts []net.IP) { removed = true }) 80 if added || removed { 81 t.Fatal("Not expecting any callback notification. But received a callback") 82 } 83 }