public void InitialiseRequestWithSessionSetsTheCorrectValues()
 {
     string sessionToken = "the session";
     DateTime now = DateTime.Now;
     ProjectRequest request = new ProjectRequest(sessionToken);
     Assert.IsFalse(string.IsNullOrEmpty(request.Identifier), "Identifier was not set");
     Assert.AreEqual(Environment.MachineName, request.SourceName, "Source name doesn't match the machine name");
     Assert.AreEqual(sessionToken, request.SessionToken, "SessionToken doesn't match the input token");
     Assert.IsTrue((now <= request.Timestamp), "Timestamp was not set");
 }
 public void ToStringSerialisesDefaultValues()
 {
     ProjectRequest request = new ProjectRequest();
     string actual = request.ToString();
     string expected = string.Format(System.Globalization.CultureInfo.CurrentCulture,"<projectMessage xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
         "timestamp=\"{2:yyyy-MM-ddTHH:mm:ss.FFFFFFFzzz}\" identifier=\"{0}\" source=\"{1}\" />",
         request.Identifier,
         request.SourceName,
         request.Timestamp);
     Assert.AreEqual(expected, actual);
 }
Пример #3
0
        private void buildProject()
        {
            this._manager = new RemoteCruiseManagerFactory()
                .GetCruiseServerClient("tcp://localhost:21234/CruiseManager.rem");
            this._project = new ProjectRequest("Edd", this.Name);
            this._manager.ForceBuild(this._project);
            this._request = new ServerRequest(this._project.SessionToken);

            // Write current status
            this.progress(String.Empty);
            IsRunning = false;
            Console.Write("\n\n");
        }
        public void ProcessMessageCorrectlyHandlesAnUnknownAction()
        {
            // Setup the messages
            ProjectRequest request = new ProjectRequest("123-45", "A test project");

            // Initialises the mocks
            ICruiseServer server = mocks.DynamicMock<ICruiseServer>();
            mocks.ReplayAll();

            // Run the actual test
            var manager = new ThoughtWorks.CruiseControl.Core.CruiseServerClient(server);
            string responseText = manager.ProcessMessage("UnknownAction", request.ToString());
            Response response = ConvertXmlToResponse(responseText);
            Assert.AreEqual(ResponseResult.Failure, response.Result, "Result is unexpected");
        }
        public void ProcessMessageCorrectlyHandlesAValidMessage()
        {
            // Setup the messages
            ProjectRequest request = new ProjectRequest("123-45", "A test project");
            Response response = new Response(request);
            response.Result = ResponseResult.Success;

            // Initialises the mocks
            ICruiseServer server = mocks.DynamicMock<ICruiseServer>();
            Expect.Call(server.ForceBuild(request)).Return(response);
            mocks.ReplayAll();

            // Run the actual test
            var manager = new ThoughtWorks.CruiseControl.Core.CruiseServerClient(server);
            string responseText = manager.ProcessMessage("ForceBuild", request.ToString());
            Assert.AreEqual(response.ToString(), responseText);
            mocks.VerifyAll();
        }
 public void ToStringSerialisesAllValues()
 {
     ProjectRequest request = new ProjectRequest();
     request.Identifier = "identifier";
     request.ProjectName = "projectName";
     request.ServerName = "serverName";
     request.SessionToken = "sessionToken";
     request.SourceName = "sourceName";
     request.Timestamp = DateTime.Now;
     string actual = request.ToString();
     string expected = string.Format(System.Globalization.CultureInfo.CurrentCulture,"<projectMessage xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
         "timestamp=\"{4:yyyy-MM-ddTHH:mm:ss.FFFFFFFzzz}\" identifier=\"{0}\" server=\"{1}\" source=\"{2}\" session=\"{3}\" project=\"{5}\" />",
         request.Identifier,
         request.ServerName,
         request.SourceName,
         request.SessionToken,
         request.Timestamp,
         request.ProjectName);
     Assert.AreEqual(expected, actual);
 }
 /// <summary>
 /// Forces a build for the named project.
 /// </summary>
 /// <param name="request">A <see cref="ProjectRequest"/> containing the request details.</param>
 /// <returns>A <see cref="Response"/> containing the results of the request.</returns>
 public Response ForceBuild(ProjectRequest request)
 {
     return cruiseServer.ForceBuild(request);
 }
 /// <summary>
 /// Retrieves a list of packages for a project.
 /// </summary>
 public virtual ListPackagesResponse RetrievePackageList(ProjectRequest request)
 {
     return cruiseServer.RetrievePackageList(request);
 }
 /// <summary>
 /// Lists the build parameters for a project.
 /// </summary>
 /// <param name="request">The project to retrieve the parameters for.</param>
 /// <returns>The list of parameters (if any).</returns>
 public BuildParametersResponse ListBuildParameters(ProjectRequest request)
 {
     return cruiseServer.ListBuildParameters(request);
 }
