Title: [40701] trunk/hudson/plugins/view-job-filters/src/main: adding build duration filter
Revision
40701
Author
jacob_robertson
Date
2012-09-07 15:08:51 -0400 (Fri, 07 Sep 2012)

Log Message

adding build duration filter

Added Paths


Diff

Added: trunk/hudson/plugins/view-job-filters/src/main/java/hudson/views/BuildDurationFilter.java (0 => 40701)


--- trunk/hudson/plugins/view-job-filters/src/main/java/hudson/views/BuildDurationFilter.java	                        (rev 0)
+++ trunk/hudson/plugins/view-job-filters/src/main/java/hudson/views/BuildDurationFilter.java	2012-09-07 19:08:51 UTC (rev 40701)
@@ -0,0 +1,58 @@
+package hudson.views;
+
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+
+import org.kohsuke.stapler.DataBoundConstructor;
+
+import hudson.Extension;
+import hudson.model.Descriptor;
+import hudson.model.Run;
+
+public class BuildDurationFilter extends AbstractBuildTrendFilter {
+
+	private boolean lessThan;
+	private float buildDurationMinutes;
+	
+	@DataBoundConstructor
+	public BuildDurationFilter(
+			float buildDurationMinutes, boolean lessThan,
+		String buildCountTypeString, float amount, String amountTypeString,
+		String includeExcludeTypeString) {
+			super(buildCountTypeString, amount, amountTypeString, includeExcludeTypeString);
+		this.lessThan = lessThan;
+		this.buildDurationMinutes = buildDurationMinutes;
+	}
+	
+	@Override
+    @SuppressWarnings("unchecked")
+	public boolean matchesRun(Run run) {
+		long buildDurationMs = (long) (buildDurationMinutes * 60f * 1000f);
+		if (lessThan) {
+			return run.getDuration() < buildDurationMs;
+		} else {
+			return run.getDuration() > buildDurationMs;
+		}
+	}
+
+	public boolean isLessThan() {
+		return lessThan;
+	}
+	public String getBuildDurationMinutes() {
+		DecimalFormat format = new DecimalFormat("##########.##########");
+		return format.format(buildDurationMinutes);
+	}
+
+	@Extension
+	public static class DescriptorImpl extends Descriptor<ViewJobFilter> {
+		@Override
+		public String getDisplayName() {
+			return "Build Duration Filter";
+		}
+		@Override
+        public String getHelpFile() {
+            return "/plugin/view-job-filters/build-duration-help.html";
+        }
+	}
+
+}
Property changes on: trunk/hudson/plugins/view-job-filters/src/main/java/hudson/views/BuildDurationFilter.java
___________________________________________________________________

Added: svn:mime-type

Added: trunk/hudson/plugins/view-job-filters/src/main/resources/hudson/views/BuildDurationFilter/config.jelly (0 => 40701)


--- trunk/hudson/plugins/view-job-filters/src/main/resources/hudson/views/BuildDurationFilter/config.jelly	                        (rev 0)
+++ trunk/hudson/plugins/view-job-filters/src/main/resources/hudson/views/BuildDurationFilter/config.jelly	2012-09-07 19:08:51 UTC (rev 40701)
@@ -0,0 +1,21 @@
+<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"
+	xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form"
+	xmlns:i="jelly:fmt" xmlns:p="/lib/hudson/project">
+  <f:entry title="${%Build duration type:}">  	
+    <select name="buildCountTypeString" class="buildCountType">
+      <f:option value="Latest" selected="${instance.buildCountTypeString == 'Latest'}">${%Latest build duration was}</f:option>
+      <f:option value="AtLeastOne" selected="${instance.buildCountTypeString == 'AtLeastOne'}">${%At least one build duration was}</f:option>
+      <f:option value="All" selected="${instance.buildCountTypeString == 'All'}">${%All build durations were}</f:option>
+    </select>
+  	<st:nbsp />
+    <select name="lessThan">
+      <f:option value="true" selected="${instance.lessThan == true}">${%Less than}</f:option>
+      <f:option value="false" selected="${instance.lessThan == false}">${%More than}</f:option>
+    </select>
+    <st:nbsp />
+    <input type="text" name="buildDurationMinutes" value="${instance.buildDurationMinutes}" size="10" maxlength="10" />
+    <st:nbsp />
+    ${%minutes}
+  </f:entry>
+  <st:include page="config.jelly" class="hudson.views.AbstractBuildTrendFilter" optional="false"/>
+</j:jelly>
\ No newline at end of file

Added: trunk/hudson/plugins/view-job-filters/src/main/webapp/build-duration-help.html (0 => 40701)


--- trunk/hudson/plugins/view-job-filters/src/main/webapp/build-duration-help.html	                        (rev 0)
+++ trunk/hudson/plugins/view-job-filters/src/main/webapp/build-duration-help.html	2012-09-07 19:08:51 UTC (rev 40701)
@@ -0,0 +1,9 @@
+<div>
+Put jobs into views based on build durations.  For example:
+<br/>
+<ul>
+	<li>All jobs where the last build was more than an hour</li>
+	<li>All jobs where at least one build was more than 10 hours</li>
+	<li>All jobs where every build in the last week was less than a minute</li>
+</ul>
+</div>
\ No newline at end of file
Property changes on: trunk/hudson/plugins/view-job-filters/src/main/webapp/build-duration-help.html
___________________________________________________________________

Added: svn:mime-type

Reply via email to