feat: add preferred debug port planning
This commit is contained in:
+36
-4
@@ -38,6 +38,30 @@ func TestInstanceStarterBuildsLaunchSpecFromInstanceAndSettings(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestInstanceStarterUsesPreferredPortAndSkipsOtherInstancesReservations(t *testing.T) {
|
||||
launcher := &fakeProcessLauncher{handle: fakeProcessHandle{pid: 4242}}
|
||||
remote := &fakeRemoteDebugInspector{
|
||||
endpoint: browser.RemoteDebugEndpoint{Port: 9668},
|
||||
inspectErr: browser.ErrRemoteDebugEndpointUnavailable,
|
||||
allocatedPorts: []int{9667, 9668},
|
||||
}
|
||||
starter := instanceStarter{
|
||||
launcher: launcher,
|
||||
resolver: &fakeExecutableResolver{path: `C:\Browser\chrome.exe`},
|
||||
managedProfiles: fakeManagedProfileInspector{},
|
||||
externalProfiles: fakeExternalProfileInspector{},
|
||||
remoteDebug: remote,
|
||||
portAllocator: remote,
|
||||
}
|
||||
outcome, err := starter.Start(context.Background(), ui.InstanceRow{ID: "chrome-a", Browser: "Chrome", UserDataDir: `C:\profiles\chrome-a`, PreferredRemoteDebugPort: 9666}, ui.SettingsState{RemoteDebugStartPort: 9777, ReservedRemoteDebugPorts: []int{9667}}, 1)
|
||||
if err != nil || outcome.RemoteDebugPort != 9668 || launcher.spec.RemoteDebugPort != 9668 {
|
||||
t.Fatalf("Start() = %#v, launch = %#v, error = %v", outcome, launcher.spec, err)
|
||||
}
|
||||
if len(remote.allocationStarts) != 2 || remote.allocationStarts[0] != 9666 || remote.allocationStarts[1] != 9668 {
|
||||
t.Fatalf("allocator starts = %#v", remote.allocationStarts)
|
||||
}
|
||||
}
|
||||
|
||||
func TestInstanceStarterResolvesSelectedProxyAtLaunch(t *testing.T) {
|
||||
launcher := &fakeProcessLauncher{handle: fakeProcessHandle{pid: 4242}}
|
||||
resolver := &fakeExecutableResolver{path: `C:\Browser\chrome.exe`}
|
||||
@@ -341,10 +365,12 @@ func (i fakeExternalProfileInspector) InspectProfile(context.Context, domain.Bro
|
||||
}
|
||||
|
||||
type fakeRemoteDebugInspector struct {
|
||||
endpoint browser.RemoteDebugEndpoint
|
||||
inspectErr error
|
||||
waitErr error
|
||||
port int
|
||||
endpoint browser.RemoteDebugEndpoint
|
||||
inspectErr error
|
||||
waitErr error
|
||||
port int
|
||||
allocatedPorts []int
|
||||
allocationStarts []int
|
||||
}
|
||||
|
||||
func (i *fakeRemoteDebugInspector) InspectRemoteDebugEndpoint(context.Context, domain.BrowserKind, string) (browser.RemoteDebugEndpoint, error) {
|
||||
@@ -364,6 +390,12 @@ func (i *fakeRemoteDebugInspector) WaitForRemoteDebugPort(context.Context, domai
|
||||
}
|
||||
|
||||
func (i *fakeRemoteDebugInspector) FindAvailableRemoteDebugPort(_ context.Context, start int) (int, error) {
|
||||
i.allocationStarts = append(i.allocationStarts, start)
|
||||
if len(i.allocatedPorts) > 0 {
|
||||
port := i.allocatedPorts[0]
|
||||
i.allocatedPorts = i.allocatedPorts[1:]
|
||||
return port, nil
|
||||
}
|
||||
if i.port != 0 {
|
||||
return i.port, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user