GH-2803: Deprecate legacy metrics

Resolves https://github.com/spring-projects/spring-integration/issues/2803

* Polishing - PR Comments

* More PR Comments

* Missed one comment
This commit is contained in:
Gary Russell
2019-04-10 10:48:32 -04:00
committed by Artem Bilan
parent 43d03c35b1
commit 6c3ffcb1d5
68 changed files with 660 additions and 279 deletions

View File

@@ -34,12 +34,6 @@ import org.springframework.integration.support.management.AbstractMessageChannel
import org.springframework.integration.support.management.AbstractMessageHandlerMetrics;
import org.springframework.integration.support.management.DefaultMessageChannelMetrics;
import org.springframework.integration.support.management.DefaultMessageHandlerMetrics;
import org.springframework.integration.support.management.ExponentialMovingAverage;
import org.springframework.integration.support.management.ExponentialMovingAverageRate;
import org.springframework.integration.support.management.ExponentialMovingAverageRatio;
import org.springframework.integration.support.management.MessageChannelMetrics;
import org.springframework.integration.support.management.MessageHandlerMetrics;
import org.springframework.integration.support.management.MetricsFactory;
import org.springframework.integration.test.util.TestUtils;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
@@ -56,6 +50,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@DirtiesContext
@SuppressWarnings("deprecation")
public class MBeanExporterParserTests {
@Autowired
@@ -72,38 +67,42 @@ public class MBeanExporterParserTests {
assertThat(properties.containsKey("bar")).isTrue();
assertThat(exporter.getServer()).isEqualTo(server);
assertThat(TestUtils.getPropertyValue(exporter, "namingStrategy")).isSameAs(context.getBean("keyNamer"));
MessageChannelMetrics metrics = context.getBean("foo", MessageChannelMetrics.class);
org.springframework.integration.support.management.MessageChannelMetrics metrics =
context.getBean("foo", org.springframework.integration.support.management.MessageChannelMetrics.class);
assertThat(metrics.isCountsEnabled()).isTrue();
assertThat(metrics.isStatsEnabled()).isFalse();
checkCustomized(metrics);
MessageHandlerMetrics handlerMetrics = context.getBean("transformer.handler", MessageHandlerMetrics.class);
org.springframework.integration.support.management.MessageHandlerMetrics handlerMetrics =
context.getBean("transformer.handler",
org.springframework.integration.support.management.MessageHandlerMetrics.class);
checkCustomized(handlerMetrics);
metrics = context.getBean("bar", MessageChannelMetrics.class);
metrics = context.getBean("bar", org.springframework.integration.support.management.MessageChannelMetrics.class);
assertThat(metrics.isCountsEnabled()).isTrue();
assertThat(metrics.isStatsEnabled()).isFalse();
metrics = context.getBean("baz", MessageChannelMetrics.class);
metrics = context.getBean("baz", org.springframework.integration.support.management.MessageChannelMetrics.class);
assertThat(metrics.isCountsEnabled()).isFalse();
assertThat(metrics.isStatsEnabled()).isFalse();
metrics = context.getBean("qux", MessageChannelMetrics.class);
metrics = context.getBean("qux", org.springframework.integration.support.management.MessageChannelMetrics.class);
assertThat(metrics.isCountsEnabled()).isFalse();
assertThat(metrics.isStatsEnabled()).isFalse();
metrics = context.getBean("fiz", MessageChannelMetrics.class);
metrics = context.getBean("fiz", org.springframework.integration.support.management.MessageChannelMetrics.class);
assertThat(metrics.isCountsEnabled()).isTrue();
assertThat(metrics.isStatsEnabled()).isTrue();
metrics = context.getBean("buz", MessageChannelMetrics.class);
metrics = context.getBean("buz", org.springframework.integration.support.management.MessageChannelMetrics.class);
assertThat(metrics.isCountsEnabled()).isTrue();
assertThat(metrics.isStatsEnabled()).isTrue();
metrics = context.getBean("!excluded", MessageChannelMetrics.class);
metrics = context.getBean("!excluded", org.springframework.integration.support.management.MessageChannelMetrics.class);
assertThat(metrics.isCountsEnabled()).isFalse();
assertThat(metrics.isStatsEnabled()).isFalse();
checkCustomized(metrics);
MetricsFactory factory = context.getBean(MetricsFactory.class);
org.springframework.integration.support.management.MetricsFactory factory =
context.getBean(org.springframework.integration.support.management.MetricsFactory.class);
IntegrationManagementConfigurer configurer = context.getBean(IntegrationManagementConfigurer.class);
assertThat(TestUtils.getPropertyValue(configurer, "metricsFactory")).isSameAs(factory);
exporter.destroy();
}
private void checkCustomized(MessageChannelMetrics metrics) {
private void checkCustomized(org.springframework.integration.support.management.MessageChannelMetrics metrics) {
assertThat(metrics.isLoggingEnabled()).isFalse();
assertThat(TestUtils.getPropertyValue(metrics, "channelMetrics.sendDuration.window")).isEqualTo(20);
assertThat(TestUtils.getPropertyValue(metrics, "channelMetrics.sendDuration.factor", Double.class))
@@ -125,26 +124,30 @@ public class MBeanExporterParserTests {
.isCloseTo(.001 / 140000, Offset.offset(.01));
}
private void checkCustomized(MessageHandlerMetrics metrics) {
private void checkCustomized(org.springframework.integration.support.management.MessageHandlerMetrics metrics) {
assertThat(TestUtils.getPropertyValue(metrics, "handlerMetrics.duration.window")).isEqualTo(20);
assertThat(TestUtils.getPropertyValue(metrics, "handlerMetrics.duration.factor", Double.class))
.isCloseTo(1000000., Offset.offset(.01));
}
public static class CustomMetrics implements MetricsFactory {
public static class CustomMetrics implements org.springframework.integration.support.management.MetricsFactory {
@Override
public AbstractMessageChannelMetrics createChannelMetrics(String name) {
return new DefaultMessageChannelMetrics(name,
new ExponentialMovingAverage(20, 1000000.),
new ExponentialMovingAverageRate(2000, 120000, 30, true),
new ExponentialMovingAverageRatio(130000, 40, true),
new ExponentialMovingAverageRate(3000, 140000, 50, true));
new org.springframework.integration.support.management.ExponentialMovingAverage(20, 1000000.),
new org.springframework.integration.support.management.ExponentialMovingAverageRate(2000, 120000,
30, true),
new org.springframework.integration.support.management.ExponentialMovingAverageRatio(130000, 40,
true),
new org.springframework.integration.support.management.ExponentialMovingAverageRate(3000, 140000,
50, true));
}
@Override
public AbstractMessageHandlerMetrics createHandlerMetrics(String name) {
return new DefaultMessageHandlerMetrics(name, new ExponentialMovingAverage(20, 1000000.));
return new DefaultMessageHandlerMetrics(name,
new org.springframework.integration.support.management.ExponentialMovingAverage(20, 1000000.));
}
}

View File

@@ -40,8 +40,6 @@ import org.springframework.integration.config.EnableIntegrationManagement;
import org.springframework.integration.config.IntegrationManagementConfigurer;
import org.springframework.integration.jmx.config.EnableIntegrationMBeanExport;
import org.springframework.integration.monitor.IntegrationMBeanExporter;
import org.springframework.integration.support.management.DefaultMetricsFactory;
import org.springframework.integration.support.management.MetricsFactory;
import org.springframework.integration.test.util.TestUtils;
import org.springframework.jmx.support.MBeanServerFactoryBean;
import org.springframework.mock.env.MockEnvironment;
@@ -71,8 +69,9 @@ public class EnableMBeanExportTests {
@Autowired
private IntegrationManagementConfigurer configurer;
@SuppressWarnings("deprecation")
@Autowired
private MetricsFactory myMetricsFactory;
private org.springframework.integration.support.management.MetricsFactory myMetricsFactory;
@SuppressWarnings("unchecked")
@Test
@@ -142,9 +141,10 @@ public class EnableMBeanExportTests {
return new QueueChannel();
}
@SuppressWarnings("deprecation")
@Bean
public MetricsFactory myMetricsFactory() {
return new DefaultMetricsFactory();
public org.springframework.integration.support.management.MetricsFactory myMetricsFactory() {
return new org.springframework.integration.support.management.DefaultMetricsFactory();
}
}

View File

@@ -22,7 +22,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.integration.support.management.MessageHandlerMetrics;
import org.springframework.integration.support.management.BaseHandlerMetrics;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.MessageDeliveryException;
import org.springframework.messaging.PollableChannel;
@@ -54,6 +54,7 @@ public class ChannelIntegrationTests {
@Autowired
private IntegrationMBeanExporter messageChannelsMonitor;
@SuppressWarnings("deprecation")
@Test
public void testMessageChannelStatistics() throws Exception {
@@ -76,7 +77,7 @@ public class ChannelIntegrationTests {
try {
requests.send(new GenericMessage<String>("foo"));
}
catch (MessageDeliveryException e) {
catch (@SuppressWarnings("unused") MessageDeliveryException e) {
}
assertThat(messageChannelsMonitor.getChannelSendCount(intermediateChannelName)).isEqualTo(3);
@@ -85,10 +86,11 @@ public class ChannelIntegrationTests {
assertThat(messageChannelsMonitor.getChannelMetrics(intermediateChannelName)).isSameAs(intermediate);
MessageHandlerMetrics handlerMetrics = messageChannelsMonitor.getHandlerMetrics("bridge");
BaseHandlerMetrics handlerMetrics = messageChannelsMonitor
.getHandlerMetrics("bridge");
assertThat(handlerMetrics.getHandleCount()).isEqualTo(3);
assertThat(handlerMetrics.getErrorCount()).isEqualTo(1);
assertThat(handlerMetrics.handleCount()).isEqualTo(3);
assertThat(handlerMetrics.errorCount()).isEqualTo(1);
assertThat(this.sourceChannel.receive(10000)).isNotNull();

View File

@@ -35,7 +35,6 @@ import org.springframework.integration.core.MessagingTemplate;
import org.springframework.integration.endpoint.AbstractMessageSource;
import org.springframework.integration.handler.AbstractReplyProducingMessageHandler;
import org.springframework.integration.support.management.DefaultMessageChannelMetrics;
import org.springframework.integration.support.management.MetricsContext;
import org.springframework.integration.test.util.TestUtils;
import org.springframework.messaging.Message;
import org.springframework.test.annotation.DirtiesContext;
@@ -75,6 +74,7 @@ public class MonitorTests {
private NullChannel nullChannel;
@SuppressWarnings("deprecation")
@Test
public void testStats() throws InterruptedException {
final CountDownLatch afterSendLatch = new CountDownLatch(1);
@@ -87,7 +87,9 @@ public class MonitorTests {
Object result = invocation.callRealMethod();
afterSendLatch.countDown();
return result;
}).when(channelMetrics).afterSend(Mockito.any(MetricsContext.class), Mockito.eq(Boolean.TRUE));
}).when(channelMetrics)
.afterSend(Mockito.any(org.springframework.integration.support.management.MetricsContext.class),
Mockito.eq(Boolean.TRUE));
new DirectFieldAccessor(this.next).setPropertyValue("channelMetrics", channelMetrics);