use of io.opencensus.tags.TagKey in project instrumentation-java by census-instrumentation.
the class StatszZPageHandlerTest method assertContainsViewData.
private static void assertContainsViewData(OutputStream output, ViewData viewData) {
View view = viewData.getView();
assertThat(output.toString()).contains(view.getName().asString());
assertThat(output.toString()).contains(view.getDescription());
assertThat(output.toString()).contains(view.getMeasure().getName());
for (TagKey tagKey : view.getColumns()) {
assertThat(output.toString()).contains(tagKey.getName());
}
String aggregationType = view.getAggregation().match(Functions.returnConstant("Sum"), Functions.returnConstant("Count"), Functions.returnConstant("Distribution"), Functions.returnConstant("Last Value"), new Function<Aggregation, String>() {
@Override
public String apply(Aggregation arg) {
if (arg instanceof Aggregation.Mean) {
return "Mean";
}
throw new AssertionError();
}
});
assertThat(output.toString()).contains(aggregationType);
for (Map.Entry<List<TagValue>, AggregationData> /*@Nullable*/
entry : viewData.getAggregationMap().entrySet()) {
List<TagValue> tagValues = entry.getKey();
for (TagValue tagValue : tagValues) {
String tagValueStr = tagValue == null ? "" : tagValue.asString();
assertThat(output.toString()).contains(tagValueStr);
}
entry.getValue().match(Functions.</*@Nullable*/
Void>throwAssertionError(), Functions.</*@Nullable*/
Void>throwAssertionError(), Functions.</*@Nullable*/
Void>throwAssertionError(), new Function<AggregationData.DistributionData, Void>() {
@Override
public Void apply(AggregationData.DistributionData arg) {
assertThat(output.toString()).contains(String.valueOf(arg.getCount()));
assertThat(output.toString()).contains(String.valueOf(arg.getMax()));
assertThat(output.toString()).contains(String.valueOf(arg.getMin()));
assertThat(output.toString()).contains(String.valueOf(arg.getMean()));
assertThat(output.toString()).contains(String.valueOf(arg.getSumOfSquaredDeviations()));
return null;
}
}, Functions.</*@Nullable*/
Void>throwAssertionError(), Functions.</*@Nullable*/
Void>throwAssertionError(), new Function<AggregationData, Void>() {
@Override
public Void apply(AggregationData arg) {
if (arg instanceof MeanData) {
MeanData meanData = (MeanData) arg;
assertThat(output.toString()).contains(String.valueOf(meanData.getCount()));
assertThat(output.toString()).contains(String.valueOf(meanData.getMean()));
return null;
}
throw new AssertionError();
}
});
}
}
use of io.opencensus.tags.TagKey in project instrumentation-java by census-instrumentation.
the class ViewTest method preventDuplicateColumns.
@Test
public void preventDuplicateColumns() {
TagKey key1 = TagKey.create("duplicate");
TagKey key2 = TagKey.create("duplicate");
thrown.expect(IllegalArgumentException.class);
thrown.expectMessage("Columns have duplicate.");
View.create(NAME, DESCRIPTION, MEASURE, MEAN, Arrays.asList(key1, key2));
}
use of io.opencensus.tags.TagKey in project instrumentation-java by census-instrumentation.
the class StatszZPageHandler method emitViewDataTableHeader.
private static void emitViewDataTableHeader(View view, PrintWriter out, Formatter formatter) {
out.write("<thead>");
out.write("<tr>");
for (TagKey tagKey : view.getColumns()) {
formatter.format("<th class=\"borderRL\">TagKey: %s (string)</th>", tagKey.getName());
}
String unit = view.getMeasure().getUnit();
view.getAggregation().match(new Function<Sum, Void>() {
@Override
public Void apply(Sum arg) {
formatter.format("<th class=\"borderL\">%s, %s</th>", TABLE_HEADER_SUM, unit);
return null;
}
}, new Function<Count, Void>() {
@Override
public Void apply(Count arg) {
formatter.format("<th class=\"borderL\">%s</th>", TABLE_HEADER_COUNT);
return null;
}
}, new Function<Distribution, Void>() {
@Override
public Void apply(Distribution arg) {
formatter.format("<th>%s, %s</th>", TABLE_HEADER_MEAN, unit);
formatter.format("<th class=\"borderL\">%s</th>", TABLE_HEADER_COUNT);
formatter.format("<th class=\"borderL\">%s, %s</th>", TABLE_HEADER_MAX, unit);
formatter.format("<th class=\"borderL\">%s, %s</th>", TABLE_HEADER_MIN, unit);
formatter.format("<th class=\"borderL\">%s</th>", TABLE_HEADER_DEV);
formatter.format("<th class=\"borderL\">%s</th>", TABLE_HEADER_HISTOGRAM);
return null;
}
}, new Function<LastValue, Void>() {
@Override
public Void apply(LastValue arg) {
formatter.format("<th class=\"borderL\">%s, %s</th>", TABLE_HEADER_LAST_VALUE, unit);
return null;
}
}, new Function<Aggregation, Void>() {
@Override
public Void apply(Aggregation arg) {
// deprecated RPC views.
if (arg instanceof Aggregation.Mean) {
formatter.format("<th>%s, %s</th>", TABLE_HEADER_MEAN, unit);
formatter.format("<th class=\"borderL\">%s</th>", TABLE_HEADER_COUNT);
return null;
}
throw new IllegalArgumentException("Unknown Aggregation.");
}
});
out.write("</tr>");
out.write("</thead>");
}
use of io.opencensus.tags.TagKey in project instrumentation-java by census-instrumentation.
the class MetricUtils method viewToMetricDescriptor.
@javax.annotation.Nullable
static MetricDescriptor viewToMetricDescriptor(View view) {
if (view.getWindow() instanceof View.AggregationWindow.Interval) {
// Only creates Metric for cumulative stats.
return null;
}
List<LabelKey> labelKeys = new ArrayList<LabelKey>();
for (TagKey tagKey : view.getColumns()) {
// TODO: add description
labelKeys.add(LabelKey.create(tagKey.getName(), ""));
}
Measure measure = view.getMeasure();
Aggregation aggregation = view.getAggregation();
return MetricDescriptor.create(view.getName().asString(), view.getDescription(), getUnit(measure, aggregation), getType(measure, aggregation), labelKeys);
}
use of io.opencensus.tags.TagKey in project instrumentation-java by census-instrumentation.
the class RecordUtils method getTagMap.
static Map<TagKey, TagValueWithMetadata> getTagMap(TagContext ctx) {
if (ctx instanceof TagMapImpl) {
return ((TagMapImpl) ctx).getTags();
}
Map<TagKey, TagValueWithMetadata> tags = Maps.newHashMap();
for (Iterator<Tag> i = InternalUtils.getTags(ctx); i.hasNext(); ) {
Tag tag = i.next();
tags.put(tag.getKey(), TagValueWithMetadata.create(tag.getValue(), tag.getTagMetadata()));
}
return tags;
}
Aggregations