MCPcopy
hub / github.com/rook/rook / Test_discoverAddressRanges

Function Test_discoverAddressRanges

pkg/operator/ceph/controller/network_test.go:82–357  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

80}
81
82func Test_discoverAddressRanges(t *testing.T) {
83 oldNewCmdReporter := newCmdReporter
84 defer func() { newCmdReporter = oldNewCmdReporter }()
85 t.Run("public network selected", func(t *testing.T) {
86 clusterdCtx, clusterSpec, clusterInfo := newTestConfigsWithNetworkSpec(
87 cephv1.NetworkSpec{
88 Provider: cephv1.NetworkProviderMultus,
89 Selectors: map[cephv1.CephNetworkType]string{
90 cephv1.CephNetworkPublic: "macvlan-public",
91 },
92 AddressRanges: nil, // should auto-detect
93 })
94
95 t.Run("discover public cidrs", func(t *testing.T) {
96 cmdReporter := new(mockCmdReporter)
97 cmdReporter.On("Job")
98 goodOutput := netStatus("public", "2000::1") +
99 "\n" + separator() + "\n" +
100 ipAddrOutput("public", "2000::1/112")
101 cmdReporter.On("Run", mock.Anything, mock.Anything).Return(goodOutput, "", 0, nil)
102 newCmdReporter = mockNewCmdReporter(cmdReporter, nil)
103
104 ranges, err := discoverAddressRanges(context.Background(), "rook/ceph:master", clusterdCtx, clusterSpec, clusterInfo, cephv1.CephNetworkPublic)
105 assert.NoError(t, err)
106 assert.Equal(t, []string{"2000::/112"}, ranges)
107 })
108 t.Run("discover cluster cidrs", func(t *testing.T) {
109 cmdReporter := new(mockCmdReporter)
110 // no cmd reporter methods should be called b/c cluster net is not selected
111 newCmdReporter = mockNewCmdReporter(cmdReporter, nil)
112
113 ranges, err := discoverAddressRanges(context.Background(), "rook/ceph:master", clusterdCtx, clusterSpec, clusterInfo, cephv1.CephNetworkCluster)
114 assert.NoError(t, err)
115 assert.Equal(t, []string{}, ranges)
116 })
117 t.Run("public ip mismatch", func(t *testing.T) {
118 cmdReporter := new(mockCmdReporter)
119 cmdReporter.On("Job")
120 goodOutput := netStatus("public", "192.168.1.1") +
121 "\n" + separator() + "\n" +
122 ipAddrOutput("public", "192.168.1.2/24") // IP is one more than above
123 cmdReporter.On("Run", mock.Anything, mock.Anything).Return(goodOutput, "", 0, nil)
124 newCmdReporter = mockNewCmdReporter(cmdReporter, nil)
125
126 ranges, err := discoverAddressRanges(context.Background(), "rook/ceph:master", clusterdCtx, clusterSpec, clusterInfo, cephv1.CephNetworkPublic)
127 assert.Error(t, err)
128 assert.Equal(t, []string{}, ranges)
129 })
130 t.Run("public ip iface mismatch", func(t *testing.T) {
131 cmdReporter := new(mockCmdReporter)
132 cmdReporter.On("Job")
133 goodOutput := netStatus("public", "192.168.1.1") +
134 "\n" + separator() + "\n" +
135 ipAddrOutput("cluster", "192.168.1.1/24") // cluster != public above
136 cmdReporter.On("Run", mock.Anything, mock.Anything).Return(goodOutput, "", 0, nil)
137 newCmdReporter = mockNewCmdReporter(cmdReporter, nil)
138
139 ranges, err := discoverAddressRanges(context.Background(), "rook/ceph:master", clusterdCtx, clusterSpec, clusterInfo, cephv1.CephNetworkPublic)

Callers

nothing calls this directly

Calls 10

netStatusFunction · 0.85
separatorFunction · 0.85
ipAddrOutputFunction · 0.85
mockNewCmdReporterFunction · 0.85
discoverAddressRangesFunction · 0.85
EqualMethod · 0.80
ErrorMethod · 0.80
RunMethod · 0.65
JobMethod · 0.65

Tested by

no test coverage detected