@VisibleForTesting static List<String> convertToLabelNames(List<LabelKey> labelKeys) { final List<String> labelNames = new ArrayList<String>(labelKeys.size()); for (LabelKey labelKey : labelKeys) { labelNames.add(Collector.sanitizeMetricName(labelKey.getKey())); } return labelNames; }
@VisibleForTesting static Dimension createDimension(LabelKey labelKey, LabelValue labelValue) { Dimension.Builder builder = Dimension.newBuilder(); String value = labelValue.getValue(); if (!Strings.isNullOrEmpty(value)) { builder.setKey(labelKey.getKey()).setValue(value); } return builder.build(); }
@VisibleForTesting static Metric createMetric( io.opencensus.metrics.export.MetricDescriptor metricDescriptor, List<LabelValue> labelValues, String domain) { Metric.Builder builder = Metric.newBuilder(); builder.setType(generateType(metricDescriptor.getName(), domain)); Map<String, String> stringTagMap = Maps.newHashMap(); List<LabelKey> labelKeys = metricDescriptor.getLabelKeys(); for (int i = 0; i < labelValues.size(); i++) { String value = labelValues.get(i).getValue(); if (value == null) { continue; } stringTagMap.put(labelKeys.get(i).getKey(), value); } stringTagMap.put(OPENCENSUS_TASK, OPENCENSUS_TASK_VALUE_DEFAULT); builder.putAllLabels(stringTagMap); return builder.build(); }
@VisibleForTesting static LabelDescriptor createLabelDescriptor(LabelKey labelKey) { LabelDescriptor.Builder builder = LabelDescriptor.newBuilder(); builder.setKey(labelKey.getKey()); builder.setDescription(labelKey.getDescription()); // Now we only support String tags builder.setValueType(ValueType.STRING); return builder.build(); }
@Test public void testGetKey() { assertThat(KEY.getKey()).isEqualTo("key"); }
@Test public void create_NoLengthConstraint() { // We have a length constraint of 256-characters for TagKey. That constraint doesn't apply to // LabelKey. char[] chars = new char[300]; Arrays.fill(chars, 'k'); String key = new String(chars); assertThat(LabelKey.create(key, "").getKey()).isEqualTo(key); }
private static LabelKey toLabelKeyProto(io.opencensus.metrics.LabelKey labelKey) { return LabelKey.newBuilder() .setKey(labelKey.getKey()) .setDescription(labelKey.getDescription()) .build(); }
@Test public void createDimensionsIgnoresEmptyValues() { List<Dimension> dimensions = Lists.newArrayList( SignalFxSessionAdaptor.createDimensions( ImmutableList.of(LABEL_KEY_1, LABEL_KEY_2), ImmutableList.of(LABEL_VALUE_1, EMPTY_LABEL_VALUE))); assertEquals(1, dimensions.size()); assertEquals(LABEL_KEY_1.getKey(), dimensions.get(0).getKey()); assertEquals(LABEL_VALUE_1.getValue(), dimensions.get(0).getValue()); }
@Test public void create_WithUnprintableChars() { String key = "\2ab\3cd"; String description = "\4ef\5gh"; LabelKey labelKey = LabelKey.create(key, description); assertThat(labelKey.getKey()).isEqualTo(key); assertThat(labelKey.getDescription()).isEqualTo(description); }
@Test public void create_WithNonAsciiChars() { String key = "键"; String description = "测试用键"; LabelKey nonAsciiKey = LabelKey.create(key, description); assertThat(nonAsciiKey.getKey()).isEqualTo(key); assertThat(nonAsciiKey.getDescription()).isEqualTo(description); }
@Test public void create_Empty() { LabelKey emptyKey = LabelKey.create("", ""); assertThat(emptyKey.getKey()).isEmpty(); assertThat(emptyKey.getDescription()).isEmpty(); }
@Test public void createDimension() { Dimension dimension = SignalFxSessionAdaptor.createDimension(LABEL_KEY_1, LABEL_VALUE_1); assertEquals(LABEL_KEY_1.getKey(), dimension.getKey()); assertEquals(LABEL_VALUE_1.getValue(), dimension.getValue()); }
@Test public void createMetricDescriptor() { MetricDescriptor metricDescriptor = StackdriverExportUtils.createMetricDescriptor( METRIC_DESCRIPTOR, PROJECT_ID, "custom.googleapis.com/myorg/", "myorg/"); assertThat(metricDescriptor.getName()) .isEqualTo( "projects/" + PROJECT_ID + "/metricDescriptors/custom.googleapis.com/myorg/" + METRIC_NAME); assertThat(metricDescriptor.getDescription()).isEqualTo(METRIC_DESCRIPTION); assertThat(metricDescriptor.getDisplayName()).isEqualTo("myorg/" + METRIC_NAME); assertThat(metricDescriptor.getType()).isEqualTo("custom.googleapis.com/myorg/" + METRIC_NAME); assertThat(metricDescriptor.getUnit()).isEqualTo(METRIC_UNIT); assertThat(metricDescriptor.getMetricKind()).isEqualTo(MetricKind.CUMULATIVE); assertThat(metricDescriptor.getValueType()).isEqualTo(MetricDescriptor.ValueType.DOUBLE); assertThat(metricDescriptor.getLabelsList()) .containsExactly( LabelDescriptor.newBuilder() .setKey(LABEL_KEY.get(0).getKey()) .setDescription(LABEL_KEY.get(0).getDescription()) .setValueType(ValueType.STRING) .build(), LabelDescriptor.newBuilder() .setKey(StackdriverExportUtils.OPENCENSUS_TASK) .setDescription(StackdriverExportUtils.OPENCENSUS_TASK_DESCRIPTION) .setValueType(ValueType.STRING) .build()); }
@Test public void adaptMetricIntoDatapoints() { List<DataPoint> datapoints = SignalFxSessionAdaptor.adapt(METRIC); assertEquals(2, datapoints.size()); for (DataPoint dp : datapoints) { assertEquals(METRIC_NAME, dp.getMetric()); assertEquals(MetricType.CUMULATIVE_COUNTER, dp.getMetricType()); assertEquals(1, dp.getDimensionsCount()); assertTrue(dp.hasValue()); assertFalse(dp.hasSource()); Datum datum = dp.getValue(); assertTrue(datum.hasIntValue()); assertFalse(datum.hasDoubleValue()); assertFalse(datum.hasStrValue()); Dimension dimension = dp.getDimensions(0); assertEquals(LABEL_KEY_1.getKey(), dimension.getKey()); switch (dimension.getValue()) { case "value1": assertEquals(2L, datum.getIntValue()); break; case "value2": assertEquals(3L, datum.getIntValue()); break; default: fail("unexpected dimension value"); } } }
case 1: Dimension dimension = dp.getDimensions(0); assertEquals(LABEL_KEY_1.getKey(), dimension.getKey()); assertEquals(LABEL_VALUE_1.getValue(), dimension.getValue()); assertEquals(2L, datum.getIntValue());
.addLabelKeys( io.opencensus.proto.metrics.v1.LabelKey.newBuilder() .setKey(KEY_1.getKey()) .setDescription(KEY_1.getDescription()) .build())