Expand Up @@ -10,8 +10,8 @@ import ( "cdr.dev/slog/sloggers/slogtest" "github.com/coder/coder/v2/coderd/database/dbtestutil" "github.com/coder/coder/v2/enterprise/tailnet" agpl "github.com/coder/coder/v2/tailnet" "github.com/coder/coder/v2/tailnet/tailnettest" agpltest "github.com/coder/coder/v2/tailnet/test" "github.com/coder/coder/v2/testutil" ) Expand All @@ -35,27 +35,27 @@ func TestPGCoordinator_MultiAgent(t *testing.T) { require.NoError(t, err) defer coord1.Close() agent1 :=newTestAgent( t, coord1, "agent1") defer agent1.close( ) agent1.sendNode(&agpl.Node{PreferredDERP: 5} ) agent1 :=agpltest.NewAgent(ctx, t, coord1, "agent1") defer agent1.Close(ctx ) agent1.UpdateDERP(5 ) ma1 := tailnettest.NewTestMultiAgent(t, coord1) defer ma1.Close() ma1.RequireSubscribeAgent(agent1.id ) ma1.RequireSubscribeAgent(agent1.ID ) ma1.RequireEventuallyHasDERPs(ctx, 5) agent1.sendNode(&agpl.Node{PreferredDERP: 1} ) agent1.UpdateDERP(1 ) ma1.RequireEventuallyHasDERPs(ctx, 1) ma1.SendNodeWithDERP(3) assertEventuallyHasDERPs(ctx, t, agent1, 3)agent1.AssertEventuallyHasDERP(ma1.ID , 3) ma1.Close() require.NoError(t, agent1.close() )agent1.UngracefulDisconnect(ctx ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id ) assertEventuallyLost(ctx, t, store, agent1.id ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID ) assertEventuallyLost(ctx, t, store, agent1.ID ) } func TestPGCoordinator_MultiAgent_CoordClose(t *testing.T) { Expand Down Expand Up @@ -102,28 +102,28 @@ func TestPGCoordinator_MultiAgent_UnsubscribeRace(t *testing.T) { require.NoError(t, err) defer coord1.Close() agent1 :=newTestAgent( t, coord1, "agent1") defer agent1.close( ) agent1.sendNode(&agpl.Node{PreferredDERP: 5} ) agent1 :=agpltest.NewAgent(ctx, t, coord1, "agent1") defer agent1.Close(ctx ) agent1.UpdateDERP(5 ) ma1 := tailnettest.NewTestMultiAgent(t, coord1) defer ma1.Close() ma1.RequireSubscribeAgent(agent1.id ) ma1.RequireSubscribeAgent(agent1.ID ) ma1.RequireEventuallyHasDERPs(ctx, 5) agent1.sendNode(&agpl.Node{PreferredDERP: 1} ) agent1.UpdateDERP(1 ) ma1.RequireEventuallyHasDERPs(ctx, 1) ma1.SendNodeWithDERP(3) assertEventuallyHasDERPs(ctx, t, agent1, 3)agent1.AssertEventuallyHasDERP(ma1.ID , 3) ma1.RequireUnsubscribeAgent(agent1.id ) ma1.RequireUnsubscribeAgent(agent1.ID ) ma1.Close() require.NoError(t, agent1.close() )agent1.UngracefulDisconnect(ctx ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id ) assertEventuallyLost(ctx, t, store, agent1.id ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID ) assertEventuallyLost(ctx, t, store, agent1.ID ) } // TestPGCoordinator_MultiAgent_Unsubscribe tests a single coordinator with a Expand All @@ -147,43 +147,43 @@ func TestPGCoordinator_MultiAgent_Unsubscribe(t *testing.T) { require.NoError(t, err) defer coord1.Close() agent1 :=newTestAgent( t, coord1, "agent1") defer agent1.close( ) agent1.sendNode(&agpl.Node{PreferredDERP: 5} ) agent1 :=agpltest.NewAgent(ctx, t, coord1, "agent1") defer agent1.Close(ctx ) agent1.UpdateDERP(5 ) ma1 := tailnettest.NewTestMultiAgent(t, coord1) defer ma1.Close() ma1.RequireSubscribeAgent(agent1.id ) ma1.RequireSubscribeAgent(agent1.ID ) ma1.RequireEventuallyHasDERPs(ctx, 5) agent1.sendNode(&agpl.Node{PreferredDERP: 1} ) agent1.UpdateDERP(1 ) ma1.RequireEventuallyHasDERPs(ctx, 1) ma1.SendNodeWithDERP(3) assertEventuallyHasDERPs(ctx, t, agent1, 3)agent1.AssertEventuallyHasDERP(ma1.ID , 3) ma1.RequireUnsubscribeAgent(agent1.id ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id ) ma1.RequireUnsubscribeAgent(agent1.ID ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID ) func() { ctx, cancel := context.WithTimeout(ctx, testutil.IntervalSlow*3) defer cancel() ma1.SendNodeWithDERP(9) assertNeverHasDERPs (ctx,t, agent1 , 9)agent1.AssertNeverHasDERPs (ctx,ma1.ID , 9)}() func() { ctx, cancel := context.WithTimeout(ctx, testutil.IntervalSlow*3) defer cancel() agent1.sendNode(&agpl.Node{PreferredDERP: 8} ) agent1.UpdateDERP(8 ) ma1.RequireNeverHasDERPs(ctx, 8) }() ma1.Close() require.NoError(t, agent1.close() )agent1.UngracefulDisconnect(ctx ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id ) assertEventuallyLost(ctx, t, store, agent1.id ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID ) assertEventuallyLost(ctx, t, store, agent1.ID ) } // TestPGCoordinator_MultiAgent_MultiCoordinator tests two coordinators with a Expand Down Expand Up @@ -212,27 +212,27 @@ func TestPGCoordinator_MultiAgent_MultiCoordinator(t *testing.T) { require.NoError(t, err) defer coord2.Close() agent1 :=newTestAgent( t, coord1, "agent1") defer agent1.close( ) agent1.sendNode(&agpl.Node{PreferredDERP: 5} ) agent1 :=agpltest.NewAgent(ctx, t, coord1, "agent1") defer agent1.Close(ctx ) agent1.UpdateDERP(5 ) ma1 := tailnettest.NewTestMultiAgent(t, coord2) defer ma1.Close() ma1.RequireSubscribeAgent(agent1.id ) ma1.RequireSubscribeAgent(agent1.ID ) ma1.RequireEventuallyHasDERPs(ctx, 5) agent1.sendNode(&agpl.Node{PreferredDERP: 1} ) agent1.UpdateDERP(1 ) ma1.RequireEventuallyHasDERPs(ctx, 1) ma1.SendNodeWithDERP(3) assertEventuallyHasDERPs(ctx, t, agent1, 3)agent1.AssertEventuallyHasDERP(ma1.ID , 3) ma1.Close() require.NoError(t, agent1.close() )agent1.UngracefulDisconnect(ctx ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id ) assertEventuallyLost(ctx, t, store, agent1.id ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID ) assertEventuallyLost(ctx, t, store, agent1.ID ) } // TestPGCoordinator_MultiAgent_MultiCoordinator_UpdateBeforeSubscribe tests two Expand Down Expand Up @@ -262,27 +262,27 @@ func TestPGCoordinator_MultiAgent_MultiCoordinator_UpdateBeforeSubscribe(t *test require.NoError(t, err) defer coord2.Close() agent1 :=newTestAgent( t, coord1, "agent1") defer agent1.close( ) agent1.sendNode(&agpl.Node{PreferredDERP: 5} ) agent1 :=agpltest.NewAgent(ctx, t, coord1, "agent1") defer agent1.Close(ctx ) agent1.UpdateDERP(5 ) ma1 := tailnettest.NewTestMultiAgent(t, coord2) defer ma1.Close() ma1.SendNodeWithDERP(3) ma1.RequireSubscribeAgent(agent1.id ) ma1.RequireSubscribeAgent(agent1.ID ) ma1.RequireEventuallyHasDERPs(ctx, 5) assertEventuallyHasDERPs(ctx, t, agent1, 3)agent1.AssertEventuallyHasDERP(ma1.ID , 3) agent1.sendNode(&agpl.Node{PreferredDERP: 1} ) agent1.UpdateDERP(1 ) ma1.RequireEventuallyHasDERPs(ctx, 1) ma1.Close() require.NoError(t, agent1.close() )agent1.UngracefulDisconnect(ctx ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id ) assertEventuallyLost(ctx, t, store, agent1.id ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID ) assertEventuallyLost(ctx, t, store, agent1.ID ) } // TestPGCoordinator_MultiAgent_TwoAgents tests three coordinators with a Expand Down Expand Up @@ -317,37 +317,37 @@ func TestPGCoordinator_MultiAgent_TwoAgents(t *testing.T) { require.NoError(t, err) defer coord3.Close() agent1 :=newTestAgent( t, coord1, "agent1") defer agent1.close( ) agent1.sendNode(&agpl.Node{PreferredDERP: 5} ) agent1 :=agpltest.NewAgent(ctx, t, coord1, "agent1") defer agent1.Close(ctx ) agent1.UpdateDERP(5 ) agent2 :=newTestAgent( t, coord2, "agent2") deferagent1.close( ) agent2.sendNode(&agpl.Node{PreferredDERP: 6} ) agent2 :=agpltest.NewAgent(ctx, t, coord2, "agent2") deferagent2.Close(ctx ) agent2.UpdateDERP(6 ) ma1 := tailnettest.NewTestMultiAgent(t, coord3) defer ma1.Close() ma1.RequireSubscribeAgent(agent1.id ) ma1.RequireSubscribeAgent(agent1.ID ) ma1.RequireEventuallyHasDERPs(ctx, 5) agent1.sendNode(&agpl.Node{PreferredDERP: 1} ) agent1.UpdateDERP(1 ) ma1.RequireEventuallyHasDERPs(ctx, 1) ma1.RequireSubscribeAgent(agent2.id ) ma1.RequireSubscribeAgent(agent2.ID ) ma1.RequireEventuallyHasDERPs(ctx, 6) agent2.sendNode(&agpl.Node{PreferredDERP: 2} ) agent2.UpdateDERP(2 ) ma1.RequireEventuallyHasDERPs(ctx, 2) ma1.SendNodeWithDERP(3) assertEventuallyHasDERPs(ctx, t, agent1, 3)assertEventuallyHasDERPs(ctx, t, agent2, 3)agent1.AssertEventuallyHasDERP(ma1.ID , 3) agent2.AssertEventuallyHasDERP(ma1.ID , 3) ma1.Close() require.NoError(t, agent1.close() )require.NoError(t, agent2.close() )agent1.UngracefulDisconnect(ctx ) agent2.UngracefulDisconnect(ctx ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id ) assertEventuallyLost(ctx, t, store, agent1.id ) assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID ) assertEventuallyLost(ctx, t, store, agent1.ID ) }