refactor(app): use the ports broker route vocabulary directly
- commit
- a5363989b87afcf29cdb0210da9b4d7f28ec5c4c
- author
- brice · · 2026-10-08 09:03 UTC
- committer
- brice · · 2026-10-08 09:31 UTC
- parent
- 7ebc8f8
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
7 files · +38 -43
M internal/app/broker_composition_test.go +2 -2
| @@ -128,8 +128,8 @@ func TestProductionBrokerRemoteMuxTransports(t *testing.T) { | |||
| 128 | 128 | for _, tc := range []struct { | |
| 129 | 129 | name, helper string | |
| 130 | 130 | }{ | |
| 131 | - | {hostTransportSSH, brokerMuxStdioCommand}, | |
| 132 | - | {hostTransportQUIC, brokerMuxQUICBootstrapCommand}, | |
| 131 | + | {hostTransportSSH, ports.BrokerMuxStdioCommand}, | |
| 132 | + | {hostTransportQUIC, ports.BrokerMuxQUICBootstrapCommand}, | |
| 133 | 133 | } { | |
| 134 | 134 | t.Run(tc.name, func(t *testing.T) { | |
| 135 | 135 | binDir := shortTempDir(t, "vb") | |
| @@ -128,8 +128,8 @@ func TestProductionBrokerRemoteMuxTransports(t *testing.T) { | |||||
| 128 | for _, tc := range []struct { | 128 | for _, tc := range []struct { | ||
| 129 | name, helper string | 129 | name, helper string | ||
| 130 | }{ | 130 | }{ | ||
| 131 | - | {hostTransportSSH, brokerMuxStdioCommand}, | 131 | + | {hostTransportSSH, ports.BrokerMuxStdioCommand}, |
| 132 | - | {hostTransportQUIC, brokerMuxQUICBootstrapCommand}, | 132 | + | {hostTransportQUIC, ports.BrokerMuxQUICBootstrapCommand}, |
| 133 | } { | 133 | } { | ||
| 134 | t.Run(tc.name, func(t *testing.T) { | 134 | t.Run(tc.name, func(t *testing.T) { | ||
| 135 | binDir := shortTempDir(t, "vb") | 135 | binDir := shortTempDir(t, "vb") | ||
M internal/app/broker_offline_local_test.go +1 -1
| @@ -770,7 +770,7 @@ func TestBrokerLocalProbeRefusesNonLocalRoute(t *testing.T) { | |||
| 770 | 770 | sshRoute := loadTestRoute(t, map[string]any{ | |
| 771 | 771 | "kind": "ssh-stdio", | |
| 772 | 772 | "target": "user@host:2222", | |
| 773 | - | "argv": []any{"vev", brokerMuxStdioCommand, "--offline-root", "/srv/remote"}, | |
| 773 | + | "argv": []any{"vev", ports.BrokerMuxStdioCommand, "--offline-root", "/srv/remote"}, | |
| 774 | 774 | }) | |
| 775 | 775 | require.Equal(t, brokerconfig.RouteSSHStdio, sshRoute.Kind()) | |
| 776 | 776 | require.False(t, sshRoute.IsLocal(), "an ssh helper route is never dialed directly") | |
| @@ -770,7 +770,7 @@ func TestBrokerLocalProbeRefusesNonLocalRoute(t *testing.T) { | |||||
| 770 | sshRoute := loadTestRoute(t, map[string]any{ | 770 | sshRoute := loadTestRoute(t, map[string]any{ | ||
| 771 | "kind": "ssh-stdio", | 771 | "kind": "ssh-stdio", | ||
| 772 | "target": "user@host:2222", | 772 | "target": "user@host:2222", | ||
| 773 | - | "argv": []any{"vev", brokerMuxStdioCommand, "--offline-root", "/srv/remote"}, | 773 | + | "argv": []any{"vev", ports.BrokerMuxStdioCommand, "--offline-root", "/srv/remote"}, |
| 774 | }) | 774 | }) | ||
| 775 | require.Equal(t, brokerconfig.RouteSSHStdio, sshRoute.Kind()) | 775 | require.Equal(t, brokerconfig.RouteSSHStdio, sshRoute.Kind()) | ||
| 776 | require.False(t, sshRoute.IsLocal(), "an ssh helper route is never dialed directly") | 776 | require.False(t, sshRoute.IsLocal(), "an ssh helper route is never dialed directly") | ||
M internal/app/broker_offline_mux.go +7 -15
| @@ -63,14 +63,10 @@ import ( | |||
| 63 | 63 | // authentication, and the absence of a remote PTY are preserved: the helpers | |
| 64 | 64 | // only add explicit trust inputs that narrow verification, never disable it. | |
| 65 | 65 | ||
| 66 | - | const ( | |
| 67 | - | // brokerMuxStdioCommand is the hidden remote SSH stdio mux bridge. | |
| 68 | - | brokerMuxStdioCommand = ports.BrokerMuxStdioCommand | |
| 69 | - | // brokerMuxQUICBootstrapCommand is the hidden remote QUIC mux bootstrap. | |
| 70 | - | brokerMuxQUICBootstrapCommand = ports.BrokerMuxQUICBootstrapCommand | |
| 71 | - | // brokerMuxQUICProxyCommand is the hidden detached remote QUIC mux proxy. | |
| 72 | - | brokerMuxQUICProxyCommand = "_broker-mux-quic-proxy" | |
| 73 | - | ) | |
| 66 | + | // brokerMuxQUICProxyCommand is the hidden detached remote QUIC mux proxy. The | |
| 67 | + | // stdio and bootstrap helpers are named by ports.BrokerMuxStdioCommand and | |
| 68 | + | // ports.BrokerMuxQUICBootstrapCommand because durable routes persist them. | |
| 69 | + | const brokerMuxQUICProxyCommand = "_broker-mux-quic-proxy" | |
| 74 | 70 | ||
| 75 | 71 | // brokerMuxSetupTimeout bounds each side's bootstrap readiness wait. On the | |
| 76 | 72 | // broker side it caps the wait for the local ssh bootstrap child's readiness | |
| @@ -103,10 +99,6 @@ const brokerMuxWaitDelay = 2 * time.Second | |||
| 103 | 99 | // brokerDaemonStartArgvFlag's exact spelling, so the two sides can never drift. | |
| 104 | 100 | const brokerDaemonStartArg = "--daemon-start" | |
| 105 | 101 | ||
| 106 | - | // brokerScopeArg is the scope flag carried by every durable remote route argv | |
| 107 | - | // (see ports.BrokerRouteForTransport). Stored routes keep it verbatim. | |
| 108 | - | const brokerScopeArg = ports.BrokerRouteScopeArg | |
| 109 | - | ||
| 110 | 102 | // brokerMuxOptions is the parsed hidden mux helper invocation. | |
| 111 | 103 | type brokerMuxOptions struct { | |
| 112 | 104 | // startMode is the daemon-start authorization the broker propagated. An | |
| @@ -125,11 +117,11 @@ func parseBrokerMuxArgs(name string, kind cmdKind, args []string) (command, erro | |||
| 125 | 117 | scopeSet, startSet := false, false | |
| 126 | 118 | for index := 0; index < len(args); { | |
| 127 | 119 | switch args[index] { | |
| 128 | - | case brokerScopeArg: | |
| 120 | + | case ports.BrokerRouteScopeArg: | |
| 129 | 121 | // The scope flag is part of every durable remote route argv, so it | |
| 130 | 122 | // stays accepted; the helper always serves the per-user scope. | |
| 131 | 123 | if scopeSet { | |
| 132 | - | return command{}, usagef("`%s` received duplicate %s", name, brokerScopeArg) | |
| 124 | + | return command{}, usagef("`%s` received duplicate %s", name, ports.BrokerRouteScopeArg) | |
| 133 | 125 | } | |
| 134 | 126 | scopeSet = true | |
| 135 | 127 | index++ | |
| @@ -495,7 +487,7 @@ func runBrokerMuxQUICBootstrapCommand(ctx context.Context, options brokerMuxOpti | |||
| 495 | 487 | } | |
| 496 | 488 | defer func() { _ = devNull.Close() }() | |
| 497 | 489 | ||
| 498 | - | args := []string{brokerMuxQUICProxyCommand, brokerScopeArg} | |
| 490 | + | args := []string{brokerMuxQUICProxyCommand, ports.BrokerRouteScopeArg} | |
| 499 | 491 | flag, err := brokerDaemonStartArgvFlag(options.startMode) | |
| 500 | 492 | if err != nil { | |
| 501 | 493 | _ = writer.Close() | |
| @@ -63,14 +63,10 @@ import ( | |||||
| 63 | // authentication, and the absence of a remote PTY are preserved: the helpers | 63 | // authentication, and the absence of a remote PTY are preserved: the helpers | ||
| 64 | // only add explicit trust inputs that narrow verification, never disable it. | 64 | // only add explicit trust inputs that narrow verification, never disable it. | ||
| 65 | 65 | ||||
| 66 | - | const ( | 66 | + | // brokerMuxQUICProxyCommand is the hidden detached remote QUIC mux proxy. The |
| 67 | - | // brokerMuxStdioCommand is the hidden remote SSH stdio mux bridge. | 67 | + | // stdio and bootstrap helpers are named by ports.BrokerMuxStdioCommand and |
| 68 | - | brokerMuxStdioCommand = ports.BrokerMuxStdioCommand | 68 | + | // ports.BrokerMuxQUICBootstrapCommand because durable routes persist them. |
| 69 | - | // brokerMuxQUICBootstrapCommand is the hidden remote QUIC mux bootstrap. | 69 | + | const brokerMuxQUICProxyCommand = "_broker-mux-quic-proxy" |
| 70 | - | brokerMuxQUICBootstrapCommand = ports.BrokerMuxQUICBootstrapCommand | |||
| 71 | - | // brokerMuxQUICProxyCommand is the hidden detached remote QUIC mux proxy. | |||
| 72 | - | brokerMuxQUICProxyCommand = "_broker-mux-quic-proxy" | |||
| 73 | - | ) | |||
| 74 | 70 | ||||
| 75 | // brokerMuxSetupTimeout bounds each side's bootstrap readiness wait. On the | 71 | // brokerMuxSetupTimeout bounds each side's bootstrap readiness wait. On the | ||
| 76 | // broker side it caps the wait for the local ssh bootstrap child's readiness | 72 | // broker side it caps the wait for the local ssh bootstrap child's readiness | ||
| @@ -103,10 +99,6 @@ const brokerMuxWaitDelay = 2 * time.Second | |||||
| 103 | // brokerDaemonStartArgvFlag's exact spelling, so the two sides can never drift. | 99 | // brokerDaemonStartArgvFlag's exact spelling, so the two sides can never drift. | ||
| 104 | const brokerDaemonStartArg = "--daemon-start" | 100 | const brokerDaemonStartArg = "--daemon-start" | ||
| 105 | 101 | ||||
| 106 | - | // brokerScopeArg is the scope flag carried by every durable remote route argv | |||
| 107 | - | // (see ports.BrokerRouteForTransport). Stored routes keep it verbatim. | |||
| 108 | - | const brokerScopeArg = ports.BrokerRouteScopeArg | |||
| 109 | - | ||||
| 110 | // brokerMuxOptions is the parsed hidden mux helper invocation. | 102 | // brokerMuxOptions is the parsed hidden mux helper invocation. | ||
| 111 | type brokerMuxOptions struct { | 103 | type brokerMuxOptions struct { | ||
| 112 | // startMode is the daemon-start authorization the broker propagated. An | 104 | // startMode is the daemon-start authorization the broker propagated. An | ||
| @@ -125,11 +117,11 @@ func parseBrokerMuxArgs(name string, kind cmdKind, args []string) (command, erro | |||||
| 125 | scopeSet, startSet := false, false | 117 | scopeSet, startSet := false, false | ||
| 126 | for index := 0; index < len(args); { | 118 | for index := 0; index < len(args); { | ||
| 127 | switch args[index] { | 119 | switch args[index] { | ||
| 128 | - | case brokerScopeArg: | 120 | + | case ports.BrokerRouteScopeArg: |
| 129 | // The scope flag is part of every durable remote route argv, so it | 121 | // The scope flag is part of every durable remote route argv, so it | ||
| 130 | // stays accepted; the helper always serves the per-user scope. | 122 | // stays accepted; the helper always serves the per-user scope. | ||
| 131 | if scopeSet { | 123 | if scopeSet { | ||
| 132 | - | return command{}, usagef("`%s` received duplicate %s", name, brokerScopeArg) | 124 | + | return command{}, usagef("`%s` received duplicate %s", name, ports.BrokerRouteScopeArg) |
| 133 | } | 125 | } | ||
| 134 | scopeSet = true | 126 | scopeSet = true | ||
| 135 | index++ | 127 | index++ | ||
| @@ -495,7 +487,7 @@ func runBrokerMuxQUICBootstrapCommand(ctx context.Context, options brokerMuxOpti | |||||
| 495 | } | 487 | } | ||
| 496 | defer func() { _ = devNull.Close() }() | 488 | defer func() { _ = devNull.Close() }() | ||
| 497 | 489 | ||||
| 498 | - | args := []string{brokerMuxQUICProxyCommand, brokerScopeArg} | 490 | + | args := []string{brokerMuxQUICProxyCommand, ports.BrokerRouteScopeArg} |
| 499 | flag, err := brokerDaemonStartArgvFlag(options.startMode) | 491 | flag, err := brokerDaemonStartArgvFlag(options.startMode) | ||
| 500 | if err != nil { | 492 | if err != nil { | ||
| 501 | _ = writer.Close() | 493 | _ = writer.Close() | ||
M internal/app/broker_offline_mux_test.go +19 -19
| @@ -156,7 +156,7 @@ func remoteMuxFixture(t *testing.T, policy ports.BrokerPolicy) *brokerMuxFixture | |||
| 156 | 156 | ||
| 157 | 157 | // cleanup kills every recorded mux helper process. | |
| 158 | 158 | func (e *muxTestEnv) cleanup() { | |
| 159 | - | for _, role := range []string{brokerMuxStdioCommand, brokerMuxQUICBootstrapCommand, brokerMuxQUICProxyCommand} { | |
| 159 | + | for _, role := range []string{ports.BrokerMuxStdioCommand, ports.BrokerMuxQUICBootstrapCommand, brokerMuxQUICProxyCommand} { | |
| 160 | 160 | raw, err := os.ReadFile(filepath.Join(e.recordDir, role+".pids")) | |
| 161 | 161 | if err != nil { | |
| 162 | 162 | continue | |
| @@ -260,7 +260,7 @@ func TestParseBrokerMuxArgs(t *testing.T) { | |||
| 260 | 260 | } | |
| 261 | 261 | for _, tt := range tests { | |
| 262 | 262 | t.Run(tt.name, func(t *testing.T) { | |
| 263 | - | command, err := parseBrokerMuxArgs(brokerMuxStdioCommand, kindBrokerMuxStdio, tt.args) | |
| 263 | + | command, err := parseBrokerMuxArgs(ports.BrokerMuxStdioCommand, kindBrokerMuxStdio, tt.args) | |
| 264 | 264 | if tt.wantErr != "" { | |
| 265 | 265 | require.Error(t, err) | |
| 266 | 266 | require.Contains(t, err.Error(), tt.wantErr) | |
| @@ -279,8 +279,8 @@ func TestBrokerMuxHelpersHiddenFromPublicHelp(t *testing.T) { | |||
| 279 | 279 | name string | |
| 280 | 280 | kind cmdKind | |
| 281 | 281 | }{ | |
| 282 | - | {brokerMuxStdioCommand, kindBrokerMuxStdio}, | |
| 283 | - | {brokerMuxQUICBootstrapCommand, kindBrokerMuxQUICBootstrap}, | |
| 282 | + | {ports.BrokerMuxStdioCommand, kindBrokerMuxStdio}, | |
| 283 | + | {ports.BrokerMuxQUICBootstrapCommand, kindBrokerMuxQUICBootstrap}, | |
| 284 | 284 | {brokerMuxQUICProxyCommand, kindBrokerMuxQUICProxy}, | |
| 285 | 285 | } { | |
| 286 | 286 | require.NotContains(t, usageText, tt.name) | |
| @@ -305,7 +305,7 @@ func TestSSHMuxCommandSpecPreservesTrustAndNoPTY(t *testing.T) { | |||
| 305 | 305 | route := loadTestRoute(t, map[string]any{ | |
| 306 | 306 | "kind": "ssh-stdio", | |
| 307 | 307 | "target": "user@host:2222", | |
| 308 | - | "argv": []any{"vev", brokerMuxStdioCommand, "--production"}, | |
| 308 | + | "argv": []any{"vev", ports.BrokerMuxStdioCommand, "--production"}, | |
| 309 | 309 | "trust": map[string]any{"knownHostsFile": "/etc/ssh/known_hosts", "connectTimeout": "30s"}, | |
| 310 | 310 | }) | |
| 311 | 311 | spec, err := sshMuxCommandSpec(route, ports.BrokerDaemonStartIfNeeded) | |
| @@ -317,7 +317,7 @@ func TestSSHMuxCommandSpecPreservesTrustAndNoPTY(t *testing.T) { | |||
| 317 | 317 | require.Contains(t, spec.Args, "ConnectTimeout=30") | |
| 318 | 318 | joined := strings.Join(spec.Args, " ") | |
| 319 | 319 | require.Contains(t, joined, "-- user@host:2222 ") | |
| 320 | - | require.Contains(t, joined, brokerMuxStdioCommand) | |
| 320 | + | require.Contains(t, joined, ports.BrokerMuxStdioCommand) | |
| 321 | 321 | require.Contains(t, joined, "'"+brokerDaemonStartArg+"' 'if-needed'") | |
| 322 | 322 | require.NotContains(t, joined, "StrictHostKeyChecking") | |
| 323 | 323 | require.NotContains(t, joined, "BatchMode") | |
| @@ -333,7 +333,7 @@ func TestSSHMuxCommandSpecPreservesTrustAndNoPTY(t *testing.T) { | |||
| 333 | 333 | plain := loadTestRoute(t, map[string]any{ | |
| 334 | 334 | "kind": "ssh-quic", | |
| 335 | 335 | "target": "host", | |
| 336 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | |
| 336 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, | |
| 337 | 337 | }) | |
| 338 | 338 | plainSpec, err := sshMuxCommandSpec(plain, ports.BrokerDaemonExistingOnly) | |
| 339 | 339 | require.NoError(t, err) | |
| @@ -350,7 +350,7 @@ func TestSSHMuxCommandSpecRefusesUnknownStartMode(t *testing.T) { | |||
| 350 | 350 | route := loadTestRoute(t, map[string]any{ | |
| 351 | 351 | "kind": "ssh-stdio", | |
| 352 | 352 | "target": "host", | |
| 353 | - | "argv": []any{"vev", brokerMuxStdioCommand, "--production"}, | |
| 353 | + | "argv": []any{"vev", ports.BrokerMuxStdioCommand, "--production"}, | |
| 354 | 354 | }) | |
| 355 | 355 | _, err := sshMuxCommandSpec(route, ports.BrokerDaemonStartMode(0)) | |
| 356 | 356 | require.Error(t, err) | |
| @@ -403,7 +403,7 @@ func TestBrokerQUICPeerAddr(t *testing.T) { | |||
| 403 | 403 | func TestBrokerMuxHelperReturnsTypedNoDaemonExit(t *testing.T) { | |
| 404 | 404 | emptyProductionBrokerLayout(t, "") | |
| 405 | 405 | emptyProductionBrokerLayout(t, "") | |
| 406 | - | parsed, err := parseBrokerMuxArgs(brokerMuxStdioCommand, kindBrokerMuxStdio, []string{"--production"}) | |
| 406 | + | parsed, err := parseBrokerMuxArgs(ports.BrokerMuxStdioCommand, kindBrokerMuxStdio, []string{"--production"}) | |
| 407 | 407 | require.NoError(t, err) | |
| 408 | 408 | err = runBrokerMuxStdioCommand(context.Background(), parsed.brokerMux) | |
| 409 | 409 | var coded *exitCoded | |
| @@ -419,11 +419,11 @@ func TestBrokerServeSSHStdioRouteRoundTrip(t *testing.T) { | |||
| 419 | 419 | policy := brokerTestPolicy() | |
| 420 | 420 | fixture := remoteMuxFixture(t, policy) | |
| 421 | 421 | argsFile := installFakeSSH(t, fakeSSHExecHelper) | |
| 422 | - | t.Setenv(fakeSSHModeEnv, brokerMuxStdioCommand) | |
| 422 | + | t.Setenv(fakeSSHModeEnv, ports.BrokerMuxStdioCommand) | |
| 423 | 423 | writeMuxRoot(t, map[string]any{ | |
| 424 | 424 | "kind": "ssh-stdio", | |
| 425 | 425 | "target": "user@muxhost:2222", | |
| 426 | - | "argv": []any{"vev", brokerMuxStdioCommand, "--production"}, | |
| 426 | + | "argv": []any{"vev", ports.BrokerMuxStdioCommand, "--production"}, | |
| 427 | 427 | }) | |
| 428 | 428 | ||
| 429 | 429 | socketPath, stop := startMuxBrokerServe(t) | |
| @@ -435,7 +435,7 @@ func TestBrokerServeSSHStdioRouteRoundTrip(t *testing.T) { | |||
| 435 | 435 | argv := readFileString(t, argsFile) | |
| 436 | 436 | require.Contains(t, argv, "-T\n") | |
| 437 | 437 | require.Contains(t, argv, "--\nuser@muxhost:2222\n") | |
| 438 | - | require.Contains(t, argv, brokerMuxStdioCommand) | |
| 438 | + | require.Contains(t, argv, ports.BrokerMuxStdioCommand) | |
| 439 | 439 | require.NotContains(t, argv, "UserKnownHostsFile=") | |
| 440 | 440 | require.NotContains(t, argv, "StrictHostKeyChecking") | |
| 441 | 441 | require.NotContains(t, argv, "BatchMode") | |
| @@ -451,11 +451,11 @@ func TestBrokerServeSSHQUICRouteRoundTrip(t *testing.T) { | |||
| 451 | 451 | policy := brokerTestPolicy() | |
| 452 | 452 | fixture := remoteMuxFixture(t, policy) | |
| 453 | 453 | installFakeSSH(t, fakeSSHExecHelper) | |
| 454 | - | t.Setenv(fakeSSHModeEnv, brokerMuxQUICBootstrapCommand) | |
| 454 | + | t.Setenv(fakeSSHModeEnv, ports.BrokerMuxQUICBootstrapCommand) | |
| 455 | 455 | writeMuxRoot(t, map[string]any{ | |
| 456 | 456 | "kind": "ssh-quic", | |
| 457 | 457 | "target": "127.0.0.1", | |
| 458 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | |
| 458 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, | |
| 459 | 459 | }) | |
| 460 | 460 | ||
| 461 | 461 | socketPath, stop := startMuxBrokerServe(t) | |
| @@ -484,7 +484,7 @@ func TestBrokerMuxQUICRejectsBadPinWithoutLeakingSecret(t *testing.T) { | |||
| 484 | 484 | route, target := loadTestRouteTarget(t, map[string]any{ | |
| 485 | 485 | "kind": "ssh-quic", | |
| 486 | 486 | "target": "127.0.0.1", | |
| 487 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | |
| 487 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, | |
| 488 | 488 | }) | |
| 489 | 489 | ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) | |
| 490 | 490 | defer cancel() | |
| @@ -514,7 +514,7 @@ func TestBrokerMuxQUICRejectsExpiredReadiness(t *testing.T) { | |||
| 514 | 514 | route, target := loadTestRouteTarget(t, map[string]any{ | |
| 515 | 515 | "kind": "ssh-quic", | |
| 516 | 516 | "target": "127.0.0.1", | |
| 517 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | |
| 517 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, | |
| 518 | 518 | }) | |
| 519 | 519 | _, err := dialBrokerRoute(context.Background(), route, target, slog.New(slog.NewTextHandler(io.Discard, nil))) | |
| 520 | 520 | require.Error(t, err) | |
| @@ -534,7 +534,7 @@ func TestBrokerMuxDialCancellationReapsBootstrap(t *testing.T) { | |||
| 534 | 534 | route, target := loadTestRouteTarget(t, map[string]any{ | |
| 535 | 535 | "kind": "ssh-quic", | |
| 536 | 536 | "target": "127.0.0.1", | |
| 537 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | |
| 537 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, | |
| 538 | 538 | }) | |
| 539 | 539 | ctx, cancel := context.WithTimeout(context.Background(), 150*time.Millisecond) | |
| 540 | 540 | defer cancel() | |
| @@ -562,7 +562,7 @@ func TestBrokerMuxDialFloodedStderrIsReapedAndSanitized(t *testing.T) { | |||
| 562 | 562 | route, target := loadTestRouteTarget(t, map[string]any{ | |
| 563 | 563 | "kind": "ssh-quic", | |
| 564 | 564 | "target": "127.0.0.1", | |
| 565 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | |
| 565 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, | |
| 566 | 566 | }) | |
| 567 | 567 | ||
| 568 | 568 | var logs bytes.Buffer | |
| @@ -606,7 +606,7 @@ func TestBrokerMuxDialStalledBootstrapUsesSetupTimeout(t *testing.T) { | |||
| 606 | 606 | route, target := loadTestRouteTarget(t, map[string]any{ | |
| 607 | 607 | "kind": "ssh-quic", | |
| 608 | 608 | "target": "127.0.0.1", | |
| 609 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | |
| 609 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, | |
| 610 | 610 | }) | |
| 611 | 611 | start := time.Now() | |
| 612 | 612 | _, err := dialBrokerRoute(context.Background(), route, target, slog.New(slog.NewTextHandler(io.Discard, nil))) | |
| @@ -156,7 +156,7 @@ func remoteMuxFixture(t *testing.T, policy ports.BrokerPolicy) *brokerMuxFixture | |||||
| 156 | 156 | ||||
| 157 | // cleanup kills every recorded mux helper process. | 157 | // cleanup kills every recorded mux helper process. | ||
| 158 | func (e *muxTestEnv) cleanup() { | 158 | func (e *muxTestEnv) cleanup() { | ||
| 159 | - | for _, role := range []string{brokerMuxStdioCommand, brokerMuxQUICBootstrapCommand, brokerMuxQUICProxyCommand} { | 159 | + | for _, role := range []string{ports.BrokerMuxStdioCommand, ports.BrokerMuxQUICBootstrapCommand, brokerMuxQUICProxyCommand} { |
| 160 | raw, err := os.ReadFile(filepath.Join(e.recordDir, role+".pids")) | 160 | raw, err := os.ReadFile(filepath.Join(e.recordDir, role+".pids")) | ||
| 161 | if err != nil { | 161 | if err != nil { | ||
| 162 | continue | 162 | continue | ||
| @@ -260,7 +260,7 @@ func TestParseBrokerMuxArgs(t *testing.T) { | |||||
| 260 | } | 260 | } | ||
| 261 | for _, tt := range tests { | 261 | for _, tt := range tests { | ||
| 262 | t.Run(tt.name, func(t *testing.T) { | 262 | t.Run(tt.name, func(t *testing.T) { | ||
| 263 | - | command, err := parseBrokerMuxArgs(brokerMuxStdioCommand, kindBrokerMuxStdio, tt.args) | 263 | + | command, err := parseBrokerMuxArgs(ports.BrokerMuxStdioCommand, kindBrokerMuxStdio, tt.args) |
| 264 | if tt.wantErr != "" { | 264 | if tt.wantErr != "" { | ||
| 265 | require.Error(t, err) | 265 | require.Error(t, err) | ||
| 266 | require.Contains(t, err.Error(), tt.wantErr) | 266 | require.Contains(t, err.Error(), tt.wantErr) | ||
| @@ -279,8 +279,8 @@ func TestBrokerMuxHelpersHiddenFromPublicHelp(t *testing.T) { | |||||
| 279 | name string | 279 | name string | ||
| 280 | kind cmdKind | 280 | kind cmdKind | ||
| 281 | }{ | 281 | }{ | ||
| 282 | - | {brokerMuxStdioCommand, kindBrokerMuxStdio}, | 282 | + | {ports.BrokerMuxStdioCommand, kindBrokerMuxStdio}, |
| 283 | - | {brokerMuxQUICBootstrapCommand, kindBrokerMuxQUICBootstrap}, | 283 | + | {ports.BrokerMuxQUICBootstrapCommand, kindBrokerMuxQUICBootstrap}, |
| 284 | {brokerMuxQUICProxyCommand, kindBrokerMuxQUICProxy}, | 284 | {brokerMuxQUICProxyCommand, kindBrokerMuxQUICProxy}, | ||
| 285 | } { | 285 | } { | ||
| 286 | require.NotContains(t, usageText, tt.name) | 286 | require.NotContains(t, usageText, tt.name) | ||
| @@ -305,7 +305,7 @@ func TestSSHMuxCommandSpecPreservesTrustAndNoPTY(t *testing.T) { | |||||
| 305 | route := loadTestRoute(t, map[string]any{ | 305 | route := loadTestRoute(t, map[string]any{ | ||
| 306 | "kind": "ssh-stdio", | 306 | "kind": "ssh-stdio", | ||
| 307 | "target": "user@host:2222", | 307 | "target": "user@host:2222", | ||
| 308 | - | "argv": []any{"vev", brokerMuxStdioCommand, "--production"}, | 308 | + | "argv": []any{"vev", ports.BrokerMuxStdioCommand, "--production"}, |
| 309 | "trust": map[string]any{"knownHostsFile": "/etc/ssh/known_hosts", "connectTimeout": "30s"}, | 309 | "trust": map[string]any{"knownHostsFile": "/etc/ssh/known_hosts", "connectTimeout": "30s"}, | ||
| 310 | }) | 310 | }) | ||
| 311 | spec, err := sshMuxCommandSpec(route, ports.BrokerDaemonStartIfNeeded) | 311 | spec, err := sshMuxCommandSpec(route, ports.BrokerDaemonStartIfNeeded) | ||
| @@ -317,7 +317,7 @@ func TestSSHMuxCommandSpecPreservesTrustAndNoPTY(t *testing.T) { | |||||
| 317 | require.Contains(t, spec.Args, "ConnectTimeout=30") | 317 | require.Contains(t, spec.Args, "ConnectTimeout=30") | ||
| 318 | joined := strings.Join(spec.Args, " ") | 318 | joined := strings.Join(spec.Args, " ") | ||
| 319 | require.Contains(t, joined, "-- user@host:2222 ") | 319 | require.Contains(t, joined, "-- user@host:2222 ") | ||
| 320 | - | require.Contains(t, joined, brokerMuxStdioCommand) | 320 | + | require.Contains(t, joined, ports.BrokerMuxStdioCommand) |
| 321 | require.Contains(t, joined, "'"+brokerDaemonStartArg+"' 'if-needed'") | 321 | require.Contains(t, joined, "'"+brokerDaemonStartArg+"' 'if-needed'") | ||
| 322 | require.NotContains(t, joined, "StrictHostKeyChecking") | 322 | require.NotContains(t, joined, "StrictHostKeyChecking") | ||
| 323 | require.NotContains(t, joined, "BatchMode") | 323 | require.NotContains(t, joined, "BatchMode") | ||
| @@ -333,7 +333,7 @@ func TestSSHMuxCommandSpecPreservesTrustAndNoPTY(t *testing.T) { | |||||
| 333 | plain := loadTestRoute(t, map[string]any{ | 333 | plain := loadTestRoute(t, map[string]any{ | ||
| 334 | "kind": "ssh-quic", | 334 | "kind": "ssh-quic", | ||
| 335 | "target": "host", | 335 | "target": "host", | ||
| 336 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | 336 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, |
| 337 | }) | 337 | }) | ||
| 338 | plainSpec, err := sshMuxCommandSpec(plain, ports.BrokerDaemonExistingOnly) | 338 | plainSpec, err := sshMuxCommandSpec(plain, ports.BrokerDaemonExistingOnly) | ||
| 339 | require.NoError(t, err) | 339 | require.NoError(t, err) | ||
| @@ -350,7 +350,7 @@ func TestSSHMuxCommandSpecRefusesUnknownStartMode(t *testing.T) { | |||||
| 350 | route := loadTestRoute(t, map[string]any{ | 350 | route := loadTestRoute(t, map[string]any{ | ||
| 351 | "kind": "ssh-stdio", | 351 | "kind": "ssh-stdio", | ||
| 352 | "target": "host", | 352 | "target": "host", | ||
| 353 | - | "argv": []any{"vev", brokerMuxStdioCommand, "--production"}, | 353 | + | "argv": []any{"vev", ports.BrokerMuxStdioCommand, "--production"}, |
| 354 | }) | 354 | }) | ||
| 355 | _, err := sshMuxCommandSpec(route, ports.BrokerDaemonStartMode(0)) | 355 | _, err := sshMuxCommandSpec(route, ports.BrokerDaemonStartMode(0)) | ||
| 356 | require.Error(t, err) | 356 | require.Error(t, err) | ||
| @@ -403,7 +403,7 @@ func TestBrokerQUICPeerAddr(t *testing.T) { | |||||
| 403 | func TestBrokerMuxHelperReturnsTypedNoDaemonExit(t *testing.T) { | 403 | func TestBrokerMuxHelperReturnsTypedNoDaemonExit(t *testing.T) { | ||
| 404 | emptyProductionBrokerLayout(t, "") | 404 | emptyProductionBrokerLayout(t, "") | ||
| 405 | emptyProductionBrokerLayout(t, "") | 405 | emptyProductionBrokerLayout(t, "") | ||
| 406 | - | parsed, err := parseBrokerMuxArgs(brokerMuxStdioCommand, kindBrokerMuxStdio, []string{"--production"}) | 406 | + | parsed, err := parseBrokerMuxArgs(ports.BrokerMuxStdioCommand, kindBrokerMuxStdio, []string{"--production"}) |
| 407 | require.NoError(t, err) | 407 | require.NoError(t, err) | ||
| 408 | err = runBrokerMuxStdioCommand(context.Background(), parsed.brokerMux) | 408 | err = runBrokerMuxStdioCommand(context.Background(), parsed.brokerMux) | ||
| 409 | var coded *exitCoded | 409 | var coded *exitCoded | ||
| @@ -419,11 +419,11 @@ func TestBrokerServeSSHStdioRouteRoundTrip(t *testing.T) { | |||||
| 419 | policy := brokerTestPolicy() | 419 | policy := brokerTestPolicy() | ||
| 420 | fixture := remoteMuxFixture(t, policy) | 420 | fixture := remoteMuxFixture(t, policy) | ||
| 421 | argsFile := installFakeSSH(t, fakeSSHExecHelper) | 421 | argsFile := installFakeSSH(t, fakeSSHExecHelper) | ||
| 422 | - | t.Setenv(fakeSSHModeEnv, brokerMuxStdioCommand) | 422 | + | t.Setenv(fakeSSHModeEnv, ports.BrokerMuxStdioCommand) |
| 423 | writeMuxRoot(t, map[string]any{ | 423 | writeMuxRoot(t, map[string]any{ | ||
| 424 | "kind": "ssh-stdio", | 424 | "kind": "ssh-stdio", | ||
| 425 | "target": "user@muxhost:2222", | 425 | "target": "user@muxhost:2222", | ||
| 426 | - | "argv": []any{"vev", brokerMuxStdioCommand, "--production"}, | 426 | + | "argv": []any{"vev", ports.BrokerMuxStdioCommand, "--production"}, |
| 427 | }) | 427 | }) | ||
| 428 | 428 | ||||
| 429 | socketPath, stop := startMuxBrokerServe(t) | 429 | socketPath, stop := startMuxBrokerServe(t) | ||
| @@ -435,7 +435,7 @@ func TestBrokerServeSSHStdioRouteRoundTrip(t *testing.T) { | |||||
| 435 | argv := readFileString(t, argsFile) | 435 | argv := readFileString(t, argsFile) | ||
| 436 | require.Contains(t, argv, "-T\n") | 436 | require.Contains(t, argv, "-T\n") | ||
| 437 | require.Contains(t, argv, "--\nuser@muxhost:2222\n") | 437 | require.Contains(t, argv, "--\nuser@muxhost:2222\n") | ||
| 438 | - | require.Contains(t, argv, brokerMuxStdioCommand) | 438 | + | require.Contains(t, argv, ports.BrokerMuxStdioCommand) |
| 439 | require.NotContains(t, argv, "UserKnownHostsFile=") | 439 | require.NotContains(t, argv, "UserKnownHostsFile=") | ||
| 440 | require.NotContains(t, argv, "StrictHostKeyChecking") | 440 | require.NotContains(t, argv, "StrictHostKeyChecking") | ||
| 441 | require.NotContains(t, argv, "BatchMode") | 441 | require.NotContains(t, argv, "BatchMode") | ||
| @@ -451,11 +451,11 @@ func TestBrokerServeSSHQUICRouteRoundTrip(t *testing.T) { | |||||
| 451 | policy := brokerTestPolicy() | 451 | policy := brokerTestPolicy() | ||
| 452 | fixture := remoteMuxFixture(t, policy) | 452 | fixture := remoteMuxFixture(t, policy) | ||
| 453 | installFakeSSH(t, fakeSSHExecHelper) | 453 | installFakeSSH(t, fakeSSHExecHelper) | ||
| 454 | - | t.Setenv(fakeSSHModeEnv, brokerMuxQUICBootstrapCommand) | 454 | + | t.Setenv(fakeSSHModeEnv, ports.BrokerMuxQUICBootstrapCommand) |
| 455 | writeMuxRoot(t, map[string]any{ | 455 | writeMuxRoot(t, map[string]any{ | ||
| 456 | "kind": "ssh-quic", | 456 | "kind": "ssh-quic", | ||
| 457 | "target": "127.0.0.1", | 457 | "target": "127.0.0.1", | ||
| 458 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | 458 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, |
| 459 | }) | 459 | }) | ||
| 460 | 460 | ||||
| 461 | socketPath, stop := startMuxBrokerServe(t) | 461 | socketPath, stop := startMuxBrokerServe(t) | ||
| @@ -484,7 +484,7 @@ func TestBrokerMuxQUICRejectsBadPinWithoutLeakingSecret(t *testing.T) { | |||||
| 484 | route, target := loadTestRouteTarget(t, map[string]any{ | 484 | route, target := loadTestRouteTarget(t, map[string]any{ | ||
| 485 | "kind": "ssh-quic", | 485 | "kind": "ssh-quic", | ||
| 486 | "target": "127.0.0.1", | 486 | "target": "127.0.0.1", | ||
| 487 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | 487 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, |
| 488 | }) | 488 | }) | ||
| 489 | ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) | 489 | ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) | ||
| 490 | defer cancel() | 490 | defer cancel() | ||
| @@ -514,7 +514,7 @@ func TestBrokerMuxQUICRejectsExpiredReadiness(t *testing.T) { | |||||
| 514 | route, target := loadTestRouteTarget(t, map[string]any{ | 514 | route, target := loadTestRouteTarget(t, map[string]any{ | ||
| 515 | "kind": "ssh-quic", | 515 | "kind": "ssh-quic", | ||
| 516 | "target": "127.0.0.1", | 516 | "target": "127.0.0.1", | ||
| 517 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | 517 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, |
| 518 | }) | 518 | }) | ||
| 519 | _, err := dialBrokerRoute(context.Background(), route, target, slog.New(slog.NewTextHandler(io.Discard, nil))) | 519 | _, err := dialBrokerRoute(context.Background(), route, target, slog.New(slog.NewTextHandler(io.Discard, nil))) | ||
| 520 | require.Error(t, err) | 520 | require.Error(t, err) | ||
| @@ -534,7 +534,7 @@ func TestBrokerMuxDialCancellationReapsBootstrap(t *testing.T) { | |||||
| 534 | route, target := loadTestRouteTarget(t, map[string]any{ | 534 | route, target := loadTestRouteTarget(t, map[string]any{ | ||
| 535 | "kind": "ssh-quic", | 535 | "kind": "ssh-quic", | ||
| 536 | "target": "127.0.0.1", | 536 | "target": "127.0.0.1", | ||
| 537 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | 537 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, |
| 538 | }) | 538 | }) | ||
| 539 | ctx, cancel := context.WithTimeout(context.Background(), 150*time.Millisecond) | 539 | ctx, cancel := context.WithTimeout(context.Background(), 150*time.Millisecond) | ||
| 540 | defer cancel() | 540 | defer cancel() | ||
| @@ -562,7 +562,7 @@ func TestBrokerMuxDialFloodedStderrIsReapedAndSanitized(t *testing.T) { | |||||
| 562 | route, target := loadTestRouteTarget(t, map[string]any{ | 562 | route, target := loadTestRouteTarget(t, map[string]any{ | ||
| 563 | "kind": "ssh-quic", | 563 | "kind": "ssh-quic", | ||
| 564 | "target": "127.0.0.1", | 564 | "target": "127.0.0.1", | ||
| 565 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | 565 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, |
| 566 | }) | 566 | }) | ||
| 567 | 567 | ||||
| 568 | var logs bytes.Buffer | 568 | var logs bytes.Buffer | ||
| @@ -606,7 +606,7 @@ func TestBrokerMuxDialStalledBootstrapUsesSetupTimeout(t *testing.T) { | |||||
| 606 | route, target := loadTestRouteTarget(t, map[string]any{ | 606 | route, target := loadTestRouteTarget(t, map[string]any{ | ||
| 607 | "kind": "ssh-quic", | 607 | "kind": "ssh-quic", | ||
| 608 | "target": "127.0.0.1", | 608 | "target": "127.0.0.1", | ||
| 609 | - | "argv": []any{"vev", brokerMuxQUICBootstrapCommand, "--production"}, | 609 | + | "argv": []any{"vev", ports.BrokerMuxQUICBootstrapCommand, "--production"}, |
| 610 | }) | 610 | }) | ||
| 611 | start := time.Now() | 611 | start := time.Now() | ||
| 612 | _, err := dialBrokerRoute(context.Background(), route, target, slog.New(slog.NewTextHandler(io.Discard, nil))) | 612 | _, err := dialBrokerRoute(context.Background(), route, target, slog.New(slog.NewTextHandler(io.Discard, nil))) | ||
M internal/app/broker_routes_test.go +1 -1
| @@ -52,7 +52,7 @@ func TestBrokerRoutesDurableFirstAddAndRestart(t *testing.T) { | |||
| 52 | 52 | route, err := brokerconfig.RouteFromSpec(spec) | |
| 53 | 53 | require.NoError(t, err) | |
| 54 | 54 | require.Equal(t, brokerconfig.RouteSSHStdio, route.Kind()) | |
| 55 | - | require.Equal(t, []string{"vev", brokerMuxStdioCommand, "--production"}, route.Argv()) | |
| 55 | + | require.Equal(t, []string{"vev", ports.BrokerMuxStdioCommand, "--production"}, route.Argv()) | |
| 56 | 56 | identity, err := registry.BindAuthenticatedIdentity(ctx, ports.BrokerIdentityBindingRequest{Fence: target.Fence, Policy: policy, Identity: "daemon-test"}) | |
| 57 | 57 | require.NoError(t, err) | |
| 58 | 58 | _, err = routes.AuthorizeRemoteDial(ctx, target) | |
| @@ -52,7 +52,7 @@ func TestBrokerRoutesDurableFirstAddAndRestart(t *testing.T) { | |||||
| 52 | route, err := brokerconfig.RouteFromSpec(spec) | 52 | route, err := brokerconfig.RouteFromSpec(spec) | ||
| 53 | require.NoError(t, err) | 53 | require.NoError(t, err) | ||
| 54 | require.Equal(t, brokerconfig.RouteSSHStdio, route.Kind()) | 54 | require.Equal(t, brokerconfig.RouteSSHStdio, route.Kind()) | ||
| 55 | - | require.Equal(t, []string{"vev", brokerMuxStdioCommand, "--production"}, route.Argv()) | 55 | + | require.Equal(t, []string{"vev", ports.BrokerMuxStdioCommand, "--production"}, route.Argv()) |
| 56 | identity, err := registry.BindAuthenticatedIdentity(ctx, ports.BrokerIdentityBindingRequest{Fence: target.Fence, Policy: policy, Identity: "daemon-test"}) | 56 | identity, err := registry.BindAuthenticatedIdentity(ctx, ports.BrokerIdentityBindingRequest{Fence: target.Fence, Policy: policy, Identity: "daemon-test"}) | ||
| 57 | require.NoError(t, err) | 57 | require.NoError(t, err) | ||
| 58 | _, err = routes.AuthorizeRemoteDial(ctx, target) | 58 | _, err = routes.AuthorizeRemoteDial(ctx, target) | ||
M internal/app/cli.go +5 -4
| @@ -5,6 +5,7 @@ import ( | |||
| 5 | 5 | "strings" | |
| 6 | 6 | ||
| 7 | 7 | "github.com/bnema/vev/internal/domain" | |
| 8 | + | "github.com/bnema/vev/internal/ports" | |
| 8 | 9 | "github.com/bnema/vev/internal/protocol" | |
| 9 | 10 | ) | |
| 10 | 11 | ||
| @@ -172,10 +173,10 @@ func parseSubcommand(args []string) (command, error) { | |||
| 172 | 173 | case brokerReadyCommand: | |
| 173 | 174 | options, err := parseBrokerReadyArgs(args[1:]) | |
| 174 | 175 | return command{kind: kindBrokerReady, brokerReady: options}, err | |
| 175 | - | case brokerMuxStdioCommand: | |
| 176 | - | return parseBrokerMuxArgs(brokerMuxStdioCommand, kindBrokerMuxStdio, args[1:]) | |
| 177 | - | case brokerMuxQUICBootstrapCommand: | |
| 178 | - | return parseBrokerMuxArgs(brokerMuxQUICBootstrapCommand, kindBrokerMuxQUICBootstrap, args[1:]) | |
| 176 | + | case ports.BrokerMuxStdioCommand: | |
| 177 | + | return parseBrokerMuxArgs(ports.BrokerMuxStdioCommand, kindBrokerMuxStdio, args[1:]) | |
| 178 | + | case ports.BrokerMuxQUICBootstrapCommand: | |
| 179 | + | return parseBrokerMuxArgs(ports.BrokerMuxQUICBootstrapCommand, kindBrokerMuxQUICBootstrap, args[1:]) | |
| 179 | 180 | case brokerMuxQUICProxyCommand: | |
| 180 | 181 | return parseBrokerMuxArgs(brokerMuxQUICProxyCommand, kindBrokerMuxQUICProxy, args[1:]) | |
| 181 | 182 | case uiRemoteCleanupCommand: | |
| @@ -5,6 +5,7 @@ import ( | |||||
| 5 | "strings" | 5 | "strings" | ||
| 6 | 6 | ||||
| 7 | "github.com/bnema/vev/internal/domain" | 7 | "github.com/bnema/vev/internal/domain" | ||
| 8 | + | "github.com/bnema/vev/internal/ports" | |||
| 8 | "github.com/bnema/vev/internal/protocol" | 9 | "github.com/bnema/vev/internal/protocol" | ||
| 9 | ) | 10 | ) | ||
| 10 | 11 | ||||
| @@ -172,10 +173,10 @@ func parseSubcommand(args []string) (command, error) { | |||||
| 172 | case brokerReadyCommand: | 173 | case brokerReadyCommand: | ||
| 173 | options, err := parseBrokerReadyArgs(args[1:]) | 174 | options, err := parseBrokerReadyArgs(args[1:]) | ||
| 174 | return command{kind: kindBrokerReady, brokerReady: options}, err | 175 | return command{kind: kindBrokerReady, brokerReady: options}, err | ||
| 175 | - | case brokerMuxStdioCommand: | 176 | + | case ports.BrokerMuxStdioCommand: |
| 176 | - | return parseBrokerMuxArgs(brokerMuxStdioCommand, kindBrokerMuxStdio, args[1:]) | 177 | + | return parseBrokerMuxArgs(ports.BrokerMuxStdioCommand, kindBrokerMuxStdio, args[1:]) |
| 177 | - | case brokerMuxQUICBootstrapCommand: | 178 | + | case ports.BrokerMuxQUICBootstrapCommand: |
| 178 | - | return parseBrokerMuxArgs(brokerMuxQUICBootstrapCommand, kindBrokerMuxQUICBootstrap, args[1:]) | 179 | + | return parseBrokerMuxArgs(ports.BrokerMuxQUICBootstrapCommand, kindBrokerMuxQUICBootstrap, args[1:]) |
| 179 | case brokerMuxQUICProxyCommand: | 180 | case brokerMuxQUICProxyCommand: | ||
| 180 | return parseBrokerMuxArgs(brokerMuxQUICProxyCommand, kindBrokerMuxQUICProxy, args[1:]) | 181 | return parseBrokerMuxArgs(brokerMuxQUICProxyCommand, kindBrokerMuxQUICProxy, args[1:]) | ||
| 181 | case uiRemoteCleanupCommand: | 182 | case uiRemoteCleanupCommand: | ||
M internal/app/spawn_test.go +3 -1
| @@ -12,6 +12,8 @@ import ( | |||
| 12 | 12 | "syscall" | |
| 13 | 13 | "testing" | |
| 14 | 14 | "time" | |
| 15 | + | ||
| 16 | + | "github.com/bnema/vev/internal/ports" | |
| 15 | 17 | ) | |
| 16 | 18 | ||
| 17 | 19 | const ( | |
| @@ -28,7 +30,7 @@ func TestMain(m *testing.M) { | |||
| 28 | 30 | // runs. | |
| 29 | 31 | if len(os.Args) >= 2 && os.Getenv(brokerHelperEnv) == "1" { | |
| 30 | 32 | switch os.Args[1] { | |
| 31 | - | case brokerMuxStdioCommand, brokerMuxQUICBootstrapCommand, brokerMuxQUICProxyCommand, | |
| 33 | + | case ports.BrokerMuxStdioCommand, ports.BrokerMuxQUICBootstrapCommand, brokerMuxQUICProxyCommand, | |
| 32 | 34 | brokerReadyCommand, | |
| 33 | 35 | productionBrokerServeCommand, productionBrokerLauncherCommand, "--daemon": | |
| 34 | 36 | recordBrokerHelperProcess(os.Args[1]) | |
| @@ -12,6 +12,8 @@ import ( | |||||
| 12 | "syscall" | 12 | "syscall" | ||
| 13 | "testing" | 13 | "testing" | ||
| 14 | "time" | 14 | "time" | ||
| 15 | + | ||||
| 16 | + | "github.com/bnema/vev/internal/ports" | |||
| 15 | ) | 17 | ) | ||
| 16 | 18 | ||||
| 17 | const ( | 19 | const ( | ||
| @@ -28,7 +30,7 @@ func TestMain(m *testing.M) { | |||||
| 28 | // runs. | 30 | // runs. | ||
| 29 | if len(os.Args) >= 2 && os.Getenv(brokerHelperEnv) == "1" { | 31 | if len(os.Args) >= 2 && os.Getenv(brokerHelperEnv) == "1" { | ||
| 30 | switch os.Args[1] { | 32 | switch os.Args[1] { | ||
| 31 | - | case brokerMuxStdioCommand, brokerMuxQUICBootstrapCommand, brokerMuxQUICProxyCommand, | 33 | + | case ports.BrokerMuxStdioCommand, ports.BrokerMuxQUICBootstrapCommand, brokerMuxQUICProxyCommand, |
| 32 | brokerReadyCommand, | 34 | brokerReadyCommand, | ||
| 33 | productionBrokerServeCommand, productionBrokerLauncherCommand, "--daemon": | 35 | productionBrokerServeCommand, productionBrokerLauncherCommand, "--daemon": | ||
| 34 | recordBrokerHelperProcess(os.Args[1]) | 36 | recordBrokerHelperProcess(os.Args[1]) | ||