CAMEL-9179: Add uptime to Camel route list command.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6d3d1309 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6d3d1309 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6d3d1309 Branch: refs/heads/master Commit: 6d3d1309c364201ac17c677644818c174c597e62 Parents: 92c5fe5 Author: Claus Ibsen <davscl...@apache.org> Authored: Mon Sep 28 11:07:34 2015 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Mon Sep 28 11:07:34 2015 +0200 ---------------------------------------------------------------------- .../commands/AbstractLocalCamelController.java | 12 +++++ .../apache/camel/commands/RouteListCommand.java | 48 ++++++++++++++++++-- .../jolokia/DefaultJolokiaCamelController.java | 6 ++- 3 files changed, 61 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/6d3d1309/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java ---------------------------------------------------------------------- diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java index 823e5b3..6d80584 100644 --- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java +++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/AbstractLocalCamelController.java @@ -37,6 +37,7 @@ import org.apache.camel.Endpoint; import org.apache.camel.Route; import org.apache.camel.ServiceStatus; import org.apache.camel.StatefulService; +import org.apache.camel.api.management.mbean.ManagedRouteMBean; import org.apache.camel.model.ModelHelper; import org.apache.camel.model.RouteDefinition; import org.apache.camel.model.rest.RestDefinition; @@ -266,6 +267,17 @@ public abstract class AbstractLocalCamelController extends AbstractCamelControll row.put("camelContextName", context.getName()); row.put("routeId", route.getId()); row.put("state", getRouteState(route)); + row.put("uptime", route.getUptime()); + ManagedRouteMBean mr = context.getManagedRoute(route.getId(), ManagedRouteMBean.class); + if (mr != null) { + row.put("exchangesTotal", "" + mr.getExchangesTotal()); + row.put("exchangesInflight", "" + mr.getExchangesInflight()); + row.put("exchangesFailed", "" + mr.getExchangesFailed()); + } else { + row.put("exchangesTotal", "0"); + row.put("exchangesInflight", "0"); + row.put("exchangesFailed", "0"); + } answer.add(row); } } http://git-wip-us.apache.org/repos/asf/camel/blob/6d3d1309/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java ---------------------------------------------------------------------- diff --git a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java index 8c00d7a..2c94afd 100644 --- a/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java +++ b/platforms/commands/commands-core/src/main/java/org/apache/camel/commands/RouteListCommand.java @@ -29,6 +29,10 @@ public class RouteListCommand extends AbstractCamelCommand { private static final String CONTEXT_COLUMN_LABEL = "Context"; private static final String ROUTE_COLUMN_LABEL = "Route"; private static final String STATUS_COLUMN_LABEL = "Status"; + private static final String TOTAL_COLUMN_LABEL = "Total #"; + private static final String FAILED_COLUMN_LABEL = "Failed #"; + private static final String INFLIGHT_COLUMN_LABEL = "Inflight #"; + private static final String UPTIME_COLUMN_LABEL = "Uptime"; private static final int DEFAULT_COLUMN_WIDTH_INCREMENT = 0; private static final String DEFAULT_FIELD_PREAMBLE = " "; @@ -54,13 +58,17 @@ public class RouteListCommand extends AbstractCamelCommand { final String rowFormat = buildFormatString(columnWidths, false); if (routes.size() > 0) { - out.println(String.format(headerFormat, CONTEXT_COLUMN_LABEL, ROUTE_COLUMN_LABEL, STATUS_COLUMN_LABEL)); - out.println(String.format(headerFormat, "-------", "-----", "------")); + out.println(String.format(headerFormat, CONTEXT_COLUMN_LABEL, ROUTE_COLUMN_LABEL, STATUS_COLUMN_LABEL, TOTAL_COLUMN_LABEL, FAILED_COLUMN_LABEL, INFLIGHT_COLUMN_LABEL, UPTIME_COLUMN_LABEL)); + out.println(String.format(headerFormat, "-------", "-----", "------", "-------", "--------", "----------", "------")); for (Map<String, String> row : routes) { String contextId = row.get("camelContextName"); String routeId = row.get("routeId"); String state = row.get("state"); - out.println(String.format(rowFormat, contextId, routeId, state)); + String total = row.get("exchangesTotal"); + String failed = row.get("exchangesFailed"); + String inflight = row.get("exchangesInflight"); + String uptime = row.get("uptime"); + out.println(String.format(rowFormat, contextId, routeId, state, total, failed, inflight, uptime)); } } @@ -74,6 +82,10 @@ public class RouteListCommand extends AbstractCamelCommand { int maxContextLen = 0; int maxRouteLen = 0; int maxStatusLen = 0; + int maxTotalLen = 0; + int maxFailedLen = 0; + int maxInflightLen = 0; + int maxUptimeLen = 0; for (Map<String, String> row : routes) { final String contextId = row.get("camelContextName"); @@ -84,12 +96,28 @@ public class RouteListCommand extends AbstractCamelCommand { final String status = row.get("state"); maxStatusLen = java.lang.Math.max(maxStatusLen, status == null ? 0 : status.length()); + + final String total = row.get("exchangesTotal"); + maxTotalLen = java.lang.Math.max(maxTotalLen, total == null ? 0 : total.length()); + + final String failed = row.get("exchangesFailed"); + maxFailedLen = java.lang.Math.max(maxFailedLen, failed == null ? 0 : failed.length()); + + final String inflight = row.get("exchangesInflight"); + maxInflightLen = java.lang.Math.max(maxInflightLen, inflight == null ? 0 : inflight.length()); + + final String uptime = row.get("uptime"); + maxUptimeLen = java.lang.Math.max(maxUptimeLen, uptime == null ? 0 : uptime.length()); } final Map<String, Integer> retval = new Hashtable<String, Integer>(3); retval.put(CONTEXT_COLUMN_LABEL, maxContextLen); retval.put(ROUTE_COLUMN_LABEL, maxRouteLen); retval.put(STATUS_COLUMN_LABEL, maxStatusLen); + retval.put(TOTAL_COLUMN_LABEL, maxTotalLen); + retval.put(FAILED_COLUMN_LABEL, maxFailedLen); + retval.put(INFLIGHT_COLUMN_LABEL, maxInflightLen); + retval.put(UPTIME_COLUMN_LABEL, maxUptimeLen); return retval; } @@ -112,14 +140,26 @@ public class RouteListCommand extends AbstractCamelCommand { int contextLen = Math.min(columnWidths.get(CONTEXT_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH); int routeLen = Math.min(columnWidths.get(ROUTE_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH); int statusLen = Math.min(columnWidths.get(STATUS_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH); + int totalLen = Math.min(columnWidths.get(TOTAL_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH); + int failedlLen = Math.min(columnWidths.get(FAILED_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH); + int inflightLen = Math.min(columnWidths.get(INFLIGHT_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH); + int uptimeLen = Math.min(columnWidths.get(UPTIME_COLUMN_LABEL) + columnWidthIncrement, MAX_COLUMN_WIDTH); contextLen = Math.max(MIN_COLUMN_WIDTH, contextLen); routeLen = Math.max(MIN_COLUMN_WIDTH, routeLen); - // last row does not have min width + statusLen = Math.max(MIN_COLUMN_WIDTH, statusLen); + totalLen = Math.max(MIN_COLUMN_WIDTH, totalLen); + failedlLen = Math.max(MIN_COLUMN_WIDTH, failedlLen); + inflightLen = Math.max(MIN_COLUMN_WIDTH, inflightLen); + uptimeLen = Math.max(MIN_COLUMN_WIDTH, uptimeLen); final StringBuilder retval = new StringBuilder(DEFAULT_FORMAT_BUFFER_LENGTH); retval.append(fieldPreamble).append("%-").append(contextLen).append('.').append(contextLen).append('s').append(fieldPostamble).append(' '); retval.append(fieldPreamble).append("%-").append(routeLen).append('.').append(routeLen).append('s').append(fieldPostamble).append(' '); retval.append(fieldPreamble).append("%-").append(statusLen).append('.').append(statusLen).append('s').append(fieldPostamble).append(' '); + retval.append(fieldPreamble).append("%").append(totalLen).append('.').append(totalLen).append('s').append(fieldPostamble).append(' '); + retval.append(fieldPreamble).append("%").append(failedlLen).append('.').append(failedlLen).append('s').append(fieldPostamble).append(' '); + retval.append(fieldPreamble).append("%").append(inflightLen).append('.').append(inflightLen).append('s').append(fieldPostamble).append(' '); + retval.append(fieldPreamble).append("%-").append(uptimeLen).append('.').append(uptimeLen).append('s').append(fieldPostamble).append(' '); return retval.toString(); } http://git-wip-us.apache.org/repos/asf/camel/blob/6d3d1309/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java ---------------------------------------------------------------------- diff --git a/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java b/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java index 6404fa2..21fd022 100644 --- a/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java +++ b/platforms/commands/commands-jolokia/src/main/java/org/apache/camel/commands/jolokia/DefaultJolokiaCamelController.java @@ -332,7 +332,7 @@ public class DefaultJolokiaCamelController extends AbstractCamelController imple List<J4pReadRequest> list = new ArrayList<J4pReadRequest>(); for (ObjectName on : sr.getObjectNames()) { - list.add(new J4pReadRequest(on, "CamelId", "RouteId", "State")); + list.add(new J4pReadRequest(on, "CamelId", "RouteId", "State", "Uptime", "ExchangesTotal", "ExchangesInflight", "ExchangesFailed")); } List<J4pReadResponse> lrr = jolokia.execute(list); @@ -343,6 +343,10 @@ public class DefaultJolokiaCamelController extends AbstractCamelController imple row.put("camelContextName", rr.getValue("CamelId").toString()); row.put("routeId", routeId); row.put("state", rr.getValue("State").toString()); + row.put("uptime", rr.getValue("Uptime").toString()); + row.put("exchangesTotal", rr.getValue("ExchangesTotal").toString()); + row.put("exchangesInflight", rr.getValue("ExchangesInflight").toString()); + row.put("exchangesFailed", rr.getValue("ExchangesFailed").toString()); answer.add(row); } }