public BuildLink(ICruiseUrlBuilder urlBuilder, IBuildSpecifier buildSpecifier, string text, string action) : base(text) { this.urlBuilder = urlBuilder; this.action = action; this.buildSpecifier = buildSpecifier; }
public void ShouldBuildViewForAllBuilds() { IBuildSpecifier[] buildSpecifiers = new IBuildSpecifier [] { build2Specifier, build1Specifier }; IAbsoluteLink[] buildLinks = new IAbsoluteLink[] { new GeneralAbsoluteLink("link1"), new GeneralAbsoluteLink("link2") }; string buildRows = "renderred Links"; IResponse allBuildsResponse = new HtmlFragmentResponse("foo"); Hashtable context1 = new Hashtable(); Hashtable context2 = new Hashtable(); farmServiceMock.ExpectAndReturn("GetBuildSpecifiers", new IBuildSpecifier [] { build2Specifier, build1Specifier }, projectSpecifier, null); linkListFactoryMock.ExpectAndReturn("CreateStyledBuildLinkList", buildLinks, buildSpecifiers, BuildReportBuildPlugin.ACTION_NAME); context1["links"] = buildLinks; velocityTransformerMock.ExpectAndReturn("Transform", buildRows, @"BuildRows.vm", new HashtableConstraint(context1)); context2["buildRows"] = buildRows; IAbsoluteLink allBuildsLink = new GeneralAbsoluteLink("foo"); linkFactoryMock.ExpectAndReturn("CreateProjectLink", allBuildsLink, projectSpecifier, "", ViewAllBuildsProjectPlugin.ACTION_NAME); context2["allBuildsLink"] = allBuildsLink; velocityViewGeneratorMock.ExpectAndReturn("GenerateView", allBuildsResponse, @"AllBuilds.vm", new HashtableConstraint(context2)); Assert.AreEqual(allBuildsResponse, lister.GenerateAllBuildsView(projectSpecifier, null)); VerifyAll(); }
public void ShouldUseBuildLogTransformerToGenerateView() { DynamicMock buildLogTransformerMock = new DynamicMock(typeof(IBuildLogTransformer)); DynamicMock cruiseRequestMock = new DynamicMock(typeof(ICruiseRequest)); DynamicMock buildSpecifierMock = new DynamicMock(typeof(IBuildSpecifier)); DynamicMock requestStub = new DynamicMock(typeof(IRequest)); ICruiseRequest cruiseRequest = (ICruiseRequest)cruiseRequestMock.MockInstance; IBuildSpecifier buildSpecifier = (IBuildSpecifier)buildSpecifierMock.MockInstance; IRequest request = (IRequest)requestStub.MockInstance; cruiseRequestMock.ExpectAndReturn("BuildSpecifier", buildSpecifier); cruiseRequestMock.SetupResult("Request", request); requestStub.SetupResult("ApplicationPath", "myAppPath"); Hashtable expectedXsltArgs = new Hashtable(); expectedXsltArgs["applicationPath"] = "myAppPath"; buildLogTransformerMock.ExpectAndReturn("Transform", "transformed", buildSpecifier, new string[] { @"xsl\myxsl.xsl" }, new HashtableConstraint(expectedXsltArgs), null); XslReportBuildAction action = new XslReportBuildAction((IBuildLogTransformer)buildLogTransformerMock.MockInstance, null); action.XslFileName = @"xsl\myxsl.xsl"; Assert.AreEqual("transformed", ((HtmlFragmentResponse)action.Execute(cruiseRequest)).ResponseFragment); buildLogTransformerMock.Verify(); cruiseRequestMock.Verify(); buildSpecifierMock.Verify(); }
/// <summary> /// Gets the log. /// </summary> /// <param name="buildSpecifier">The build specifier.</param> /// <param name="sessionToken">The session token.</param> /// <returns>The log data.</returns> public string GetLog(IBuildSpecifier buildSpecifier, string sessionToken) { // Validate the arguments if (buildSpecifier == null) { throw new ArgumentNullException("buildSpecifier", "buildSpecifier is null."); } // Retrieve the server configuration - this is needed to check for compression var serverConfig = this.GetServerUrl(buildSpecifier.ProjectSpecifier.ServerSpecifier); var useCompression = serverConfig.TransferLogsCompressed; // Retrieve the actual log var response = GetCruiseManager(buildSpecifier, sessionToken) .GetLog(buildSpecifier.ProjectSpecifier.ProjectName, buildSpecifier.BuildName, useCompression); if (useCompression) { // Uncompress the log var compressionService = new ZipCompressionService(); response = compressionService.ExpandString(response); } return(response); }
/// <summary> /// Gets the log. /// </summary> /// <param name="buildSpecifier">The build specifier.</param> /// <param name="sessionToken">The session token.</param> /// <returns>The log data.</returns> public string GetLog(IBuildSpecifier buildSpecifier, string sessionToken) { // Validate the arguments if (buildSpecifier == null) { throw new ArgumentNullException("buildSpecifier", "buildSpecifier is null."); } // Retrieve the server configuration - this is needed to check for compression var serverConfig = this.GetServerUrl(buildSpecifier.ProjectSpecifier.ServerSpecifier); var useCompression = serverConfig.TransferLogsCompressed; // Retrieve the actual log var response = GetCruiseManager(buildSpecifier, sessionToken) .GetLog(buildSpecifier.ProjectSpecifier.ProjectName, buildSpecifier.BuildName, useCompression); if (useCompression) { // Uncompress the log var compressionService = new ZipCompressionService(); response = compressionService.ExpandString(response); } return response; }
public void ShouldUseBuildLogTransformerToGenerateView() { var buildLogTransformerMock = new Mock <IBuildLogTransformer>(); var cruiseRequestMock = new Mock <ICruiseRequest>(); var buildSpecifierMock = new Mock <IBuildSpecifier>(); var requestStub = new Mock <IRequest>(); ICruiseRequest cruiseRequest = (ICruiseRequest)cruiseRequestMock.Object; IBuildSpecifier buildSpecifier = (IBuildSpecifier)buildSpecifierMock.Object; IRequest request = (IRequest)requestStub.Object; cruiseRequestMock.SetupGet(_cruiseRequest => _cruiseRequest.BuildSpecifier).Returns(buildSpecifier).Verifiable(); cruiseRequestMock.SetupGet(_cruiseRequest => _cruiseRequest.Request).Returns(request).Verifiable(); requestStub.SetupGet(_request => _request.ApplicationPath).Returns("myAppPath").Verifiable(); buildLogTransformerMock.Setup(transformer => transformer.Transform(buildSpecifier, new string[] { @"xsl\myxsl.xsl" }, It.Is <Hashtable>(t => t.Count == 1 && (string)t["applicationPath"] == "myAppPath"), null)). Returns("transformed").Verifiable(); XslReportBuildAction action = new XslReportBuildAction((IBuildLogTransformer)buildLogTransformerMock.Object, null); action.XslFileName = @"xsl\myxsl.xsl"; Assert.AreEqual("transformed", ((HtmlFragmentResponse)action.Execute(cruiseRequest)).ResponseFragment); buildLogTransformerMock.Verify(); cruiseRequestMock.Verify(); buildSpecifierMock.Verify(); }
public IAbsoluteLink CreateStyledBuildLink(IBuildSpecifier specifier, string action) { IAbsoluteLink link = CreateBuildLink(specifier, buildNameFormatter.GetPrettyBuildName(specifier), action, null); link.LinkClass = buildNameFormatter.GetCssClassForBuildLink(specifier); return(link); }
/// <summary> /// List the available packages for a build. /// </summary> /// <param name="buildSpecifier"></param> /// <param name="sessionToken"></param> /// <returns></returns> public virtual PackageDetails[] RetrievePackageList(IBuildSpecifier buildSpecifier, string sessionToken) { var logFile = new LogFile(buildSpecifier.BuildName); var response = GetCruiseManager(buildSpecifier, sessionToken) .RetrievePackageList(buildSpecifier.ProjectSpecifier.ProjectName, logFile.Label); return(response.ToArray()); }
public BuildLinkWithFileName(ICruiseUrlBuilder urlBuilder, IBuildSpecifier buildSpecifier, string text, string action, string fileName) : base(text) { this.urlBuilder = urlBuilder; this.action = action; this.buildSpecifier = buildSpecifier; this.fileName = fileName; }
public virtual RemotingFileTransfer RetrieveFileTransfer(IBuildSpecifier buildSpecifier, string fileName, string sessionToken) { var logFile = new LogFile(buildSpecifier.BuildName); var fullName = string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0}\\{1}", logFile.Label, fileName); var fileTransfer = GetCruiseManager(buildSpecifier, sessionToken) .RetrieveFileTransfer(buildSpecifier.ProjectSpecifier.ProjectName, fullName); return(fileTransfer as RemotingFileTransfer); }
/// <summary> /// Builds the build URL. /// </summary> /// <param name="action">The action.</param> /// <param name="buildSpecifier">The build specifier.</param> /// <returns></returns> /// <remarks></remarks> public string BuildBuildUrl(string action, IBuildSpecifier buildSpecifier) { return(urlBuilder.BuildUrl( action, string.Empty, GeneratePath( buildSpecifier.ProjectSpecifier.ServerSpecifier.ServerName, buildSpecifier.ProjectSpecifier.ProjectName, buildSpecifier.BuildName))); }
public BuildLink(ICruiseUrlBuilder urlBuilder, IBuildSpecifier buildSpecifier, string text, string action, string img) : base(text) { this.urlBuilder = urlBuilder; this.action = action; this.buildSpecifier = buildSpecifier; if (!string.IsNullOrEmpty(img)) this.SetImg = img; }
public string BuildBuildUrl(string action, IBuildSpecifier buildSpecifier) { return urlBuilder.BuildUrl( action, string.Empty, GeneratePath( buildSpecifier.ProjectSpecifier.ServerSpecifier.ServerName, buildSpecifier.ProjectSpecifier.ProjectName, buildSpecifier.BuildName)); }
public IResponse Execute(ICruiseRequest cruiseRequest) { Hashtable velocityContext = new Hashtable(); IBuildSpecifier buildSpecifier = cruiseRequest.BuildSpecifier; Build build = buildRetriever.GetBuild(buildSpecifier); velocityContext["log"] = build.Log.Replace("<", "<").Replace(">", ">"); velocityContext["logUrl"] = linkFactory.CreateBuildLinkWithFileName(buildSpecifier, XmlBuildLogAction.ACTION_NAME, buildSpecifier.BuildName).Url; return(viewGenerator.GenerateView(@"BuildLog.vm", velocityContext)); }
public IAbsoluteLink[] GetBuildPluginLinks(IBuildSpecifier buildSpecifier) { ArrayList links = new ArrayList(); foreach (IBuildPlugin plugin in pluginConfiguration.BuildPlugins) { if (plugin.IsDisplayedForProject(buildSpecifier.ProjectSpecifier)) { links.Add(LinkFactory.CreateBuildLink(buildSpecifier, plugin.LinkDescription, plugin.NamedActions[0].ActionName)); } } return (IAbsoluteLink[]) links.ToArray(typeof (IAbsoluteLink)); }
public BuildLink(ICruiseUrlBuilder urlBuilder, IBuildSpecifier buildSpecifier, string text, string action, string img) : base(text) { this.urlBuilder = urlBuilder; this.action = action; this.buildSpecifier = buildSpecifier; if (!string.IsNullOrEmpty(img)) { this.SetImg = img; } }
public IAbsoluteLink[] GetBuildPluginLinks(IBuildSpecifier buildSpecifier) { ArrayList links = new ArrayList(); foreach (IBuildPlugin plugin in pluginConfiguration.BuildPlugins) { if (plugin.IsDisplayedForProject(buildSpecifier.ProjectSpecifier)) { links.Add(LinkFactory.CreateBuildLink(buildSpecifier, plugin.LinkDescription, plugin.NamedActions[0].ActionName, plugin.ImageFileName)); } } return((IAbsoluteLink[])links.ToArray(typeof(IAbsoluteLink))); }
/// <summary> /// Gets the final build status. /// </summary> /// <param name="buildSpecifier">The build specifier.</param> /// <param name="sessionId">The session id.</param> /// <returns>The final project status for the build.</returns> public ProjectStatusSnapshot GetFinalBuildStatus(IBuildSpecifier buildSpecifier, string sessionId) { try { var response = GetCruiseManager(buildSpecifier, sessionId) .GetFinalBuildStatus(buildSpecifier.ProjectSpecifier.ProjectName, buildSpecifier.BuildName); return(response); } catch (NotImplementedException) { return(null); } }
public IAbsoluteLink[] GetBuildPluginLinks(IBuildSpecifier buildSpecifier) { var links = new List <IAbsoluteLink>(); foreach (IBuildPlugin plugin in pluginConfiguration.BuildPlugins) { if (plugin.IsDisplayedForProject(buildSpecifier.ProjectSpecifier)) { links.Add(LinkFactory.CreateBuildLink(buildSpecifier, plugin.LinkDescription, plugin.NamedActions[0].ActionName)); } } return(links.ToArray()); }
/// <summary> /// Appends a build to the document. /// </summary> /// <param name="build">The build.</param> /// <param name="xmlWriter">The XML writer.</param> /// <param name="basePath">The base path.</param> private void AppendBuild(IBuildSpecifier build, XmlWriter xmlWriter, string basePath) { var logFile = new LogFile(build.BuildName); xmlWriter.WriteStartElement("event"); xmlWriter.WriteAttributeString("start", logFile.Date.ToString("r")); xmlWriter.WriteAttributeString("title", logFile.Succeeded ? "Success (" + logFile.Label + ")" : "Failure"); xmlWriter.WriteAttributeString("color", logFile.Succeeded ? "green" : "red"); xmlWriter.WriteAttributeString("icon", basePath + "dark-" + (logFile.Succeeded ? "green" : "red") + "-circle.png"); var buildUrl = this.urlBuilder.BuildBuildUrl(BuildReportBuildPlugin.ACTION_NAME, build); xmlWriter.WriteString("<a href=\"" + buildUrl + "\">View Build</a>"); xmlWriter.WriteEndElement(); }
public ConditionalGetFingerprint GetFingerprint(IRequest request) { ICruiseRequest cruiseRequest = new NameValueCruiseRequestFactory().CreateCruiseRequest(request, urlBuilder, retriever); IBuildSpecifier mostRecentBuildSpecifier = farmService.GetMostRecentBuildSpecifiers(cruiseRequest.ProjectSpecifier, 1, cruiseRequest.RetrieveSessionToken())[0]; DateTime mostRecentBuildDate = new LogFile(mostRecentBuildSpecifier.BuildName).Date; ConditionalGetFingerprint mostRecentBuildFingerprint = fingerprintFactory.BuildFromDate(mostRecentBuildDate); ConditionalGetFingerprint mostRecentTemplateFingerprint = fingerprintFactory.BuildFromFileNames(@"BuildRows.vm", @"RecentBuilds.vm", @"AllBuilds.vm"); return(mostRecentBuildFingerprint.Combine(mostRecentTemplateFingerprint)); }
public string GetLog(IBuildSpecifier buildSpecifier) { string HostName = this.GetCruiseManager(buildSpecifier).GetHostServerName(buildSpecifier.ProjectSpecifier.ProjectName); if (Environment.MachineName == HostName) { string BuildLogDirectoryPath = GetCruiseManager(buildSpecifier).GetBuildLogDirectory(buildSpecifier.ProjectSpecifier.ProjectName); return(File.ReadAllText(Path.Combine(BuildLogDirectoryPath, buildSpecifier.BuildName))); } else { return(GetCruiseManager(buildSpecifier).GetLog(buildSpecifier.ProjectSpecifier.ProjectName, buildSpecifier.BuildName)); } }
public HtmlFragmentResponse Execute() { Hashtable velocityContext = new Hashtable(); string velocityTemplateName = ""; string serverName = request.ServerName; string projectName = request.ProjectName; string buildName = request.BuildName; velocityContext["serverName"] = serverName; velocityContext["projectName"] = projectName; velocityContext["buildName"] = buildName; if (serverName == "") { velocityContext["links"] = pluginLinkCalculator.GetFarmPluginLinks(); velocityTemplateName = @"FarmSideBar.vm"; } else { if (projectName == "") { velocityContext["links"] = pluginLinkCalculator.GetServerPluginLinks(request.ServerSpecifier); velocityTemplateName = @"ServerSideBar.vm"; } else { if (buildName == "") { IProjectSpecifier projectSpecifier = request.ProjectSpecifier; velocityContext["links"] = pluginLinkCalculator.GetProjectPluginLinks(projectSpecifier); velocityContext["recentBuildsTable"] = recentBuildsViewBuilder.BuildRecentBuildsTable(projectSpecifier); velocityTemplateName = @"ProjectSideBar.vm"; } else { IBuildSpecifier buildSpecifier = request.BuildSpecifier; velocityContext["links"] = pluginLinkCalculator.GetBuildPluginLinks(buildSpecifier); velocityContext["recentBuildsTable"] = recentBuildsViewBuilder.BuildRecentBuildsTable(buildSpecifier.ProjectSpecifier); velocityContext["latestLink"] = linkFactory.CreateProjectLink(request.ProjectSpecifier, LatestBuildReportProjectPlugin.ACTION_NAME); velocityContext["nextLink"] = linkFactory.CreateBuildLink(buildNameRetriever.GetNextBuildSpecifier(buildSpecifier), "", BuildReportBuildPlugin.ACTION_NAME, null); velocityContext["previousLink"] = linkFactory.CreateBuildLink(buildNameRetriever.GetPreviousBuildSpecifier(buildSpecifier), "", BuildReportBuildPlugin.ACTION_NAME, null); velocityTemplateName = @"BuildSideBar.vm"; } } } return(velocityViewGenerator.GenerateView(velocityTemplateName, velocityContext) as HtmlFragmentResponse); }
public IResponse Execute(ICruiseRequest cruiseRequest) { Hashtable velocityContext = new Hashtable(); IBuildSpecifier buildSpecifier = cruiseRequest.BuildSpecifier; Build build = buildRetriever.GetBuild(buildSpecifier, cruiseRequest.RetrieveSessionToken()); velocityContext["log"] = build.Log.Replace("<", "<").Replace(">", ">"); // TODO - urk, this is a hack, need a better way of setting extensions string oldExtension = urlBuilder.Extension; urlBuilder.Extension = "xml"; velocityContext["logUrl"] = urlBuilder.BuildBuildUrl(XmlBuildLogAction.ACTION_NAME, buildSpecifier); urlBuilder.Extension = oldExtension; return(viewGenerator.GenerateView(TEMPLATE_NAME, velocityContext)); }
public IBuildSpecifier GetNextBuildSpecifier(IBuildSpecifier buildSpecifier) { IBuildSpecifier[] buildSpecifiers = cruiseManagerWrapper.GetBuildSpecifiers(buildSpecifier.ProjectSpecifier); if (buildSpecifiers.Length == 0 || buildSpecifier.Equals(buildSpecifiers[0])) { return(buildSpecifier); } for (int i = 1; i < buildSpecifiers.Length; i++) { if (buildSpecifier.Equals(buildSpecifiers[i])) { return(buildSpecifiers[i - 1]); } } throw new UnknownBuildException(buildSpecifier); }
public IAbsoluteLink[] CreateStyledBuildLinkList(IBuildSpecifier[] buildSpecifiers, IBuildSpecifier selectedBuildSpecifier, string action) { var displayableBuildLinkList = new List<IAbsoluteLink>(); foreach (IBuildSpecifier buildSpecifier in buildSpecifiers) { if (buildSpecifier.Equals(selectedBuildSpecifier)) { displayableBuildLinkList.Add(linkFactory.CreateStyledSelectedBuildLink(buildSpecifier, action)); } else { displayableBuildLinkList.Add(linkFactory.CreateStyledBuildLink(buildSpecifier, action)); } } return displayableBuildLinkList.ToArray(); }
public IBuildSpecifier GetNextBuildSpecifier(IBuildSpecifier buildSpecifier) { IBuildSpecifier[] buildSpecifiers = cruiseManagerWrapper.GetBuildSpecifiers(buildSpecifier.ProjectSpecifier); if (buildSpecifiers.Length == 0 || buildSpecifier.Equals(buildSpecifiers[0])) { return buildSpecifier; } for (int i = 1; i < buildSpecifiers.Length; i++) { if (buildSpecifier.Equals(buildSpecifiers[i])) { return buildSpecifiers[i-1]; } } throw new UnknownBuildException(buildSpecifier); }
public void ShouldGenerateBuildLinks() { string action = "my action"; IBuildSpecifier buildSpecifier1 = (IBuildSpecifier) new Mock <IBuildSpecifier>().Object; IBuildSpecifier buildSpecifier2 = (IBuildSpecifier) new Mock <IBuildSpecifier>().Object; IAbsoluteLink link1 = new GeneralAbsoluteLink("link 1"); IAbsoluteLink link2 = new GeneralAbsoluteLink("link 2"); linkFactoryMock.Setup(factory => factory.CreateStyledBuildLink(buildSpecifier1, action)).Returns(link1).Verifiable(); linkFactoryMock.Setup(factory => factory.CreateStyledBuildLink(buildSpecifier2, action)).Returns(link2).Verifiable(); IAbsoluteLink[] returnedLinks = linkListFactory.CreateStyledBuildLinkList(new IBuildSpecifier[] { buildSpecifier1, buildSpecifier2 }, action); Assert.AreEqual(2, returnedLinks.Length); Assert.AreEqual(link1, returnedLinks[0]); Assert.AreEqual(link2, returnedLinks[1]); VerifyAll(); }
public IBuildSpecifier GetPreviousBuildSpecifier(IBuildSpecifier buildSpecifier) { IBuildSpecifier[] buildSpecifiers = cruiseManagerWrapper.GetBuildSpecifiers(buildSpecifier.ProjectSpecifier); if (buildSpecifier.Equals(buildSpecifiers[buildSpecifiers.Length - 1])) { return(buildSpecifier); } for (int i = 0; i < buildSpecifiers.Length - 1; i++) { if (buildSpecifier.Equals(buildSpecifiers[i])) { return(buildSpecifiers[i + 1]); } } throw new UnknownBuildException(buildSpecifier); }
public void ShouldGenerateBuildLinks() { string action = "my action"; IBuildSpecifier buildSpecifier1 = (IBuildSpecifier) new DynamicMock(typeof(IBuildSpecifier)).MockInstance; IBuildSpecifier buildSpecifier2 = (IBuildSpecifier) new DynamicMock(typeof(IBuildSpecifier)).MockInstance; IAbsoluteLink link1 = new GeneralAbsoluteLink("link 1"); IAbsoluteLink link2 = new GeneralAbsoluteLink("link 2"); linkFactoryMock.ExpectAndReturn("CreateStyledBuildLink", link1, buildSpecifier1, action); linkFactoryMock.ExpectAndReturn("CreateStyledBuildLink", link2, buildSpecifier2, action); IAbsoluteLink[] returnedLinks = linkListFactory.CreateStyledBuildLinkList(new IBuildSpecifier[] { buildSpecifier1, buildSpecifier2 }, action); Assert.AreEqual(2, returnedLinks.Length); Assert.AreEqual(link1, returnedLinks[0]); Assert.AreEqual(link2, returnedLinks[1]); VerifyAll(); }
public IBuildSpecifier GetPreviousBuildSpecifier(IBuildSpecifier buildSpecifier) { IBuildSpecifier[] buildSpecifiers = cruiseManagerWrapper.GetBuildSpecifiers(buildSpecifier.ProjectSpecifier); if (buildSpecifier.Equals(buildSpecifiers[buildSpecifiers.Length - 1])) { return buildSpecifier; } for (int i = 0; i < buildSpecifiers.Length - 1; i++) { if (buildSpecifier.Equals(buildSpecifiers[i])) { return buildSpecifiers[i+1]; } } throw new UnknownBuildException(buildSpecifier); }
public void ShouldBuildViewForAllBuilds() { IBuildSpecifier[] buildSpecifiers = new IBuildSpecifier [] { build2Specifier, build1Specifier }; IAbsoluteLink[] buildLinks = new IAbsoluteLink[] { new GeneralAbsoluteLink("link1"), new GeneralAbsoluteLink("link2") }; string buildRows = "renderred Links"; HtmlFragmentResponse allBuildsResponse = new HtmlFragmentResponse("foo"); farmServiceMock.Setup(service => service.GetBuildSpecifiers(projectSpecifier, null)).Returns(new IBuildSpecifier[] { build2Specifier, build1Specifier }).Verifiable(); linkListFactoryMock.Setup(factory => factory.CreateStyledBuildLinkList(buildSpecifiers, BuildReportBuildPlugin.ACTION_NAME)).Returns(buildLinks).Verifiable(); velocityTransformerMock.Setup(transformer => transformer.Transform(@"BuildRows.vm", It.Is <Hashtable>(t => t.Count == 1 && t["links"] == buildLinks))).Returns(buildRows).Verifiable(); IAbsoluteLink allBuildsLink = new GeneralAbsoluteLink("foo"); linkFactoryMock.Setup(factory => factory.CreateProjectLink(projectSpecifier, "", ViewAllBuildsProjectPlugin.ACTION_NAME)).Returns(allBuildsLink).Verifiable(); velocityViewGeneratorMock.Setup(generator => generator.GenerateView(@"AllBuilds.vm", It.Is <Hashtable>(t => t.Count == 2 && (string)t["buildRows"] == buildRows && t["allBuildsLink"] == allBuildsLink))).Returns(allBuildsResponse).Verifiable(); Assert.AreEqual(allBuildsResponse, lister.GenerateAllBuildsView(projectSpecifier, null)); VerifyAll(); }
private string BuildRecentBuildsTable(IProjectSpecifier projectSpecifier, IBuildSpecifier buildSpecifier, string sessionToken) { Hashtable primaryContext = new Hashtable(); Hashtable secondaryContext = new Hashtable(); try { IBuildSpecifier[] mostRecentBuildSpecifiers = farmService.GetMostRecentBuildSpecifiers(projectSpecifier, 10, sessionToken); secondaryContext["links"] = linkListFactory.CreateStyledBuildLinkList(mostRecentBuildSpecifiers, buildSpecifier, BuildReportBuildPlugin.ACTION_NAME); primaryContext["buildRows"] = velocityTransformer.Transform(@"BuildRows.vm", secondaryContext); primaryContext["allBuildsLink"] = linkFactory.CreateProjectLink(projectSpecifier, string.Empty, ViewAllBuildsProjectPlugin.ACTION_NAME); return(velocityTransformer.Transform(@"RecentBuilds.vm", primaryContext)); } catch (Exception) { // Assume exception also caught where we care about (i.e. by action) return(string.Empty); } }
private string BuildRecentBuildsTable(IProjectSpecifier projectSpecifier, IBuildSpecifier buildSpecifier, string sessionToken) { Hashtable primaryContext = new Hashtable(); Hashtable secondaryContext = new Hashtable(); try { IBuildSpecifier[] mostRecentBuildSpecifiers = farmService.GetMostRecentBuildSpecifiers(projectSpecifier, 10, sessionToken); secondaryContext["links"] = linkListFactory.CreateStyledBuildLinkList(mostRecentBuildSpecifiers, buildSpecifier, BuildReportBuildPlugin.ACTION_NAME); primaryContext["buildRows"] = velocityTransformer.Transform(@"BuildRows.vm", secondaryContext); primaryContext["allBuildsLink"] = linkFactory.CreateProjectLink(projectSpecifier, string.Empty, ViewAllBuildsProjectPlugin.ACTION_NAME); return velocityTransformer.Transform(@"RecentBuilds.vm", primaryContext); } catch (Exception) { // Assume exception also caught where we care about (i.e. by action) return string.Empty; } }
public void ExecuteWorksForDataRequest() { var url1 = "build/1"; var url2 = "build/2"; var appPath = "/"; var farmService = this.mocks.StrictMock <IFarmService>(); var viewGenerator = this.mocks.StrictMock <IVelocityViewGenerator>(); var urlBuilder = this.mocks.StrictMock <ICruiseUrlBuilder>(); var cruiseRequest = this.mocks.StrictMock <ICruiseRequest>(); var request = this.mocks.StrictMock <IRequest>(); var projectSpec = this.mocks.StrictMock <IProjectSpecifier>(); var build1 = new DefaultBuildSpecifier(projectSpec, "log20100406071725Lbuild.1.xml"); var build2 = new DefaultBuildSpecifier(projectSpec, "log20100406071725.xml"); var builds = new IBuildSpecifier[] { build1, build2 }; SetupResult.For(cruiseRequest.Request).Return(request); SetupResult.For(cruiseRequest.ProjectSpecifier).Return(projectSpec); SetupResult.For(cruiseRequest.RetrieveSessionToken()).Return(null); SetupResult.For(request.FileNameWithoutExtension).Return(ProjectTimelineAction.DataActionName); SetupResult.For(request.ApplicationPath).Return(appPath); SetupResult.For(farmService.GetBuildSpecifiers(projectSpec, null)).Return(builds); SetupResult.For(urlBuilder.BuildBuildUrl(BuildReportBuildPlugin.ACTION_NAME, build1)).Return(url1); SetupResult.For(urlBuilder.BuildBuildUrl(BuildReportBuildPlugin.ACTION_NAME, build2)).Return(url2); this.mocks.ReplayAll(); var plugin = new ProjectTimelineAction(viewGenerator, farmService, urlBuilder); var response = plugin.Execute(cruiseRequest); this.mocks.VerifyAll(); Assert.IsInstanceOf <XmlFragmentResponse>(response); var actual = response as XmlFragmentResponse; var expected = "<data>" + "<event start=\"Tue, 06 Apr 2010 07:17:25 GMT\" title=\"Success (1)\" color=\"green\" icon=\"/javascript/Timeline/images/dark-green-circle.png\"><a href=\"build/1\">View Build</a></event>" + "<event start=\"Tue, 06 Apr 2010 07:17:25 GMT\" title=\"Failure\" color=\"red\" icon=\"/javascript/Timeline/images/dark-red-circle.png\"><a href=\"build/2\">View Build</a></event>" + "</data>"; Assert.AreEqual(expected, actual.ResponseFragment); }
public void ShouldBuildViewForRecentBuilds() { IBuildSpecifier[] buildSpecifiers = new IBuildSpecifier [] {build2Specifier, build1Specifier }; IAbsoluteLink[] buildLinks = new IAbsoluteLink[] { new GeneralAbsoluteLink("link1"), new GeneralAbsoluteLink("link2") }; string buildRows = "renderred Links"; string recentBuilds = "recentBuilds"; Hashtable context1 = new Hashtable(); Hashtable context2 = new Hashtable(); farmServiceMock.ExpectAndReturn("GetMostRecentBuildSpecifiers", buildSpecifiers, projectSpecifier, 10, null); linkListFactoryMock.ExpectAndReturn("CreateStyledBuildLinkList", buildLinks, buildSpecifiers, build1Specifier, BuildReportBuildPlugin.ACTION_NAME); context1["links"] = buildLinks; velocityTransformerMock.ExpectAndReturn("Transform", buildRows, @"BuildRows.vm", new HashtableConstraint(context1)); context2["buildRows"] = buildRows; IAbsoluteLink allBuildsLink = new GeneralAbsoluteLink("foo"); linkFactoryMock.ExpectAndReturn("CreateProjectLink", allBuildsLink, projectSpecifier, "", ViewAllBuildsProjectPlugin.ACTION_NAME); context2["allBuildsLink"] = allBuildsLink; velocityTransformerMock.ExpectAndReturn("Transform", recentBuilds, @"RecentBuilds.vm", new HashtableConstraint(context2)); Assert.AreEqual(recentBuilds, lister.BuildRecentBuildsTable(build1Specifier, null)); VerifyAll(); }
public void ExecuteWorksForDataRequest() { var url1 = "build/1"; var url2 = "build/2"; var appPath = "/"; var farmService = this.mocks.StrictMock<IFarmService>(); var viewGenerator = this.mocks.StrictMock<IVelocityViewGenerator>(); var urlBuilder = this.mocks.StrictMock<ICruiseUrlBuilder>(); var cruiseRequest = this.mocks.StrictMock<ICruiseRequest>(); var request = this.mocks.StrictMock<IRequest>(); var projectSpec = this.mocks.StrictMock<IProjectSpecifier>(); var build1 = new DefaultBuildSpecifier(projectSpec, "log20100406071725Lbuild.1.xml"); var build2 = new DefaultBuildSpecifier(projectSpec, "log20100406071725.xml"); var builds = new IBuildSpecifier[] { build1, build2 }; SetupResult.For(cruiseRequest.Request).Return(request); SetupResult.For(cruiseRequest.ProjectSpecifier).Return(projectSpec); SetupResult.For(cruiseRequest.RetrieveSessionToken()).Return(null); SetupResult.For(request.FileNameWithoutExtension).Return(ProjectTimelineAction.DataActionName); SetupResult.For(request.ApplicationPath).Return(appPath); SetupResult.For(farmService.GetBuildSpecifiers(projectSpec, null)).Return(builds); SetupResult.For(urlBuilder.BuildBuildUrl(BuildReportBuildPlugin.ACTION_NAME, build1)).Return(url1); SetupResult.For(urlBuilder.BuildBuildUrl(BuildReportBuildPlugin.ACTION_NAME, build2)).Return(url2); this.mocks.ReplayAll(); var plugin = new ProjectTimelineAction(viewGenerator, farmService, urlBuilder); var response = plugin.Execute(cruiseRequest); this.mocks.VerifyAll(); Assert.IsInstanceOf<XmlFragmentResponse>(response); var actual = response as XmlFragmentResponse; var expected = "<data>" + "<event start=\"Tue, 06 Apr 2010 07:17:25 GMT\" title=\"Success (1)\" color=\"green\" icon=\"/javascript/Timeline/images/dark-green-circle.png\"><a href=\"build/1\">View Build</a></event>" + "<event start=\"Tue, 06 Apr 2010 07:17:25 GMT\" title=\"Failure\" color=\"red\" icon=\"/javascript/Timeline/images/dark-red-circle.png\"><a href=\"build/2\">View Build</a></event>" + "</data>"; Assert.AreEqual(expected, actual.ResponseFragment); }
public string Transform(IBuildSpecifier buildSpecifier, Dictionary<string, string> xslParams, params string[] transformerFileNames) { return transformer.Transform(buildRetriever.GetBuild(buildSpecifier).Log, transformerFileNames, xslParams); }
private CruiseServerClientBase GetCruiseManager(IBuildSpecifier buildSpecifier, string sessionToken) { return(GetCruiseManager(buildSpecifier.ProjectSpecifier.ServerSpecifier, sessionToken)); }
private string GetPluginSubReport(ICruiseRequest cruiseRequest, IProjectSpecifier projectSpecifier, IBuildSpecifier[] buildSpecifiers) { if (buildSpecifiers.Length > 0 && pluginNames != null) { string outputResponse = String.Empty; ModifiedCruiseRequest req = new ModifiedCruiseRequest(cruiseRequest.Request, cruiseRequest.UrlBuilder); req.ReplaceBuildSpecifier(buildSpecifiers[0]); foreach (IBuildPlugin buildPlugIn in pluginNames) { if (buildPlugIn != null && buildPlugIn.IsDisplayedForProject(projectSpecifier) && buildPlugIn.NamedActions != null) { foreach (INamedAction namedAction in buildPlugIn.NamedActions) { IResponse resp = namedAction.Action.Execute(req); if (resp != null && resp is HtmlFragmentResponse) outputResponse += ((HtmlFragmentResponse)resp).ResponseFragment; } } } return outputResponse; } return null; }
public void ReplaceBuildSpecifier(IBuildSpecifier buildSpecifier) { this.buildSpecifier = buildSpecifier; }
public HtmlFragmentResponse Execute(ICruiseRequest request) { Hashtable velocityContext = new Hashtable(); string velocityTemplateName; string serverName = request.ServerName; if (serverName == string.Empty) { velocityContext["links"] = pluginLinkCalculator.GetFarmPluginLinks(); IServerSpecifier[] serverspecifiers = farmService.GetServerSpecifiers(); velocityContext["serverlinks"] = linkListFactory.CreateServerLinkList(serverspecifiers, "ViewServerReport"); IAbsoluteLink[] categoryLinks = GetCategoryLinks(serverspecifiers, request); velocityContext["showCategories"] = (categoryLinks != null) ? true : false; velocityContext["categorylinks"] = categoryLinks; velocityContext["farmLink"] = linkFactory.CreateFarmLink("Dashboard", FarmReportFarmPlugin.ACTION_NAME); velocityTemplateName = @"FarmSideBar.vm"; } else { string projectName = request.ProjectName; if (projectName == string.Empty) { IServerSpecifier serverSpecifier = request.ServerSpecifier; velocityContext["links"] = pluginLinkCalculator.GetServerPluginLinks(serverSpecifier); velocityContext["serverlink"] = linkFactory.CreateServerLink(serverSpecifier, "ViewServerReport"); IAbsoluteLink[] categoryLinks = new IAbsoluteLink[0]; try { categoryLinks = GetCategoryLinks(serverSpecifier); } catch { // Ignore any error here - this is normally because the URL is incorrect, the error will be displayed in the main content } velocityContext["showCategories"] = (categoryLinks != null) ? true : false; velocityContext["categorylinks"] = categoryLinks; velocityTemplateName = @"ServerSideBar.vm"; } else { string buildName = request.BuildName; if (buildName == string.Empty) { IProjectSpecifier projectSpecifier = request.ProjectSpecifier; velocityContext["links"] = pluginLinkCalculator.GetProjectPluginLinks(projectSpecifier); velocityContext["recentBuildsTable"] = recentBuildsViewBuilder.BuildRecentBuildsTable(projectSpecifier, request.RetrieveSessionToken()); velocityTemplateName = @"ProjectSideBar.vm"; } else { IBuildSpecifier buildSpecifier = request.BuildSpecifier; velocityContext["links"] = pluginLinkCalculator.GetBuildPluginLinks(buildSpecifier); velocityContext["recentBuildsTable"] = recentBuildsViewBuilder.BuildRecentBuildsTable(buildSpecifier, request.RetrieveSessionToken()); velocityContext["latestLink"] = linkFactory.CreateProjectLink(request.ProjectSpecifier, LatestBuildReportProjectPlugin.ACTION_NAME); velocityContext["nextLink"] = linkFactory.CreateBuildLink(buildNameRetriever.GetNextBuildSpecifier(buildSpecifier, request.RetrieveSessionToken()), string.Empty, BuildReportBuildPlugin.ACTION_NAME); velocityContext["previousLink"] = linkFactory.CreateBuildLink(buildNameRetriever.GetPreviousBuildSpecifier(buildSpecifier, request.RetrieveSessionToken()), string.Empty, BuildReportBuildPlugin.ACTION_NAME); velocityTemplateName = @"BuildSideBar.vm"; } } } return(velocityViewGenerator.GenerateView(velocityTemplateName, velocityContext)); }
public string GetPrettyBuildName(IBuildSpecifier buildSpecifier) { return GetPrettyBuildName(buildSpecifier, CultureInfo.CurrentCulture); }
public GraphBuildInfo(IBuildSpecifier buildSpecifier, ILinkFactory linkFactory) { mybuildSpecifier = buildSpecifier; mylinkFactory = linkFactory; }
/// <summary> /// List the available packages for a build. /// </summary> /// <param name="buildSpecifier"></param> /// <param name="sessionToken"></param> /// <returns></returns> public virtual PackageDetails[] RetrievePackageList(IBuildSpecifier buildSpecifier, string sessionToken) { var logFile = new LogFile(buildSpecifier.BuildName); var response = GetCruiseManager(buildSpecifier, sessionToken) .RetrievePackageList(buildSpecifier.ProjectSpecifier.ProjectName, logFile.Label); return response.ToArray(); }
/// <summary> /// Gets the final build status. /// </summary> /// <param name="buildSpecifier">The build specifier.</param> /// <param name="sessionId">The session id.</param> /// <returns>The final project status for the build.</returns> public ProjectStatusSnapshot GetFinalBuildStatus(IBuildSpecifier buildSpecifier, string sessionId) { try { var response = GetCruiseManager(buildSpecifier, sessionId) .GetFinalBuildStatus(buildSpecifier.ProjectSpecifier.ProjectName, buildSpecifier.BuildName); return response; } catch (NotImplementedException) { return null; } }
private string BuildBuildQueryString(IBuildSpecifier buildSpecifier) { return Combine(BuildProjectQueryString(buildSpecifier.ProjectSpecifier), UrlParameter(BuildQueryStringParameter, buildSpecifier.BuildName)); }
public virtual RemotingFileTransfer RetrieveFileTransfer(IBuildSpecifier buildSpecifier, string fileName, string sessionToken) { var logFile = new LogFile(buildSpecifier.BuildName); var fullName = string.Format(System.Globalization.CultureInfo.CurrentCulture,"{0}\\{1}", logFile.Label, fileName); var fileTransfer = GetCruiseManager(buildSpecifier, sessionToken) .RetrieveFileTransfer(buildSpecifier.ProjectSpecifier.ProjectName, fullName); return fileTransfer as RemotingFileTransfer; }
private CruiseServerClientBase GetCruiseManager(IBuildSpecifier buildSpecifier, string sessionToken) { return GetCruiseManager(buildSpecifier.ProjectSpecifier.ServerSpecifier, sessionToken); }
/// <summary> /// Transforms the specified build specifier. /// </summary> /// <param name="buildSpecifier">The build specifier.</param> /// <param name="transformerFileNames">The transformer file names.</param> /// <param name="xsltArgs">The XSLT args.</param> /// <param name="sessionToken">The session token.</param> /// <returns>The transformed content.</returns> public string Transform(IBuildSpecifier buildSpecifier, string[] transformerFileNames, Hashtable xsltArgs, string sessionToken) { var buildLog = buildRetriever.GetBuild(buildSpecifier, sessionToken).Log; return transformer.Transform(buildLog, transformerFileNames, xsltArgs); }
public UnknownBuildException(IBuildSpecifier buildSpecifier) : base() { this.buildSpecifier = buildSpecifier; }
public string GetPrettyBuildName(IBuildSpecifier buildSpecifier, IFormatProvider formatter) { LogFile logFile = new LogFile(buildSpecifier.BuildName, formatter); //return string.Format("{0} ({1})", logFile.FormattedDateString, logFile.Succeeded ? logFile.Label : "Failed"); return string.Format("{0} ({1})", logFile.FormattedDateString, logFile.Label); }
public string BuildBuildUrl(string action, IBuildSpecifier buildSpecifier, string fileName) { return urlBuilder.BuildUrl(action, BuildBuildQueryString(buildSpecifier), fileName); }
/// <summary> /// Transforms the specified build specifier. /// </summary> /// <param name="buildSpecifier">The build specifier.</param> /// <param name="transformerFileNames">The transformer file names.</param> /// <param name="xsltArgs">The XSLT args.</param> /// <param name="sessionToken">The session token.</param> /// <returns>The transformed content.</returns> public string Transform(IBuildSpecifier buildSpecifier, string[] transformerFileNames, Hashtable xsltArgs, string sessionToken) { var buildLog = buildRetriever.GetBuild(buildSpecifier, sessionToken).Log; return(transformer.Transform(buildLog, transformerFileNames, xsltArgs)); }
public string BuildBuildUrl(string action, IBuildSpecifier buildSpecifier) { return urlBuilder.BuildUrl(action, BuildBuildQueryString(buildSpecifier)); }
public string BuildRecentBuildsTable(IBuildSpecifier buildSpecifier, string sessionToken) { return BuildRecentBuildsTable(buildSpecifier.ProjectSpecifier, buildSpecifier, sessionToken); }
public BuildGraph(IBuildSpecifier[] buildSpecifiers, ILinkFactory linkFactory, Translations translations) { mybuildSpecifiers = buildSpecifiers; mylinkFactory = linkFactory; this.translations = translations; }