%@ page language="java" import="java.util.Date,java.sql.Connection,java.sql.DriverManager,java.sql.ResultSet,java.sql.Statement,java.text.SimpleDateFormat" %>
Agent History
<%
String dbUsername = "SET_ME";
String dbPassword = "SET_ME";
String url = "jdbc:mysql://SET_ME/teamcity";
String requestedAgent = request.getParameter("agent") != null? request.getParameter("agent") : "";
out.print("Requested agent: " + requestedAgent + "
");
if (request.getParameter("debug") != null && request.getParameter("debug").toLowerCase().equals("true")) {
debug = true;
}
String DRIVER = "org.gjt.mm.mysql.Driver";
Class.forName(DRIVER).newInstance();
Connection connection = null;
Statement statement = null;
String agentSQL = "select distinct name from agent order by name";
String buildSQL = "select history.build_id, history.build_type_id, history.status, " +
"history.status_text, history.build_start_time_server, history.build_finish_time_server, " +
"projects.project_name, projects.build_type_name, projects.project_id " +
"from history, projects " +
"where projects.build_type_id = history.build_type_id " +
"and agent_name = '@AGENT@' " +
"order by build_id desc " +
"limit 100";
ResultSet agentResults = null;
ResultSet buildResults = null;
connection = DriverManager.getConnection(url, dbUsername, dbPassword);
statement = connection.createStatement();
agentResults = statement.executeQuery(agentSQL);
%>
<%
String updatedBuildSQL = buildSQL.replace("@AGENT@", requestedAgent);
buildResults = statement.executeQuery(updatedBuildSQL);
%>
| Status |
Project |
Build |
Build ID |
Result |
Start |
End |
<%
while (buildResults.next()) {
String buildID = buildResults.getString(1);
String buildTypeID = buildResults.getString(2);
int statusCode = buildResults.getInt(3);
String statusText = buildResults.getString(4);
long startTimeMillis = buildResults.getLong(5);
long endTimeMillis = buildResults.getLong(6);
String projectName = buildResults.getString(7);
String buildName = buildResults.getString(8);
String projectID = buildResults.getString(9);
SimpleDateFormat formatter = new SimpleDateFormat();
%>
| <%= getStatusFromCode(statusCode) %> |
<%= projectName %>
| <%= buildName %>
| <%= buildID %>
| <%= statusText %>
| <%= formatter.format(new Date(startTimeMillis)) %>
| <%= formatter.format(new Date(endTimeMillis)) %>
<%
}
if (agentResults != null)
agentResults.close();
if (buildResults != null)
buildResults.close();
statement.close();
connection.close();
%>
|
<%!
private boolean debug=false;
private String getStatusFromCode(int code) {
String result = String.valueOf(code);
switch (code) {
case 4: // Compilation failed
result = "Compilation Failed";
break;
case 0: // cancelled
result = "Cancelled";
break;
case 1: // success, do not break - need to parse results
result = "Success";
break;
case 3: // failed
result = "Failure";
}
return result;
}
private float round(float value, int places) {
float multiplier = (float)Math.pow(10, places);
float result = value * multiplier;
result = Math.round(result);
return (float)result/multiplier;
}
private void debug(String message) {
if (debug) {
System.out.println(message);
}
}
class BuildResult {
boolean success = false;
boolean compilationFailed = false;
boolean cancelled = false;
int passingTests = 0;
int failingTests = 0;
public String toString() {
return "Success? " + success + " Compilation Failed? " + compilationFailed + " Passed: " + passingTests + " Failed: " + failingTests;
}
}
%>