mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-07 08:44:07 +01:00
fix meta is equal check
This commit is contained in:
parent
355681e757
commit
841c3c6b75
@ -4,6 +4,7 @@ import (
|
|||||||
"net"
|
"net"
|
||||||
"net/netip"
|
"net/netip"
|
||||||
"slices"
|
"slices"
|
||||||
|
"sort"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -107,6 +108,14 @@ type PeerSystemMeta struct { //nolint:revive
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p PeerSystemMeta) isEqual(other PeerSystemMeta) bool {
|
func (p PeerSystemMeta) isEqual(other PeerSystemMeta) bool {
|
||||||
|
sort.Slice(p.NetworkAddresses, func(i, j int) bool {
|
||||||
|
return p.NetworkAddresses[i].Mac < p.NetworkAddresses[j].Mac
|
||||||
|
})
|
||||||
|
|
||||||
|
sort.Slice(other.NetworkAddresses, func(i, j int) bool {
|
||||||
|
return other.NetworkAddresses[i].Mac < other.NetworkAddresses[j].Mac
|
||||||
|
})
|
||||||
|
|
||||||
equalNetworkAddresses := slices.EqualFunc(p.NetworkAddresses, other.NetworkAddresses, func(addr NetworkAddress, oAddr NetworkAddress) bool {
|
equalNetworkAddresses := slices.EqualFunc(p.NetworkAddresses, other.NetworkAddresses, func(addr NetworkAddress, oAddr NetworkAddress) bool {
|
||||||
return addr.Mac == oAddr.Mac && addr.NetIP == oAddr.NetIP
|
return addr.Mac == oAddr.Mac && addr.NetIP == oAddr.NetIP
|
||||||
})
|
})
|
||||||
@ -114,6 +123,14 @@ func (p PeerSystemMeta) isEqual(other PeerSystemMeta) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sort.Slice(p.Files, func(i, j int) bool {
|
||||||
|
return p.Files[i].Path < p.Files[j].Path
|
||||||
|
})
|
||||||
|
|
||||||
|
sort.Slice(other.Files, func(i, j int) bool {
|
||||||
|
return other.Files[i].Path < other.Files[j].Path
|
||||||
|
})
|
||||||
|
|
||||||
equalFiles := slices.EqualFunc(p.Files, other.Files, func(file File, oFile File) bool {
|
equalFiles := slices.EqualFunc(p.Files, other.Files, func(file File, oFile File) bool {
|
||||||
return file.Path == oFile.Path && file.Exist == oFile.Exist && file.ProcessIsRunning == oFile.ProcessIsRunning
|
return file.Path == oFile.Path && file.Exist == oFile.Exist && file.ProcessIsRunning == oFile.ProcessIsRunning
|
||||||
})
|
})
|
||||||
|
@ -2,6 +2,7 @@ package peer
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/netip"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -29,3 +30,59 @@ func BenchmarkFQDN(b *testing.B) {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestIsEqual(t *testing.T) {
|
||||||
|
|
||||||
|
meta1 := PeerSystemMeta{
|
||||||
|
NetworkAddresses: []NetworkAddress{{
|
||||||
|
NetIP: netip.MustParsePrefix("192.168.1.2/24"),
|
||||||
|
Mac: "2",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NetIP: netip.MustParsePrefix("192.168.1.0/24"),
|
||||||
|
Mac: "1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Files: []File{
|
||||||
|
{
|
||||||
|
Path: "/etc/hosts1",
|
||||||
|
Exist: true,
|
||||||
|
ProcessIsRunning: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Path: "/etc/hosts2",
|
||||||
|
Exist: false,
|
||||||
|
ProcessIsRunning: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
meta2 := PeerSystemMeta{
|
||||||
|
NetworkAddresses: []NetworkAddress{
|
||||||
|
{
|
||||||
|
NetIP: netip.MustParsePrefix("192.168.1.0/24"),
|
||||||
|
Mac: "1",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
NetIP: netip.MustParsePrefix("192.168.1.2/24"),
|
||||||
|
Mac: "2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Files: []File{
|
||||||
|
{
|
||||||
|
Path: "/etc/hosts2",
|
||||||
|
Exist: false,
|
||||||
|
ProcessIsRunning: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Path: "/etc/hosts1",
|
||||||
|
Exist: true,
|
||||||
|
ProcessIsRunning: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
if !meta1.isEqual(meta2) {
|
||||||
|
t.Error("meta1 should be equal to meta2")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user