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  }