Пример #10
0
 /// <summary>
 /// Gets the modification history document.	
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 public virtual DataResponse GetModificationHistoryDocument(ProjectRequest request)
 {
     return cruiseServer.GetModificationHistoryDocument(request);
 }
Пример #11
0
 /// <summary>
 /// Gets the artifact directory.	
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 public virtual DataResponse GetArtifactDirectory(ProjectRequest request)
 {
     return cruiseServer.GetArtifactDirectory(request);
 }
Пример #12
0
 /// <summary>
 /// Returns the names of all builds for the specified project, sorted s.t. the newest build is first in the array
 /// </summary>
 public virtual DataListResponse GetBuildNames(ProjectRequest request)
 {
     return cruiseServer.GetBuildNames(request);
 }
Пример #13
0
 /// <summary>
 /// Gets the project.	
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 public DataResponse GetProject(ProjectRequest request)
 {
     string data = null;
     DataResponse response = new DataResponse(RunProjectRequest(request,
         SecurityPermission.ViewConfiguration,
         null,
         delegate(ProjectRequest arg, Response resp)
         {
             Log.Info("Getting project - " + request.ProjectName);
             data = new NetReflectorProjectSerializer()
                 .Serialize(configurationService.Load().Projects[arg.ProjectName]);
         }));
     response.Data = data;
     return response;
 }
Пример #14
0
 /// <summary>
 /// Returns the names of all builds for the specified project, sorted s.t. the newest build is first in the array
 /// </summary>
 public DataListResponse GetBuildNames(ProjectRequest request)
 {
     List<string> data = new List<string>();
     DataListResponse response = new DataListResponse(RunProjectRequest(request,
         SecurityPermission.ViewProject,
         null,
         delegate(ProjectRequest arg, Response resp)
         {
             data.AddRange(GetIntegrator(arg.ProjectName).
                 IntegrationRepository.
                 GetBuildNames());
         }));
     response.Data = data;
     return response;
 }
Пример #15
0
 /// <summary>
 /// Returns the name of the most recent build for the specified project
 /// </summary>
 public DataResponse GetLatestBuildName(ProjectRequest request)
 {
     string data = null;
     DataResponse response = new DataResponse(RunProjectRequest(request,
         SecurityPermission.ViewProject,
         null,
         delegate(ProjectRequest arg, Response resp)
         {
             data = GetIntegrator(arg.ProjectName).IntegrationRepository.GetLatestBuildName();
         }));
     response.Data = data;
     return response;
 }
Пример #16
0
 /// <summary>
 /// Waits for the project to exit.
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public virtual Response WaitForExit(ProjectRequest request)
 {
     return cruiseServer.WaitForExit(request);
 }
Пример #17
0
 /// <summary>
 /// Returns the name of the most recent build for the specified project
 /// </summary>
 public virtual DataResponse GetLatestBuildName(ProjectRequest request)
 {
     return cruiseServer.GetLatestBuildName(request);
 }
Пример #18
0
 /// <summary>
 /// Gets the external links.	
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 public ExternalLinksListResponse GetExternalLinks(ProjectRequest request)
 {
     List<ExternalLink> data = new List<ExternalLink>();
     ExternalLinksListResponse response = new ExternalLinksListResponse(RunProjectRequest(request,
         SecurityPermission.ViewProject,
         null,
         delegate(ProjectRequest arg, Response resp)
         {
             data.AddRange(LookupProject(arg.ProjectName).ExternalLinks);
         }));
     response.ExternalLinks = data;
     return response;
 }
Пример #19
0
 /// <summary>
 /// Gets the external links.	
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 public virtual ExternalLinksListResponse GetExternalLinks(ProjectRequest request)
 {
     return cruiseServer.GetExternalLinks(request);
 }
Пример #20
0
 /// <summary>
 /// Gets the modification history document.	
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 public DataResponse GetModificationHistoryDocument(ProjectRequest request)
 {
     string data = null;
     DataResponse response = new DataResponse(RunProjectRequest(request,
         SecurityPermission.ViewProject,
         null,
         delegate(ProjectRequest arg, Response resp)
         {
             data = GetIntegrator(arg.ProjectName).Project.ModificationHistory;
         }));
     response.Data = data;
     return response;
 }
Пример #21
0
 /// <summary>
 /// Gets the statistics document.	
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 public virtual DataResponse GetStatisticsDocument(ProjectRequest request)
 {
     return cruiseServer.GetStatisticsDocument(request);
 }
