Files
moby/daemon/libnetwork/agent_test.go
Sebastiaan van Stijn cf15d5bbc6 remove obsolete //go:build tags
These are no longer needed as these are now part of a module.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-08-01 00:49:22 +02:00

91 lines
2.7 KiB
Go

package libnetwork
import (
"net/netip"
"slices"
"testing"
"gotest.tools/v3/assert"
)
func TestEndpointEvent_EquivalentTo(t *testing.T) {
assert.Check(t, (&endpointEvent{}).EquivalentTo(&endpointEvent{}))
a := endpointEvent{
EndpointRecord: EndpointRecord{
Name: "foo",
ServiceName: "bar",
ServiceID: "baz",
IngressPorts: []*PortConfig{
{
Protocol: ProtocolTCP,
TargetPort: 80,
},
{
Name: "dns",
Protocol: ProtocolUDP,
TargetPort: 5353,
PublishedPort: 53,
},
},
},
VirtualIP: netip.MustParseAddr("10.0.0.42"),
EndpointIP: netip.MustParseAddr("192.168.69.42"),
}
assert.Check(t, a.EquivalentTo(&a))
reflexiveEquiv := func(a, b *endpointEvent) bool {
t.Helper()
assert.Check(t, a.EquivalentTo(b) == b.EquivalentTo(a), "reflexive equivalence")
return a.EquivalentTo(b)
}
b := a
b.ServiceDisabled = true
assert.Check(t, !reflexiveEquiv(&a, &b), "differing by ServiceDisabled")
c := a
c.IngressPorts = slices.Clone(a.IngressPorts)
slices.Reverse(c.IngressPorts)
assert.Check(t, reflexiveEquiv(&a, &c), "IngressPorts order should not matter")
d := a
d.IngressPorts = append(d.IngressPorts, a.IngressPorts[0])
assert.Check(t, !reflexiveEquiv(&a, &d), "Differing number of copies of IngressPort entries should not be equivalent")
d.IngressPorts = a.IngressPorts[:1]
assert.Check(t, !reflexiveEquiv(&a, &d), "Removing an IngressPort entry should not be equivalent")
e := a
e.Aliases = []string{"alias1", "alias2"}
assert.Check(t, !reflexiveEquiv(&a, &e), "Differing Aliases should not be equivalent")
f := a
f.TaskAliases = []string{"taskalias1", "taskalias2"}
assert.Check(t, !reflexiveEquiv(&a, &f), "Adding TaskAliases should not be equivalent")
g := a
g.TaskAliases = []string{"taskalias2", "taskalias1"}
assert.Check(t, reflexiveEquiv(&f, &g), "TaskAliases order should not matter")
g.TaskAliases = g.TaskAliases[:1]
assert.Check(t, !reflexiveEquiv(&f, &g), "Differing number of TaskAliases should not be equivalent")
h := a
h.EndpointIP = netip.MustParseAddr("192.168.69.43")
assert.Check(t, !reflexiveEquiv(&a, &h), "Differing EndpointIP should not be equivalent")
i := a
i.VirtualIP = netip.MustParseAddr("10.0.0.69")
assert.Check(t, !reflexiveEquiv(&a, &i), "Differing VirtualIP should not be equivalent")
j := a
j.ServiceID = "qux"
assert.Check(t, !reflexiveEquiv(&a, &j), "Differing ServiceID should not be equivalent")
k := a
k.ServiceName = "quux"
assert.Check(t, !reflexiveEquiv(&a, &k), "Differing ServiceName should not be equivalent")
l := a
l.Name = "aaaaa"
assert.Check(t, !reflexiveEquiv(&a, &l), "Differing Name should not be equivalent")
}