MCPcopy Index your code
hub / github.com/coder/coder / TestLostPeerCleanupQueries

Function TestLostPeerCleanupQueries

enterprise/tailnet/pgcoord_internal_test.go:166–258  ·  view source on GitHub ↗

TestLostPeerCleanupQueries tests that our SQL queries to clean up lost peers do what we expect, that is, clean up peers and associated tunnels that have been lost for over 24 hours.

(t *testing.T)

Source from the content-addressed store, hash-verified

164// TestLostPeerCleanupQueries tests that our SQL queries to clean up lost peers do what we expect,
165// that is, clean up peers and associated tunnels that have been lost for over 24 hours.
166func TestLostPeerCleanupQueries(t *testing.T) {
167 t.Parallel()
168
169 store, _, sqlDB := dbtestutil.NewDBWithSQLDB(t, dbtestutil.WithDumpOnFailure())
170 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
171 defer cancel()
172
173 coordID := uuid.New()
174 _, err := store.UpsertTailnetCoordinator(ctx, coordID)
175 require.NoError(t, err)
176
177 peerID := uuid.New()
178 _, err = store.UpsertTailnetPeer(ctx, database.UpsertTailnetPeerParams{
179 ID: peerID,
180 CoordinatorID: coordID,
181 Node: []byte("test"),
182 Status: database.TailnetStatusLost,
183 })
184 require.NoError(t, err)
185
186 otherID := uuid.New()
187 _, err = store.UpsertTailnetTunnel(ctx, database.UpsertTailnetTunnelParams{
188 CoordinatorID: coordID,
189 SrcID: peerID,
190 DstID: otherID,
191 })
192 require.NoError(t, err)
193
194 peers, err := store.GetAllTailnetPeers(ctx)
195 require.NoError(t, err)
196 require.Len(t, peers, 1)
197 require.Equal(t, peerID, peers[0].ID)
198
199 tunnels, err := store.GetAllTailnetTunnels(ctx)
200 require.NoError(t, err)
201 require.Len(t, tunnels, 1)
202 require.Equal(t, peerID, tunnels[0].SrcID)
203 require.Equal(t, otherID, tunnels[0].DstID)
204
205 // this clean is a noop since the peer and tunnel are less than 24h old
206 err = store.CleanTailnetLostPeers(ctx)
207 require.NoError(t, err)
208 err = store.CleanTailnetTunnels(ctx)
209 require.NoError(t, err)
210
211 peers, err = store.GetAllTailnetPeers(ctx)
212 require.NoError(t, err)
213 require.Len(t, peers, 1)
214 require.Equal(t, peerID, peers[0].ID)
215
216 tunnels, err = store.GetAllTailnetTunnels(ctx)
217 require.NoError(t, err)
218 require.Len(t, tunnels, 1)
219 require.Equal(t, peerID, tunnels[0].SrcID)
220 require.Equal(t, otherID, tunnels[0].DstID)
221
222 // set the age of the tunnel to >24h
223 sqlDB.Exec("UPDATE tailnet_tunnels SET updated_at = $1", time.Now().Add(-25*time.Hour))

Callers

nothing calls this directly

Calls 14

NewDBWithSQLDBFunction · 0.92
WithDumpOnFailureFunction · 0.92
NewMethod · 0.65
UpsertTailnetPeerMethod · 0.65
UpsertTailnetTunnelMethod · 0.65
GetAllTailnetPeersMethod · 0.65
GetAllTailnetTunnelsMethod · 0.65
CleanTailnetLostPeersMethod · 0.65
CleanTailnetTunnelsMethod · 0.65
ExecMethod · 0.65
AddMethod · 0.65

Tested by

no test coverage detected