Пример #22
0
 /// <summary>
 /// Gets the RSS feed.	
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 public DataResponse GetRSSFeed(ProjectRequest request)
 {
     string data = null;
     DataResponse response = new DataResponse(RunProjectRequest(request,
         SecurityPermission.ViewProject,
         null,
         delegate(ProjectRequest arg, Response resp)
         {
             data = GetIntegrator(arg.ProjectName).Project.RSSFeed;
         }));
     response.Data = data;
     return response;
 }
Пример #23
0
 /// <summary>
 /// Gets the RSS feed.	
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns></returns>
 /// <remarks></remarks>
 public virtual DataResponse GetRSSFeed(ProjectRequest request)
 {
     return cruiseServer.GetRSSFeed(request);
 }
Пример #24
0
 /// <summary>
 /// Takes a status snapshot of a project.
 /// </summary>
 /// <param name="request"></param>
 /// <returns>The snapshot of the current status.</returns>
 public virtual StatusSnapshotResponse TakeStatusSnapshot(ProjectRequest request)
 {
     ProjectStatusSnapshot snapshot = null;
     StatusSnapshotResponse response = new StatusSnapshotResponse(RunProjectRequest(request,
         SecurityPermission.ViewProject,
         null,
         delegate
         {
             IProjectIntegrator integrator = GetIntegrator(request.ProjectName);
             if (integrator != null)
             {
                 // First see if the project has its own associated generator
                 if (integrator.Project is IStatusSnapshotGenerator)
                 {
                     snapshot = (integrator.Project as IStatusSnapshotGenerator).GenerateSnapshot()
                         as ProjectStatusSnapshot;
                 }
                 else
                 {
                     // Otherwise generate an overview snapshot (details will not be available)
                     ProjectStatus status = integrator.Project.CreateProjectStatus(integrator);
                     snapshot = new ProjectStatusSnapshot();
                     snapshot.Name = integrator.Project.Name;
                     if (status.Activity.IsBuilding())
                     {
                         snapshot.Status = ItemBuildStatus.Running;
                     }
                     else if (status.Activity.IsPending())
                     {
                         snapshot.Status = ItemBuildStatus.Pending;
                     }
                     else if (status.Activity.IsSleeping())
                     {
                         switch (status.BuildStatus)
                         {
                             case IntegrationStatus.Success:
                                 snapshot.Status = ItemBuildStatus.CompletedSuccess;
                                 break;
                             case IntegrationStatus.Exception:
                             case IntegrationStatus.Failure:
                                 snapshot.Status = ItemBuildStatus.CompletedSuccess;
                                 break;
                         }
                     }
                 }
             }
             else
             {
                 throw new NoSuchProjectException(request.ProjectName);
             }
         }));
     response.Snapshot = snapshot;
     return response;
 }
Пример #25
0
 /// <summary>
 /// Takes a status snapshot of a project.
 /// </summary>
 public virtual StatusSnapshotResponse TakeStatusSnapshot(ProjectRequest request)
 {
     return cruiseServer.TakeStatusSnapshot(request);
 }
Пример #26
0
 /// <summary>
 /// Generate a project request.
 /// </summary>
 /// <param name="projectName"></param>
 /// <returns></returns>
 private ProjectRequest GenerateProjectRequest(string projectName)
 {
     ProjectRequest request = new ProjectRequest();
     request.ProjectName = projectName;
     return request;
 }
Пример #27
0
 /// <summary>
 /// Attempts to stop a project.
 /// </summary>
 /// <param name="request">A <see cref="ProjectRequest"/> containing the request details.</param>
 /// <returns>A <see cref="Response"/> containing the results of the request.</returns>
 public Response Stop(ProjectRequest request)
 {
     return cruiseServer.Stop(request);
 }
Пример #28
0
 /// <summary>
 /// Aborts the build of the selected project.
 /// </summary>
 /// <param name="request">A <see cref="ProjectRequest"/> containing the request details.</param>
 /// <returns>A <see cref="Response"/> containing the results of the request.</returns>
 public Response AbortBuild(ProjectRequest request)
 {
     return cruiseServer.AbortBuild(request);
 }
Пример #29
0
        /// <summary>
        /// Generates a project request.
        /// </summary>
        /// <param name="projectName">The name of the project to use.</param>
        /// <returns></returns>
        private ProjectRequest GenerateProjectRequest(string projectName)
        {
            if (string.IsNullOrEmpty(projectName)) throw new ArgumentNullException("projectName");

            ProjectRequest request = new ProjectRequest(SessionToken, projectName);
            request.DisplayName = this.DisplayName;
            request.ServerName = TargetServer;
            return request;
        }
Пример #30
0
 /// <summary>
 /// Cancel a pending project integration request from the integration queue.
 /// </summary>
 public Response CancelPendingRequest(ProjectRequest request)
 {
     return cruiseServer.CancelPendingRequest(request);
 }