コード例 #1
0
        public void IsLocalReturnsTrueForSameMachineName()
        {
            var uri    = "tcp://" + Environment.MachineName + ":21234/CruiseManager.rem";
            var actual = RemoteServerUri.IsLocal(uri);

            Assert.IsTrue(actual);
        }
コード例 #2
0
        public void IsLocalReturnsFalseForDifferentMachineName()
        {
            var uri    = "tcp://d" + Environment.MachineName + "d:21234/CruiseManager.rem";
            var actual = RemoteServerUri.IsLocal(uri);

            Assert.IsFalse(actual);
        }
コード例 #3
0
        public void IsLocalReturnsTrueFor127001()
        {
            var uri    = "tcp://127.0.0.1:21234/CruiseManager.rem";
            var actual = RemoteServerUri.IsLocal(uri);

            Assert.IsTrue(actual);
        }
コード例 #4
0
        public void IsLocalReturnsTrueForLocal()
        {
            var uri    = "tcp://localhost:21234/CruiseManager.rem";
            var actual = RemoteServerUri.IsLocal(uri);

            Assert.IsTrue(actual);
        }
コード例 #5
0
        /// <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;
        }
コード例 #6
0
        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();
                }
            }
        }
コード例 #7
0
        /// <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);
        }