public void InitialiseRequestWithSessionSetsTheCorrectValues()
 {
     string sessionToken = "the session";
     DateTime now = DateTime.Now;
     BuildRequest request = new BuildRequest(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()
 {
     BuildRequest request = new BuildRequest();
     string actual = request.ToString();
     string expected = string.Format(System.Globalization.CultureInfo.CurrentCulture,"<buildMessage 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);
 }
        public void GetLogCompressesData()
        {
            // Initialise the mocks
            var mocks = new MockRepository();
            var data = "This is some test - line 1, line 2, line 3 - this is some test data";

            // Perform the tests
            var server = InitialiseServer(mocks, testBuildName, data);
            var request = new BuildRequest(null, testProjectName);
            request.BuildName = testBuildName;
            request.CompressData = true;
            var response = server.GetLog(request);

            // Verify the results
            mocks.VerifyAll();
            Assert.AreEqual(ResponseResult.Success, response.Result);
            Assert.AreNotEqual(data, response.Data);
        }
 public void ToStringSerialisesAllValues()
 {
     BuildRequest request = new BuildRequest();
     request.Identifier = "identifier";
     request.ServerName = "serverName";
     request.SessionToken = "sessionToken";
     request.SourceName = "sourceName";
     request.Timestamp = DateTime.Now;
     request.BuildName = "Build#1";
     string actual = request.ToString();
     string expected = string.Format(System.Globalization.CultureInfo.CurrentCulture,"<buildMessage 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}\" build=\"Build#1\" />",
         request.Identifier,
         request.ServerName,
         request.SourceName,
         request.SessionToken,
         request.Timestamp);
     Assert.AreEqual(expected, actual);
 }
        /// <summary>
        /// Returns the build log contents for requested project and build name
        /// </summary>
        /// <param name="projectName">Name of the project.</param>
        /// <param name="buildName">Name of the build.</param>
        /// <param name="compress">If set to <c>true</c> the log will be compressed.</param>
        /// <returns>The log file for the build.</returns>
        public override string GetLog(string projectName, string buildName, bool compress)
        {
            if (string.IsNullOrEmpty(projectName)) throw new ArgumentNullException("projectName");

            BuildRequest request = new BuildRequest(SessionToken, projectName);
            request.BuildName = buildName;
            request.ServerName = TargetServer;
            request.CompressData = compress;
            DataResponse resp = ValidateResponse(
                connection.SendMessage("GetLog", request))
                as DataResponse;
            return resp.Data;
        }
 /// <summary>
 /// Gets the final status for a build.
 /// </summary>
 /// <param name="request">The request.</param>
 /// <returns>The <see cref="SnapshotResponse"/> for the build.</returns>
 public virtual StatusSnapshotResponse GetFinalBuildStatus(BuildRequest request)
 {
     return cruiseServer.GetFinalBuildStatus(request);
 }
 /// <summary>
 /// Returns the build log contents for requested project and build name
 /// </summary>
 public virtual DataResponse GetLog(BuildRequest request)
 {
     return cruiseServer.GetLog(request);
 }
        /// <summary>
        /// Returns the build log contents for requested project and build name
        /// </summary>
		public string GetLog(string projectName, string buildName)
		{
            BuildRequest request = new BuildRequest(null, projectName);
            request.BuildName = buildName;
            DataResponse resp = cruiseServer.GetLog(request);
            ValidateResponse(resp);
            return resp.Data;
		}
Esempio n. 9
0
        /// <summary>
        /// Gets the final status for a build.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>The <see cref="SnapshotResponse"/> for the build.</returns>
        public virtual StatusSnapshotResponse GetFinalBuildStatus(BuildRequest request)
        {
            ItemStatus snapshot = null;
            var response = new StatusSnapshotResponse(RunProjectRequest(
                request,
                SecurityPermission.ViewProject,
                SecurityEvent.GetFinalBuildStatus,
                (req, res) =>
                {
                    var project = this.GetIntegrator(req.ProjectName).Project;
                    snapshot = project.RetrieveBuildFinalStatus(request.BuildName);
                }));
            if (response.Result == ResponseResult.Success)
            {
                response.Snapshot = snapshot as ProjectStatusSnapshot;
                if (response.Snapshot == null)
                {
                    response.Result = ResponseResult.Warning;
                    response.ErrorMessages.Add(
                        new ErrorMessage("Build status does not exist"));
                }
            }

            return response;
        }
Esempio n. 10
0
        /// <summary>
        /// Returns the build log contents for requested project and build name
        /// </summary>
        public virtual DataResponse GetLog(BuildRequest request)
        {
            string data = null;
            DataResponse response = new DataResponse(RunProjectRequest(request,
                SecurityPermission.ViewProject,
                null,
                delegate
                {
                    data = this.RetrieveLogData(request.ProjectName, request.BuildName, request.CompressData);
                }));
            response.Data = data;

            // Perform a garbage collection to reduce the amount of memory held
            GC.Collect();
            return response;
        }
        /// <summary>
        /// Gets the final build status.
        /// </summary>
        /// <param name="projectName">Name of the project.</param>
        /// <param name="buildName">Name of the build.</param>
        /// <returns>The final project status for the build.</returns>
        public override ProjectStatusSnapshot GetFinalBuildStatus(string projectName, string buildName)
        {
            if (string.IsNullOrEmpty(projectName))
            {
                throw new ArgumentNullException("projectName");
            }

            if (string.IsNullOrEmpty(buildName))
            {
                throw new ArgumentNullException("buildName");
            }

            var request = new BuildRequest(SessionToken, projectName);
            request.BuildName = buildName;
            request.ServerName = TargetServer;
            var resp = ValidateResponse(
                connection.SendMessage("GetFinalBuildStatus", request))
                as StatusSnapshotResponse;
            return resp.Snapshot;
        }
        public void GetFinalBuildStatusReturnsStatus()
        {
            var securityManagerMock = this.InitialiaseSecurityManagerMock(true, true);
            var request = new BuildRequest("1234", "Project 1")
                {
                    BuildName = "Build #1"
                };
            var dataStoreMock = this.mocks.StrictMock<IDataStore>();
            SetupResult.For(dataStoreMock.LoadProjectSnapshot(project1, "Build #1"))
                .Return(new ProjectStatusSnapshot { Name = "Project 1" });
            this.mocks.ReplayAll();

            project1.DataStore = dataStoreMock;
            server.SecurityManager = securityManagerMock;
            var actual = server.GetFinalBuildStatus(request);

            this.mocks.VerifyAll();
            Assert.AreEqual(ResponseResult.Success, actual.Result);
            Assert.AreEqual("Project 1", actual.Snapshot.Name);
        }
        public void GetFinalBuildStatusReturnsWarningIfNoStatus()
        {
            var securityManagerMock = this.InitialiaseSecurityManagerMock(true, true);
            var request = new BuildRequest("1234", "Project 1")
                {
                    BuildName = "Build #1"
                };
            this.mocks.ReplayAll();

            server.SecurityManager = securityManagerMock;
            var actual = server.GetFinalBuildStatus(request);

            this.mocks.VerifyAll();
            Assert.AreEqual(ResponseResult.Warning, actual.Result);
            Assert.AreEqual("Build status does not exist", actual.ErrorMessages[0].Message);
        }
        public void GetFinalBuildStatusRequiresViewProjectPermission()
        {
            var securityManagerMock = this.InitialiaseSecurityManagerMock(false, true);
            var request = new BuildRequest("1234", "Project 1")
                {
                    BuildName = "Build #1"
                };
            this.mocks.ReplayAll();

            server.SecurityManager = securityManagerMock;
            var actual = server.GetFinalBuildStatus(request);

            this.mocks.VerifyAll();
            Assert.AreEqual(ResponseResult.Failure, actual.Result);
            Assert.AreEqual("Permission to execute 'ViewProject' has been denied.", actual.ErrorMessages[0].Message);
        }
 public void GetSetAllPropertiesWorks()
 {
     BuildRequest request = new BuildRequest();
     request.BuildName = "Build#1";
     Assert.AreEqual("Build#1", request.BuildName, "BuildName fails the get/set test");
 }
        public void GetFinalBuildStatusPassesOnCall()
        {
            var mocks = new MockRepository();
            var innerServer = mocks.DynamicMock<ICruiseServer>();
            var request = new BuildRequest();
            var response = new StatusSnapshotResponse();
            Expect.Call(innerServer.GetFinalBuildStatus(request))
                .Return(response);
            mocks.ReplayAll();

            var configFile = this.CreateTemporaryConfigurationFile();
            using (var server = new RemoteCruiseServer(innerServer, configFile, true))
            {
                var actual = server.GetFinalBuildStatus(request);
                Assert.AreSame(response, actual);
            }

            mocks.VerifyAll();
        }