public void IsLocalReturnsTrueForSameMachineName() { var uri = "tcp://" + Environment.MachineName + ":21234/CruiseManager.rem"; var actual = RemoteServerUri.IsLocal(uri); Assert.IsTrue(actual); }
public void IsLocalReturnsFalseForDifferentMachineName() { var uri = "tcp://d" + Environment.MachineName + "d:21234/CruiseManager.rem"; var actual = RemoteServerUri.IsLocal(uri); Assert.IsFalse(actual); }
public void IsLocalReturnsTrueFor127001() { var uri = "tcp://127.0.0.1:21234/CruiseManager.rem"; var actual = RemoteServerUri.IsLocal(uri); Assert.IsTrue(actual); }
public void IsLocalReturnsTrueForLocal() { var uri = "tcp://localhost:21234/CruiseManager.rem"; var actual = RemoteServerUri.IsLocal(uri); Assert.IsTrue(actual); }
/// <summary>为会话创建与远程服务器通讯的Socket。可以使用Socket池达到重用的目的。</summary> /// <param name="e"></param> /// <returns></returns> protected virtual ISocketClient CreateRemote(ReceivedEventArgs e) { var client = RemoteServerUri.CreateRemote(); // 如果是Tcp,收到空数据时不要断开。为了稳定可靠,默认设置 if (client is TcpSession tcp) tcp.DisconnectWhenEmptyData = false; return client; }
private ProjectStatus GetCurrentProjectStatus() { Log.Debug("Retrieving ProjectStatus from server: " + ServerUri); var client = factory.GenerateClient(ServerUri); var loggedIn = false; if ((SecurityCredentials != null) && (SecurityCredentials.Length > 0)) { Log.Debug("Logging in"); if (client.Login(new List <NameValuePair>(SecurityCredentials))) { loggedIn = true; Log.Debug("Logged on server, session token is " + client.SessionToken); } else { Log.Warning("Unable to login to remote server"); } } else if (RemoteServerUri.IsLocal(this.ServerUri)) { Log.Debug("Sending local server bypass"); client.SessionToken = SecurityOverride.SessionIdentifier; } try { var currentStatuses = client.GetProjectStatus(); var project = currentStatuses.FirstOrDefault(p => p.Name == Project); if (project != null) { Log.Debug("Found status for dependent project {0} is {1}", project.Name, project.BuildStatus); return(project); } throw new NoSuchProjectException(Project); } finally { if (loggedIn) { Log.Debug("Logging out"); client.Logout(); } } }
/// <summary> /// Executes the specified result. /// </summary> /// <param name="result">The result.</param> /// <returns></returns> /// <remarks></remarks> protected override bool Execute(IIntegrationResult result) { if (IntegrationStatus != result.Status) { return(false); } var logger = Logger ?? new DefaultLogger(); result.BuildProgressInformation.SignalStartRunTask(!string.IsNullOrEmpty(Description) ? Description : "Running for build publisher"); var loggedIn = false; logger.Debug("Generating client for url '{0}'", ServerUri); var client = factory.GenerateClient(ServerUri); if ((SecurityCredentials != null) && (SecurityCredentials.Length > 0)) { logger.Debug("Logging in"); if (client.Login(new List <NameValuePair>(SecurityCredentials))) { loggedIn = true; logger.Debug("Logged on server, session token is " + client.SessionToken); } else { logger.Warning("Unable to login to remote server"); } } else if (RemoteServerUri.IsLocal(this.ServerUri)) { logger.Debug("Sending local server bypass"); client.SessionToken = SecurityOverride.SessionIdentifier; } logger.Info("Sending ForceBuild request to '{0}' on '{1}'", Project, ServerUri); client.ForceBuild(Project, new List <NameValuePair>(Parameters ?? new NameValuePair[0])); if (loggedIn) { logger.Debug("Logging out"); client.Logout(); } return(true); }