/** * Returns a cloud debugger connection given {@link CloudDebugProcessState} to indicate the * credentials to use. The function may return null if the user is not logged in. TODO: Create a * better experience attaching when not logged in TODO: Handle cases where the user logs out in * the middle of a debug session. */ @Nullable public static Debugger getLongTimeoutClient(final @NotNull CloudDebugProcessState state) { return getClient(state.getUserEmail(), LONG_CONNECTION_TIMEOUT_MS); }
public static Debugger getShortTimeoutClient(final @NotNull CloudDebugProcessState state) { return getClient(state.getUserEmail(), SHORT_CONNECTION_TIMEOUT_MS); }
public void setInputState(@Nullable CloudDebugProcessState inputState) { this.inputState = inputState; if (this.inputState != null && !Strings.isNullOrEmpty(this.inputState.getProjectName()) && !Strings.isNullOrEmpty(this.inputState.getUserEmail())) { Long projectNumber = null; if (!Strings.isNullOrEmpty(this.inputState.getProjectNumber())) { projectNumber = Long.parseLong(this.inputState.getProjectNumber()); } projectSelector.setSelectedProject( CloudProject.create( this.inputState.getProjectName(), // TODO(ivanporty) add separate project name/ID this.inputState.getProjectName(), projectNumber, this.inputState.getUserEmail())); // update the state here as well refreshDebugTargetList(projectSelector.getSelectedProject()); } }
private void setupMocks() { GoogleLoginState googleLoginState = mock(GoogleLoginState.class); CredentialedUser credentialedUser = mock(CredentialedUser.class); when(credentialedUser.getGoogleLoginState()).thenReturn(googleLoginState); LinkedHashMap<String, CredentialedUser> users = new LinkedHashMap<String, CredentialedUser>(); users.put("mockUser@foo.bar", credentialedUser); when(mockLoginService.getAllUsers()).thenReturn(users); CloudDebugProcessState cloudDebugProcessState = mock(CloudDebugProcessState.class); when(cloudDebugProcessState.getUserEmail()).thenReturn("mockUser@foo.bar"); CloudDebugProcess cloudDebugProcess = mock(CloudDebugProcess.class); when(cloudDebugProcess.getProcessState()).thenReturn(cloudDebugProcessState); handler = new CloudDebugProcessHandler(cloudDebugProcess); } }
/** Initialize the cloud debug process handler. */ public CloudDebugProcessHandler(@NotNull CloudDebugProcess process) { this.process = process; if (process.getProcessState() != null) { String userEmail = process.getProcessState().getUserEmail(); if (userEmail != null) { final CredentialedUser user = Services.getLoginService().getAllUsers().get(userEmail); if (user.getGoogleLoginState() != null) { user.getGoogleLoginState() .addLoginListener(new LogoutDebugProcessDetacher<CloudDebugProcessHandler>(this)); } else { LOG.error( "GoogleLoginState is null. To launch a debug session user needs to be logged in"); } } else { LOG.error("userEmail is null. To launch a debug session user needs to be logged in"); } } else { LOG.error("process state is null."); } }
public void testSerialization() throws IOException { CloudDebugProcessState state = new CloudDebugProcessState("emailUser", "debuggeeId", "projectName", "projectNumber", null); Element element = XmlSerializer.serialize(state); state = XmlSerializer.deserialize(element, CloudDebugProcessState.class); assertNotNull(state); assertTrue("debuggeeId".equals(state.getDebuggeeId())); assertTrue("emailUser".equals(state.getUserEmail())); assertTrue("projectName".equals(state.getProjectName())); assertTrue("projectNumber".equals(state.getProjectNumber())); }
users.put(state.getUserEmail(), credentialedUser);
assertEquals(USER, state.getUserEmail()); CloudDebuggerClient.setClient(state.getUserEmail() + 120000, client);
assertEquals(USER, state.getUserEmail()); CloudDebuggerClient.setClient(state.getUserEmail() + 120000, client);