bridge.addMetric(MetricName.parse("sheep[baabaablack].bagsfull.count"), Semantics.COUNTER, ONE.multiply(1000), 3); bridge.addMetric(MetricName.parse("sheep[baabaablack].bagsfull.haveany"), Semantics.INSTANT, null, new AtomicBoolean(true)); bridge.addMetric(MetricName.parse("sheep[limpy].bagsfull.haveany"), Semantics.INSTANT, null, new AtomicBoolean(false)); bridge.addMetric(MetricName.parse("sheep[insomniac].jumps"), Semantics.COUNTER, ONE, 12345678901234L); bridge.addMetric(MetricName.parse("sheep[limpy].legs.available"), Semantics.DISCRETE, ONE, 0.75); bridge.addMetric(MetricName.parse("sheep[limpy].jumpitem"), Semantics.DISCRETE, null, "fence"); bridge.addMetric(MetricName.parse("sheep[insomniac].lastjumped"), Semantics.INSTANT, null, new GregorianCalendar(), new AbstractTypeHandler<GregorianCalendar>( MmvMetricType.I32, 4) { bridge.addMetric(MetricName.parse("cow.how.now"), Semantics.INSTANT, null, new Date()); bridge.addMetric(MetricName.parse("cow.how.then"), Semantics.INSTANT, null, new GregorianCalendar(1990, 1, 1, 12, 34, 56).getTime()); bridge.addMetric(MetricName.parse("cow.bytes.total"), Semantics.COUNTER, BYTE, 10000001); bridge.addMetric(MetricName.parse("cow.bytes.rate"), Semantics.INSTANT, BYTE.multiply(1024).divide(SECOND), new Date());
@Test @SuppressWarnings("unchecked") public void shouldBuildAByteBufferOfTheCorrectLength() throws IOException { InstanceDomain instanceDomain = mock(InstanceDomain.class); Instance instance = mock(Instance.class); PcpMetricInfo pcpMetricInfo = mock(PcpMetricInfo.class); when(pcpMetricInfo.getTypeHandler()).thenReturn(mock(TypeHandler.class)); when(pcpMetricInfo.byteSize()).thenReturn(MOCK_PCP_METRIC_INFO_BYTE_SIZE); when(instanceDomain.getInstances()).thenReturn(singletonList(instance)); when(instanceDomain.byteSize()).thenReturn(MOCK_INSTANCE_DOMAIN_BYTE_SIZE); when(instance.byteSize()).thenReturn(MOCK_INSTANCE_BYTE_SIZE); when(metricInfoStore.byName(SOME_METRIC_NAME)).thenReturn(pcpMetricInfo); when(metricInfoStore.all()).thenReturn(singletonList(pcpMetricInfo)); when(instanceDomainStore.all()).thenReturn(singletonList(instanceDomain)); when(byteBuffer.slice()).thenReturn(mock(ByteBuffer.class)); pcpMmvWriter.addMetric(MetricName.parse(SOME_METRIC_NAME), Semantics.COUNTER, null, 1); pcpMmvWriter.setMetricHelpText(SOME_METRIC_NAME, "Short help", "Long help"); pcpMmvWriter.start(); verify(byteBufferFactory).build(EXPECTED_LENGTH); }
@Test @SuppressWarnings("unchecked") public void ensureUpdatesAreIgnoredAfterResetIsCalled() throws IOException { MetricName metricName = MetricName.parse(SOME_METRIC_NAME); TypeHandler<CustomType> customTypeTypeHandler = mock(TypeHandler.class); PcpMetricInfo pcpMetricInfo = mock(PcpMetricInfo.class); when(customTypeTypeHandler.getMetricType()).thenReturn(MmvMetricType.DOUBLE); when(metricInfoStore.byName(SOME_METRIC_NAME)).thenReturn(pcpMetricInfo); doReturn(customTypeTypeHandler).when(pcpMetricInfo).getTypeHandler(); when(byteBuffer.slice()).thenReturn(mock(ByteBuffer.class)); pcpMmvWriter.registerType(CustomType.class, customTypeTypeHandler); pcpMmvWriter.start(); pcpMmvWriter.reset(); Mockito.reset(customTypeTypeHandler); pcpMmvWriter.addMetric(metricName, Semantics.COUNTER, ONE, new CustomType()); pcpMmvWriter.updateMetric(metricName, new CustomType()); verify(customTypeTypeHandler, never()).putBytes(any(ByteBuffer.class), any(CustomType.class)); }
@Test public void bothMmvVersionsShouldSupportAddingAMetric() throws Exception { pcpMmvWriterV1.reset(); pcpMmvWriterV1.addMetric(MetricName.parse("v1.integer"), Semantics.COUNTER, ONE, 3); pcpMmvWriterV1.start(); pcpMmvWriterV2.reset(); pcpMmvWriterV2.addMetric(MetricName.parse("v2.integer"), Semantics.COUNTER, ONE, 3); pcpMmvWriterV2.start(); waitForReload(); assertMetric("mmv.v1.integer", is("3.000")); assertMetric("mmv.v2.integer", is("3.000")); }
@Test public void mmvVersion2ShouldSupportInstanceNamesOver63Characters() throws Exception { pcpMmvWriterV2.reset(); pcpMmvWriterV2.addMetric(MetricName.parse("v2.integer[instance_name_over_63_characters_instance_name_over_63_characters_instance]"), Semantics.COUNTER, ONE, 11); pcpMmvWriterV2.start(); waitForReload(); assertMetric("mmv.v2.integer[instance_name_over_63_characters_instance_name_over_63_characters_instance]", is("11.000")); }
@Test public void mmvVersion2ShouldSupportMetricNamesOver63Characters() throws Exception { pcpMmvWriterV2.reset(); pcpMmvWriterV2.addMetric(MetricName.parse("v2.metric.that.is.longer.than.63.characters.v2.metric.that.is.longer.than.63.characters"), Semantics.COUNTER, ONE, 10); pcpMmvWriterV2.start(); waitForReload(); assertMetric("mmv.v2.metric.that.is.longer.than.63.characters.v2.metric.that.is.longer.than.63.characters", is("10.000")); }