Skip to content

Commit 486f292

Browse files
committed
Merge branch 'main' into mes/login-fix
2 parents 390418f + 7779c0a commit 486f292

24 files changed

+430
-284
lines changed

cli/speedtest.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,22 @@ func (r *RootCmd) speedtest() *serpent.Command {
6060
if r.disableDirect {
6161
_, _ = fmt.Fprintln(inv.Stderr, "Direct connections disabled.")
6262
}
63+
opts := &workspacesdk.DialAgentOptions{
64+
Logger: logger,
65+
}
66+
if pcapFile != "" {
67+
s := capture.New()
68+
opts.CaptureHook = s.LogPacket
69+
f, err := os.OpenFile(pcapFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o644)
70+
if err != nil {
71+
return err
72+
}
73+
defer f.Close()
74+
unregister := s.RegisterOutput(f)
75+
defer unregister()
76+
}
6377
conn, err := workspacesdk.New(client).
64-
DialAgent(ctx, workspaceAgent.ID, &workspacesdk.DialAgentOptions{
65-
Logger: logger,
66-
})
78+
DialAgent(ctx, workspaceAgent.ID, opts)
6779
if err != nil {
6880
return err
6981
}
@@ -102,18 +114,6 @@ func (r *RootCmd) speedtest() *serpent.Command {
102114
conn.AwaitReachable(ctx)
103115
}
104116

105-
if pcapFile != "" {
106-
s := capture.New()
107-
conn.InstallCaptureHook(s.LogPacket)
108-
f, err := os.OpenFile(pcapFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o644)
109-
if err != nil {
110-
return err
111-
}
112-
defer f.Close()
113-
unregister := s.RegisterOutput(f)
114-
defer unregister()
115-
}
116-
117117
var tsDir tsspeedtest.Direction
118118
switch direction {
119119
case "up":

coderd/apidoc/docs.go

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 2 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/coderd.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,9 +1055,6 @@ func New(options *Options) *API {
10551055
r.Put("/autoupdates", api.putWorkspaceAutoupdates)
10561056
r.Get("/resolve-autostart", api.resolveAutostart)
10571057
r.Route("/port-share", func(r chi.Router) {
1058-
r.Use(
1059-
httpmw.RequireExperiment(api.Experiments, codersdk.ExperimentSharedPorts),
1060-
)
10611058
r.Get("/", api.workspaceAgentPortShares)
10621059
r.Post("/", api.postWorkspaceAgentPortShare)
10631060
r.Delete("/", api.deleteWorkspaceAgentPortShare)

coderd/prometheusmetrics/prometheusmetrics_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -511,23 +511,29 @@ func TestAgentStats(t *testing.T) {
511511
func TestExperimentsMetric(t *testing.T) {
512512
t.Parallel()
513513

514+
if len(codersdk.ExperimentsAll) == 0 {
515+
t.Skip("No experiments are currently defined; skipping test.")
516+
}
517+
514518
tests := []struct {
515519
name string
516520
experiments codersdk.Experiments
517521
expected map[codersdk.Experiment]float64
518522
}{
519523
{
520-
name: "Enabled experiment is exported in metrics",
521-
experiments: codersdk.Experiments{codersdk.ExperimentSharedPorts},
524+
name: "Enabled experiment is exported in metrics",
525+
experiments: codersdk.Experiments{
526+
codersdk.ExperimentsAll[0],
527+
},
522528
expected: map[codersdk.Experiment]float64{
523-
codersdk.ExperimentSharedPorts: 1,
529+
codersdk.ExperimentsAll[0]: 1,
524530
},
525531
},
526532
{
527533
name: "Disabled experiment is exported in metrics",
528534
experiments: codersdk.Experiments{},
529535
expected: map[codersdk.Experiment]float64{
530-
codersdk.ExperimentSharedPorts: 0,
536+
codersdk.ExperimentsAll[0]: 0,
531537
},
532538
},
533539
{

coderd/workspaceagentportshare_test.go

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,7 @@ func TestPostWorkspaceAgentPortShare(t *testing.T) {
1919
t.Parallel()
2020
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
2121
defer cancel()
22-
dep := coderdtest.DeploymentValues(t)
23-
dep.Experiments = append(dep.Experiments, string(codersdk.ExperimentSharedPorts))
24-
ownerClient, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{
25-
DeploymentValues: dep,
26-
})
22+
ownerClient, db := coderdtest.NewWithDatabase(t, nil)
2723
owner := coderdtest.CreateFirstUser(t, ownerClient)
2824
client, user := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID)
2925

@@ -140,11 +136,7 @@ func TestGetWorkspaceAgentPortShares(t *testing.T) {
140136
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
141137
defer cancel()
142138

143-
dep := coderdtest.DeploymentValues(t)
144-
dep.Experiments = append(dep.Experiments, string(codersdk.ExperimentSharedPorts))
145-
ownerClient, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{
146-
DeploymentValues: dep,
147-
})
139+
ownerClient, db := coderdtest.NewWithDatabase(t, nil)
148140
owner := coderdtest.CreateFirstUser(t, ownerClient)
149141
client, user := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID)
150142

@@ -180,11 +172,7 @@ func TestDeleteWorkspaceAgentPortShare(t *testing.T) {
180172
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
181173
defer cancel()
182174

183-
dep := coderdtest.DeploymentValues(t)
184-
dep.Experiments = append(dep.Experiments, string(codersdk.ExperimentSharedPorts))
185-
ownerClient, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{
186-
DeploymentValues: dep,
187-
})
175+
ownerClient, db := coderdtest.NewWithDatabase(t, nil)
188176
owner := coderdtest.CreateFirstUser(t, ownerClient)
189177
client, user := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID)
190178

coderd/workspaceapps_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,6 @@ func TestWorkspaceApps(t *testing.T) {
257257
deploymentValues.DisablePathApps = serpent.Bool(opts.DisablePathApps)
258258
deploymentValues.Dangerous.AllowPathAppSharing = serpent.Bool(opts.DangerousAllowPathAppSharing)
259259
deploymentValues.Dangerous.AllowPathAppSiteOwnerAccess = serpent.Bool(opts.DangerousAllowPathAppSiteOwnerAccess)
260-
deploymentValues.Experiments = append(deploymentValues.Experiments, string(codersdk.ExperimentSharedPorts))
261260

262261
if opts.DisableSubdomainApps {
263262
opts.AppHost = ""

codersdk/deployment.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2192,18 +2192,15 @@ type Experiment string
21922192

21932193
const (
21942194
// Add new experiments here!
2195-
ExperimentExample Experiment = "example" // This isn't used for anything.
2196-
ExperimentSharedPorts Experiment = "shared-ports"
2195+
ExperimentExample Experiment = "example" // This isn't used for anything.
21972196
ExperimentAutoFillParameters Experiment = "auto-fill-parameters" // This should not be taken out of experiments until we have redesigned the feature.
21982197
)
21992198

22002199
// ExperimentsAll should include all experiments that are safe for
22012200
// users to opt-in to via --experimental='*'.
22022201
// Experiments that are not ready for consumption by all users should
22032202
// not be included here and will be essentially hidden.
2204-
var ExperimentsAll = Experiments{
2205-
ExperimentSharedPorts,
2206-
}
2203+
var ExperimentsAll = Experiments{}
22072204

22082205
// Experiments is a list of experiments.
22092206
// Multiple experiments may be enabled at the same time.

codersdk/workspacesdk/workspacesdk.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"golang.org/x/xerrors"
1717
"nhooyr.io/websocket"
1818
"tailscale.com/tailcfg"
19+
"tailscale.com/wgengine/capture"
1920

2021
"cdr.dev/slog"
2122
"github.com/coder/coder/v2/codersdk"
@@ -176,6 +177,9 @@ type DialAgentOptions struct {
176177
// BlockEndpoints forced a direct connection through DERP. The Client may
177178
// have DisableDirect set which will override this value.
178179
BlockEndpoints bool
180+
// CaptureHook is a callback that captures Disco packets and packets sent
181+
// into the tailnet tunnel.
182+
CaptureHook capture.Callback
179183
}
180184

181185
func (c *Client) DialAgent(dialCtx context.Context, agentID uuid.UUID, options *DialAgentOptions) (agentConn *AgentConn, err error) {
@@ -203,6 +207,7 @@ func (c *Client) DialAgent(dialCtx context.Context, agentID uuid.UUID, options *
203207
DERPForceWebSockets: connInfo.DERPForceWebSockets,
204208
Logger: options.Logger,
205209
BlockEndpoints: c.client.DisableDirectConnections || options.BlockEndpoints,
210+
CaptureHook: options.CaptureHook,
206211
})
207212
if err != nil {
208213
return nil, xerrors.Errorf("create tailnet: %w", err)

docs/api/schemas.md

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)