예제 #1
0
        private ServerAggregatingCruiseManagerWrapper InitialiseServerWrapper(MockRepository mocks,
                                                                              Action <CruiseServerClientBase> additionalSetup)
        {
            IRemoteServicesConfiguration configuration        = mocks.DynamicMock <IRemoteServicesConfiguration>();
            ICruiseServerClientFactory   cruiseManagerFactory = mocks.DynamicMock <ICruiseServerClientFactory>();
            CruiseServerClientBase       cruiseManager        = mocks.DynamicMock <CruiseServerClientBase>();

            ServerLocation[] servers = new ServerLocation[] { serverLocation, otherServerLocation };
            SetupResult.For(configuration.Servers)
            .Return(servers);
            SetupResult.For(cruiseManagerFactory.GenerateClient("http://myurl", new ClientStartUpSettings()))
            .IgnoreArguments()
            .Return(cruiseManager);

            ServerAggregatingCruiseManagerWrapper serverWrapper = new ServerAggregatingCruiseManagerWrapper(
                configuration,
                cruiseManagerFactory);

            if (additionalSetup != null)
            {
                additionalSetup(cruiseManager);
            }

            return(serverWrapper);
        }
예제 #2
0
 private ProjectStatus GetProjectStatus()
 {
     using (var client = factory.GenerateClient(ServerUri))
     {
         return(client.GetProjectStatus().FirstOrDefault(t => t.Name == ProjectName));
     }
 }
        private CruiseServerClientBase GetCruiseManager(IServerSpecifier serverSpecifier, string sessionToken)
        {
            var config = GetServerUrl(serverSpecifier);
            CruiseServerClientBase manager = clientFactory.GenerateClient(config.Url,
                                                                          new ClientStartUpSettings
            {
                BackwardsCompatable = config.BackwardCompatible
            });

            manager.SessionToken = sessionToken;
            return(manager);
        }
예제 #4
0
        private CruiseServerClientBase GetCruiseManager(string url, string sessionToken)
        {
            //var config = GetServerUrl(serverSpecifier);
            CruiseServerClientBase manager = _ccf.GenerateClient(url,
                                                                 new ClientStartUpSettings
            {
                BackwardsCompatable = false    //config.BackwardCompatible
            });

            manager.SessionToken = sessionToken;
            return(manager);
        }
        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();
                }
            }
        }
예제 #6
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);
        }
예제 #7
0
 public CCNET(string host = "127.0.0.1")
 {
     Server = fac.GenerateClient($"tcp://{host}:21234/CruiseManager.rem");
 }