MCPcopy
hub / github.com/lxc/incus / TestUpgradeMembersWithoutRole

Function TestUpgradeMembersWithoutRole

internal/server/cluster/upgrade_test.go:143–199  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

141}
142
143func TestUpgradeMembersWithoutRole(t *testing.T) {
144 s, cleanup := state.NewTestState(t)
145 defer cleanup()
146
147 serverCert := tlstest.TestingKeyPair(t)
148 mux := http.NewServeMux()
149 server := newServer(serverCert, mux)
150 defer server.Close()
151
152 address := server.Listener.Addr().String()
153 setRaftRole(t, s.DB.Node, address)
154
155 s.ServerCert = func() *localtls.CertInfo { return serverCert }
156
157 gateway := newGateway(t, s.DB.Node, serverCert, s)
158 defer func() { _ = gateway.Shutdown() }()
159
160 for path, handler := range gateway.HandlerFuncs(nil, trustedCerts) {
161 mux.HandleFunc(path, handler)
162 }
163
164 var err error
165 require.NoError(t, s.DB.Cluster.Close())
166 store := gateway.NodeStore()
167 dial := gateway.DialFunc()
168 s.DB.Cluster, err = db.OpenCluster(context.Background(), "db.bin", store, address, "/unused/db/dir", 5*time.Second, driver.WithDialFunc(dial))
169 require.NoError(t, err)
170 gateway.Cluster = s.DB.Cluster
171
172 // Add a couple of members to the database.
173 var members []db.NodeInfo
174 err = s.DB.Cluster.Transaction(context.TODO(), func(ctx context.Context, tx *db.ClusterTx) error {
175 _, err := tx.CreateNode("foo", "1.2.3.4")
176 require.NoError(t, err)
177 _, err = tx.CreateNode("bar", "5.6.7.8")
178 require.NoError(t, err)
179 members, err = tx.GetNodes(ctx)
180 require.NoError(t, err)
181 return nil
182 })
183 require.NoError(t, err)
184
185 err = cluster.UpgradeMembersWithoutRole(gateway, members)
186 require.NoError(t, err)
187
188 // The members have been added to the raft configuration.
189 nodes, err := gateway.RaftNodes()
190 require.NoError(t, err)
191
192 assert.Len(t, nodes, 3)
193 assert.Equal(t, uint64(1), nodes[0].ID)
194 assert.Equal(t, address, nodes[0].Address)
195 assert.Equal(t, uint64(2), nodes[1].ID)
196 assert.Equal(t, "1.2.3.4", nodes[1].Address)
197 assert.Equal(t, uint64(3), nodes[2].ID)
198 assert.Equal(t, "5.6.7.8", nodes[2].Address)
199}

Callers

nothing calls this directly

Calls 15

NewTestStateFunction · 0.92
TestingKeyPairFunction · 0.92
OpenClusterFunction · 0.92
setRaftRoleFunction · 0.85
newGatewayFunction · 0.85
AddrMethod · 0.80
HandlerFuncsMethod · 0.80
NodeStoreMethod · 0.80
DialFuncMethod · 0.80
CreateNodeMethod · 0.80
GetNodesMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…