Add averageDuration for execution job info (v5)

This commit is contained in:
Greg Schueler 2012-10-19 10:34:45 -07:00
parent 1a810ac463
commit 90d9a46c89
4 changed files with 50 additions and 2 deletions

View file

@ -37,6 +37,8 @@ public class RundeckJob implements Serializable {
private String description;
private long averageDuration = -1L;
/**
* @return the fullname : group + name (exact format is : "group/name")
*/
@ -92,7 +94,7 @@ public class RundeckJob implements Serializable {
@Override
public String toString() {
return "RundeckJob [id=" + id + ", name=" + name + ", group=" + group + ", project=" + project
+ ", description=" + description + "]";
+ ", description=" + description + ", averageDuration="+averageDuration+"]";
}
@Override
@ -104,6 +106,7 @@ public class RundeckJob implements Serializable {
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((project == null) ? 0 : project.hashCode());
result = prime * result + (int) (averageDuration ^ (averageDuration >>> 32));
return result;
}
@ -141,7 +144,18 @@ public class RundeckJob implements Serializable {
return false;
} else if (!project.equals(other.project))
return false;
if (averageDuration != other.averageDuration) {
return false;
}
return true;
}
public long getAverageDuration() {
return averageDuration;
}
public void setAverageDuration(long averageDuration) {
this.averageDuration = averageDuration;
}
}

View file

@ -58,6 +58,11 @@ public class JobParser implements XmlNodeParser<RundeckJob> {
}
job.setId(jobId);
String averageDuration = StringUtils.trimToNull(jobNode.valueOf("@averageDuration"));
if (averageDuration != null) {
job.setAverageDuration(Long.valueOf(averageDuration));
}
// project is either a nested element of context, or just a child element
Node contextNode = jobNode.selectSingleNode("context");
if (contextNode != null) {

View file

@ -42,4 +42,33 @@ public class JobParserTest {
Assert.assertEquals("project-name", job.getProject());
}
@Test
public void parseExecutionJob1() throws Exception {
InputStream input = getClass().getResourceAsStream("execution-running.xml");
Document document = ParserHelper.loadDocument(input);
RundeckJob job = new JobParser("result/executions/execution/job").parseXmlNode(document);
Assert.assertEquals("1", job.getId());
Assert.assertEquals("ls", job.getName());
Assert.assertEquals("list files", job.getDescription());
Assert.assertEquals("system", job.getGroup());
Assert.assertEquals("test", job.getProject());
Assert.assertEquals(10000L, job.getAverageDuration());
}
@Test
public void parseExecutionJob2() throws Exception {
InputStream input = getClass().getResourceAsStream("execution-succeeded.xml");
Document document = ParserHelper.loadDocument(input);
RundeckJob job = new JobParser("result/executions/execution/job").parseXmlNode(document);
Assert.assertEquals("1", job.getId());
Assert.assertEquals("ls", job.getName());
Assert.assertEquals("list files", job.getDescription());
Assert.assertEquals("system", job.getGroup());
Assert.assertEquals("test", job.getProject());
Assert.assertEquals(-1, job.getAverageDuration());
}
}

View file

@ -1 +1 @@
<result success='true' apiversion='1'><executions count='1'><execution id='1' href='http://localhost:4440/execution/follow/1' status='running'><user>admin</user><date-started unixtime='1302183830082'>2011-04-07T13:43:50Z</date-started><job id='1'><name>ls</name><group>system</group><project>test</project><description>list files</description></job><description>ls ${option.dir}</description><argstring>-arg1 value -arg2 value</argstring></execution></executions></result>
<result success='true' apiversion='1'><executions count='1'><execution id='1' href='http://localhost:4440/execution/follow/1' status='running'><user>admin</user><date-started unixtime='1302183830082'>2011-04-07T13:43:50Z</date-started><job id='1' averageDuration="10000"><name>ls</name><group>system</group><project>test</project><description>list files</description></job><description>ls ${option.dir}</description><argstring>-arg1 value -arg2 value</argstring></execution></executions></result>