mirror of
https://github.com/coder/coder.git
synced 2025-07-03 16:13:58 +00:00
feat: use tailnet v2 API for coordination (#11638)
This one is huge, and I'm sorry. The problem is that once I change `tailnet.Conn` to start doing v2 behavior, I kind of have to change it everywhere, including in CoderSDK (CLI), the agent, wsproxy, and ServerTailnet. There is still a bit more cleanup to do, and I need to add code so that when we lose connection to the Coordinator, we mark all peers as LOST, but that will be in a separate PR since this is big enough!
This commit is contained in:
@ -33,6 +33,7 @@ import (
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
"github.com/coder/coder/v2/provisioner/echo"
|
||||
"github.com/coder/coder/v2/tailnet"
|
||||
tailnetproto "github.com/coder/coder/v2/tailnet/proto"
|
||||
"github.com/coder/coder/v2/testutil"
|
||||
)
|
||||
|
||||
@ -98,14 +99,32 @@ func TestDERP(t *testing.T) {
|
||||
|
||||
w2Ready := make(chan struct{})
|
||||
w2ReadyOnce := sync.Once{}
|
||||
w1ID := uuid.New()
|
||||
w1.SetNodeCallback(func(node *tailnet.Node) {
|
||||
w2.UpdateNodes([]*tailnet.Node{node}, false)
|
||||
pn, err := tailnet.NodeToProto(node)
|
||||
if !assert.NoError(t, err) {
|
||||
return
|
||||
}
|
||||
w2.UpdatePeers([]*tailnetproto.CoordinateResponse_PeerUpdate{{
|
||||
Id: w1ID[:],
|
||||
Node: pn,
|
||||
Kind: tailnetproto.CoordinateResponse_PeerUpdate_NODE,
|
||||
}})
|
||||
w2ReadyOnce.Do(func() {
|
||||
close(w2Ready)
|
||||
})
|
||||
})
|
||||
w2ID := uuid.New()
|
||||
w2.SetNodeCallback(func(node *tailnet.Node) {
|
||||
w1.UpdateNodes([]*tailnet.Node{node}, false)
|
||||
pn, err := tailnet.NodeToProto(node)
|
||||
if !assert.NoError(t, err) {
|
||||
return
|
||||
}
|
||||
w1.UpdatePeers([]*tailnetproto.CoordinateResponse_PeerUpdate{{
|
||||
Id: w2ID[:],
|
||||
Node: pn,
|
||||
Kind: tailnetproto.CoordinateResponse_PeerUpdate_NODE,
|
||||
}})
|
||||
})
|
||||
|
||||
conn := make(chan struct{})
|
||||
@ -199,7 +218,11 @@ func TestDERPForceWebSockets(t *testing.T) {
|
||||
defer cancel()
|
||||
|
||||
resources := coderdtest.AwaitWorkspaceAgents(t, client, workspace.ID)
|
||||
conn, err := client.DialWorkspaceAgent(ctx, resources[0].Agents[0].ID, nil)
|
||||
conn, err := client.DialWorkspaceAgent(ctx, resources[0].Agents[0].ID,
|
||||
&codersdk.DialWorkspaceAgentOptions{
|
||||
Logger: slogtest.Make(t, nil).Leveled(slog.LevelDebug).Named("client"),
|
||||
},
|
||||
)
|
||||
require.NoError(t, err)
|
||||
defer func() {
|
||||
_ = conn.Close()
|
||||
|
Reference in New Issue
Block a user