ResourceKey rKey = ep.makeKey();
Collection<MetricsBag> mbList =
((EclipsePersistenceMetricsGenerator) gen).addExtraEndPointMetrics(trace, rKey, Collections.singletonList(root));
assertEquals("Mismatched metrics count", 1, ListUtil.size(mbList));
MetricsBag mb = ListUtil.getFirstMember(mbList);
assertEquals("Mismatched resource key", rKey, mb.getResourceKey());
assertEquals("Mismatched time range", trace.getRange(), mb.getTimeRange());
String baseName = ((EclipsePersistenceMetricsGenerator) gen).getBaseMetricName(actionName);
Collection<String> keys = mb.getMetricKeys();
Map<String, PointType> suffixes = new TreeMap<String, MetricsBag.PointType>() {
private static final long serialVersionUID = 1L;
{
put(AbstractMetricsGenerator.INVOCATION_COUNT, PointType.COUNTER);
put(AbstractMetricsGenerator.EXECUTION_TIME, PointType.GAUGE);
}
};
assertEquals("Mismatched number of keys - " + keys, suffixes.size(), keys.size());
DataPoint expValue = DataPoint.dataPointFromRange(range);
for (Map.Entry<String, PointType> se : suffixes.entrySet()) {
String sfx = se.getKey();
String keyName = baseName + "." + sfx;
assertTrue("Missing " + keyName + " from " + keys, keys.contains(keyName));
PointType expType = se.getValue(), actType = mb.getMetricType(keyName);
assertEquals("Mismatched type for " + keyName, expType, actType);
List<IDataPoint> dpList = mb.getPoints(keyName);
assertEquals("Mismatched points size for " + keyName + " - " + dpList, 1, ListUtil.size(dpList));
IDataPoint dp = dpList.get(0);
assertEquals("Mismatched timestamp for " + keyName, expValue.getTime(), dp.getTime());