There's a cyclic dependency on siderolink library which imports talos machinery back. We will fix that after we get talos pushed under a new name. Signed-off-by: Andrey Smirnov <andrey.smirnov@talos-systems.com>
142 lines
3.5 KiB
Go
142 lines
3.5 KiB
Go
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
package cluster_test
|
|
|
|
import (
|
|
"net/netip"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/siderolabs/talos/pkg/cluster"
|
|
)
|
|
|
|
func TestAssertNodes(t *testing.T) {
|
|
for _, tt := range []struct {
|
|
name string
|
|
expectedNodes []cluster.NodeInfo
|
|
actualNodes []cluster.NodeInfo
|
|
|
|
expectedError string
|
|
}{
|
|
{
|
|
name: "aws+discovery",
|
|
expectedNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("1.2.3.4"), netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("5.6.7.8"), netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
},
|
|
actualNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("5.6.7.8"), netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("1.2.3.4"), netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "aws+private",
|
|
expectedNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
},
|
|
actualNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("5.6.7.8"), netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("1.2.3.4"), netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "more internal IPs",
|
|
expectedNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("ff::1"), netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("ff::2"), netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
},
|
|
actualNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "extra node expected",
|
|
expectedNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.4")},
|
|
},
|
|
},
|
|
actualNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("1.2.3.4"), netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("5.6.7.8"), netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
},
|
|
expectedError: `can't find expected node with IPs ["172.23.1.4"]`,
|
|
},
|
|
{
|
|
name: "extra node actual",
|
|
expectedNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
},
|
|
actualNodes: []cluster.NodeInfo{
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("1.2.3.4"), netip.MustParseAddr("172.23.1.2")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("5.6.7.8"), netip.MustParseAddr("172.23.1.3")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.4")},
|
|
},
|
|
{
|
|
IPs: []netip.Addr{netip.MustParseAddr("172.23.1.5"), netip.MustParseAddr("9.10.11.12")},
|
|
},
|
|
},
|
|
expectedError: "unexpected nodes with IPs [\"9.10.11.12\" \"172.23.1.4\" \"172.23.1.5\"]",
|
|
},
|
|
} {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err := cluster.NodesMatch(tt.expectedNodes, tt.actualNodes)
|
|
|
|
if tt.expectedError == "" {
|
|
assert.NoError(t, err)
|
|
} else {
|
|
assert.EqualError(t, err, tt.expectedError)
|
|
}
|
|
})
|
|
}
|
|
}
|