private static boolean isEmpty(final ProcessGroupStatus status) { for (final ProcessGroupStatusDescriptor descriptor : ProcessGroupStatusDescriptor.values()) { final Long value = descriptor.getDescriptor().getValueFunction().getValue(status); if (value != null && value > 0) { return false; } } return true; }
private Map<String, MetricDescriptor<?>> getStandardMetricDescriptors(final URI uri) { final String path = uri.getPath(); final Map<String, MetricDescriptor<?>> metricDescriptors = new HashMap<>(); if (PROCESSOR_STATUS_HISTORY_URI_PATTERN.matcher(path).matches()) { for (final ProcessorStatusDescriptor descriptor : ProcessorStatusDescriptor.values()) { metricDescriptors.put(descriptor.getField(), descriptor.getDescriptor()); } } else if (PROCESS_GROUP_STATUS_HISTORY_URI_PATTERN.matcher(path).matches()) { for (final ProcessGroupStatusDescriptor descriptor : ProcessGroupStatusDescriptor.values()) { metricDescriptors.put(descriptor.getField(), descriptor.getDescriptor()); } } else if (REMOTE_PROCESS_GROUP_STATUS_HISTORY_URI_PATTERN.matcher(path).matches()) { for (final RemoteProcessGroupStatusDescriptor descriptor : RemoteProcessGroupStatusDescriptor.values()) { metricDescriptors.put(descriptor.getField(), descriptor.getDescriptor()); } } else if (CONNECTION_STATUS_HISTORY_URI_PATTERN.matcher(path).matches()) { for (final ConnectionStatusDescriptor descriptor : ConnectionStatusDescriptor.values()) { metricDescriptors.put(descriptor.getField(), descriptor.getDescriptor()); } } return metricDescriptors; }
private static long calculateTaskMillis(final ProcessGroupStatus status) { long nanos = 0L; for (final ProcessorStatus procStatus : status.getProcessorStatus()) { nanos += procStatus.getProcessingNanos(); } for (final ProcessGroupStatus childStatus : status.getProcessGroupStatus()) { nanos += calculateTaskMillis(childStatus); } return TimeUnit.MILLISECONDS.convert(nanos, TimeUnit.NANOSECONDS); } }
public static StatusSnapshot createSnapshot(final ProcessGroupStatus status, final Date timestamp) { if (isEmpty(status)) { return null; } final StandardStatusSnapshot snapshot = new StandardStatusSnapshot(PROCESS_GROUP_METRICS); snapshot.setTimestamp(timestamp); for (final ProcessGroupStatusDescriptor descriptor : ProcessGroupStatusDescriptor.values()) { snapshot.addStatusMetric(descriptor.getDescriptor(), descriptor.getDescriptor().getValueFunction().getValue(status)); } return snapshot; }