package org.apache.hadoop.corona;
import junit.framework.Assert;
import org.apache.hadoop.metrics.MetricsContext;
import org.apache.hadoop.metrics.MetricsUtil;
import org.apache.hadoop.metrics.spi.OutputRecord;
class ClusterManagerMetricsVerifier {
final int requestedMaps;
final int requestedReduces;
final int releasedMaps;
final int releasedReduces;
final int grantedMaps;
final int grantedReduces;
final int revokedMaps;
final int revokedReduces;
final ClusterManager cm;
ClusterManagerMetricsVerifier(ClusterManager cm,
int requestedMaps, int requestedReduces,
int grantedMaps, int grantedReduces,
int releasedMaps, int releasedReduces,
int revokedMaps, int revokedReduces) {
this.cm = cm;
this.requestedMaps = requestedMaps;
this.requestedReduces = requestedReduces;
this.releasedMaps = releasedMaps;
this.releasedReduces = releasedReduces;
this.grantedMaps = grantedMaps;
this.grantedReduces = grantedReduces;
this.revokedMaps = revokedMaps;
this.revokedReduces = revokedReduces;
}
void verifyAll() throws Exception {
verifyMetrics("requested_map", requestedMaps);
verifyMetrics("requested_reduce", requestedReduces);
verifyMetrics("granted_map", grantedMaps);
verifyMetrics("granted_reduce", grantedReduces);
verifyMetrics("released_map", releasedMaps);
verifyMetrics("released_reduce", releasedReduces);
verifyMetrics("revoked_map", revokedMaps);
verifyMetrics("revoked_reduce", revokedReduces);
}
private void verifyMetrics(String name, int expectValue) throws Exception {
MetricsContext context = MetricsUtil.getContext(
ClusterManagerMetrics.CONTEXT_NAME);
cm.metrics.doUpdates(context);
OutputRecord record = context.getAllRecords().get(
ClusterManagerMetrics.CONTEXT_NAME).iterator().next();
Assert.assertEquals(expectValue, record.getMetric(name).intValue());
}
}