Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
d8c5c326
Commit
d8c5c326
authored
Nov 11, 2014
by
Phillip Webb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Co-locate PublicMetrics auto-configuration
Fixes gh-1900
parent
8cac63e2
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
180 additions
and
83 deletions
+180
-83
EndpointAutoConfiguration.java
...boot/actuate/autoconfigure/EndpointAutoConfiguration.java
+3
-9
MetricRepositoryAutoConfiguration.java
...uate/autoconfigure/MetricRepositoryAutoConfiguration.java
+3
-11
PublicMetricsAutoConfiguration.java
...actuate/autoconfigure/PublicMetricsAutoConfiguration.java
+88
-0
DataSourcePublicMetrics.java
...mework/boot/actuate/endpoint/DataSourcePublicMetrics.java
+1
-0
spring.factories
...oot-actuator/src/main/resources/META-INF/spring.factories
+1
-1
EndpointAutoConfigurationTests.java
...actuate/autoconfigure/EndpointAutoConfigurationTests.java
+3
-2
MetricRepositoryAutoConfigurationTests.java
...autoconfigure/MetricRepositoryAutoConfigurationTests.java
+0
-52
PublicMetricsAutoConfigurationTests.java
...te/autoconfigure/PublicMetricsAutoConfigurationTests.java
+81
-8
No files found.
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/EndpointAutoConfiguration.java
View file @
d8c5c326
...
@@ -18,6 +18,7 @@ package org.springframework.boot.actuate.autoconfigure;
...
@@ -18,6 +18,7 @@ package org.springframework.boot.actuate.autoconfigure;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.List
;
...
@@ -34,18 +35,14 @@ import org.springframework.boot.actuate.endpoint.Endpoint;
...
@@ -34,18 +35,14 @@ import org.springframework.boot.actuate.endpoint.Endpoint;
import
org.springframework.boot.actuate.endpoint.EnvironmentEndpoint
;
import
org.springframework.boot.actuate.endpoint.EnvironmentEndpoint
;
import
org.springframework.boot.actuate.endpoint.HealthEndpoint
;
import
org.springframework.boot.actuate.endpoint.HealthEndpoint
;
import
org.springframework.boot.actuate.endpoint.InfoEndpoint
;
import
org.springframework.boot.actuate.endpoint.InfoEndpoint
;
import
org.springframework.boot.actuate.endpoint.MetricReaderPublicMetrics
;
import
org.springframework.boot.actuate.endpoint.MetricsEndpoint
;
import
org.springframework.boot.actuate.endpoint.MetricsEndpoint
;
import
org.springframework.boot.actuate.endpoint.PublicMetrics
;
import
org.springframework.boot.actuate.endpoint.PublicMetrics
;
import
org.springframework.boot.actuate.endpoint.RequestMappingEndpoint
;
import
org.springframework.boot.actuate.endpoint.RequestMappingEndpoint
;
import
org.springframework.boot.actuate.endpoint.ShutdownEndpoint
;
import
org.springframework.boot.actuate.endpoint.ShutdownEndpoint
;
import
org.springframework.boot.actuate.endpoint.SystemPublicMetrics
;
import
org.springframework.boot.actuate.endpoint.TraceEndpoint
;
import
org.springframework.boot.actuate.endpoint.TraceEndpoint
;
import
org.springframework.boot.actuate.health.HealthAggregator
;
import
org.springframework.boot.actuate.health.HealthAggregator
;
import
org.springframework.boot.actuate.health.HealthIndicator
;
import
org.springframework.boot.actuate.health.HealthIndicator
;
import
org.springframework.boot.actuate.health.OrderedHealthAggregator
;
import
org.springframework.boot.actuate.health.OrderedHealthAggregator
;
import
org.springframework.boot.actuate.metrics.reader.MetricReader
;
import
org.springframework.boot.actuate.metrics.repository.InMemoryMetricRepository
;
import
org.springframework.boot.actuate.trace.InMemoryTraceRepository
;
import
org.springframework.boot.actuate.trace.InMemoryTraceRepository
;
import
org.springframework.boot.actuate.trace.TraceRepository
;
import
org.springframework.boot.actuate.trace.TraceRepository
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
...
@@ -58,6 +55,7 @@ import org.springframework.boot.bind.PropertiesConfigurationFactory;
...
@@ -58,6 +55,7 @@ import org.springframework.boot.bind.PropertiesConfigurationFactory;
import
org.springframework.boot.context.properties.ConfigurationBeanFactoryMetaData
;
import
org.springframework.boot.context.properties.ConfigurationBeanFactoryMetaData
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.annotation.AnnotationAwareOrderComparator
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.core.env.ConfigurableEnvironment
;
import
org.springframework.core.env.StandardEnvironment
;
import
org.springframework.core.env.StandardEnvironment
;
import
org.springframework.core.io.Resource
;
import
org.springframework.core.io.Resource
;
...
@@ -86,9 +84,6 @@ public class EndpointAutoConfiguration {
...
@@ -86,9 +84,6 @@ public class EndpointAutoConfiguration {
@Autowired
(
required
=
false
)
@Autowired
(
required
=
false
)
Map
<
String
,
HealthIndicator
>
healthIndicators
=
new
HashMap
<
String
,
HealthIndicator
>();
Map
<
String
,
HealthIndicator
>
healthIndicators
=
new
HashMap
<
String
,
HealthIndicator
>();
@Autowired
(
required
=
false
)
private
MetricReader
metricReader
=
new
InMemoryMetricRepository
();
@Autowired
(
required
=
false
)
@Autowired
(
required
=
false
)
private
Collection
<
PublicMetrics
>
publicMetrics
;
private
Collection
<
PublicMetrics
>
publicMetrics
;
...
@@ -132,11 +127,10 @@ public class EndpointAutoConfiguration {
...
@@ -132,11 +127,10 @@ public class EndpointAutoConfiguration {
@ConditionalOnMissingBean
@ConditionalOnMissingBean
public
MetricsEndpoint
metricsEndpoint
()
{
public
MetricsEndpoint
metricsEndpoint
()
{
List
<
PublicMetrics
>
publicMetrics
=
new
ArrayList
<
PublicMetrics
>();
List
<
PublicMetrics
>
publicMetrics
=
new
ArrayList
<
PublicMetrics
>();
publicMetrics
.
add
(
new
SystemPublicMetrics
());
publicMetrics
.
add
(
new
MetricReaderPublicMetrics
(
this
.
metricReader
));
if
(
this
.
publicMetrics
!=
null
)
{
if
(
this
.
publicMetrics
!=
null
)
{
publicMetrics
.
addAll
(
this
.
publicMetrics
);
publicMetrics
.
addAll
(
this
.
publicMetrics
);
}
}
Collections
.
sort
(
publicMetrics
,
AnnotationAwareOrderComparator
.
INSTANCE
);
return
new
MetricsEndpoint
(
publicMetrics
);
return
new
MetricsEndpoint
(
publicMetrics
);
}
}
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricRepositoryAutoConfiguration.java
View file @
d8c5c326
...
@@ -23,14 +23,12 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -23,14 +23,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.actuate.endpoint.MetricReaderPublicMetrics
;
import
org.springframework.boot.actuate.endpoint.MetricReaderPublicMetrics
;
import
org.springframework.boot.actuate.endpoint.PublicMetrics
;
import
org.springframework.boot.actuate.endpoint.PublicMetrics
;
import
org.springframework.boot.actuate.endpoint.RichGaugeReaderPublicMetrics
;
import
org.springframework.boot.actuate.metrics.CounterService
;
import
org.springframework.boot.actuate.metrics.CounterService
;
import
org.springframework.boot.actuate.metrics.GaugeService
;
import
org.springframework.boot.actuate.metrics.GaugeService
;
import
org.springframework.boot.actuate.metrics.export.Exporter
;
import
org.springframework.boot.actuate.metrics.export.Exporter
;
import
org.springframework.boot.actuate.metrics.reader.MetricRegistryMetricReader
;
import
org.springframework.boot.actuate.metrics.reader.MetricRegistryMetricReader
;
import
org.springframework.boot.actuate.metrics.repository.InMemoryMetricRepository
;
import
org.springframework.boot.actuate.metrics.repository.InMemoryMetricRepository
;
import
org.springframework.boot.actuate.metrics.repository.MetricRepository
;
import
org.springframework.boot.actuate.metrics.repository.MetricRepository
;
import
org.springframework.boot.actuate.metrics.rich.RichGaugeReader
;
import
org.springframework.boot.actuate.metrics.writer.CodahaleMetricWriter
;
import
org.springframework.boot.actuate.metrics.writer.CodahaleMetricWriter
;
import
org.springframework.boot.actuate.metrics.writer.CompositeMetricWriter
;
import
org.springframework.boot.actuate.metrics.writer.CompositeMetricWriter
;
import
org.springframework.boot.actuate.metrics.writer.DefaultCounterService
;
import
org.springframework.boot.actuate.metrics.writer.DefaultCounterService
;
...
@@ -39,7 +37,6 @@ import org.springframework.boot.actuate.metrics.writer.MessageChannelMetricWrite
...
@@ -39,7 +37,6 @@ import org.springframework.boot.actuate.metrics.writer.MessageChannelMetricWrite
import
org.springframework.boot.actuate.metrics.writer.MetricWriter
;
import
org.springframework.boot.actuate.metrics.writer.MetricWriter
;
import
org.springframework.boot.actuate.metrics.writer.MetricWriterMessageHandler
;
import
org.springframework.boot.actuate.metrics.writer.MetricWriterMessageHandler
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass
;
...
@@ -124,12 +121,6 @@ public class MetricRepositoryAutoConfiguration {
...
@@ -124,12 +121,6 @@ public class MetricRepositoryAutoConfiguration {
}
}
@Bean
@ConditionalOnBean
(
RichGaugeReader
.
class
)
public
PublicMetrics
richGaugePublicMetrics
(
RichGaugeReader
richGaugeReader
)
{
return
new
RichGaugeReaderPublicMetrics
(
richGaugeReader
);
}
@Configuration
@Configuration
@ConditionalOnClass
(
MessageChannel
.
class
)
@ConditionalOnClass
(
MessageChannel
.
class
)
static
class
MetricsChannelConfiguration
{
static
class
MetricsChannelConfiguration
{
...
@@ -186,10 +177,11 @@ public class MetricRepositoryAutoConfiguration {
...
@@ -186,10 +177,11 @@ public class MetricRepositoryAutoConfiguration {
public
MetricWriter
primaryMetricWriter
(
List
<
MetricWriter
>
writers
)
{
public
MetricWriter
primaryMetricWriter
(
List
<
MetricWriter
>
writers
)
{
return
new
CompositeMetricWriter
(
writers
);
return
new
CompositeMetricWriter
(
writers
);
}
}
@Bean
@Bean
public
PublicMetrics
codahalePublicMetrics
(
MetricRegistry
metricRegistry
)
{
public
PublicMetrics
codahalePublicMetrics
(
MetricRegistry
metricRegistry
)
{
MetricRegistryMetricReader
reader
=
new
MetricRegistryMetricReader
(
metricRegistry
);
MetricRegistryMetricReader
reader
=
new
MetricRegistryMetricReader
(
metricRegistry
);
return
new
MetricReaderPublicMetrics
(
reader
);
return
new
MetricReaderPublicMetrics
(
reader
);
}
}
...
...
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/
DataSource
MetricsAutoConfiguration.java
→
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/
Public
MetricsAutoConfiguration.java
View file @
d8c5c326
...
@@ -18,31 +18,71 @@ package org.springframework.boot.actuate.autoconfigure;
...
@@ -18,31 +18,71 @@ package org.springframework.boot.actuate.autoconfigure;
import
javax.sql.DataSource
;
import
javax.sql.DataSource
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.actuate.endpoint.DataSourcePublicMetrics
;
import
org.springframework.boot.actuate.endpoint.DataSourcePublicMetrics
;
import
org.springframework.boot.actuate.endpoint.MetricReaderPublicMetrics
;
import
org.springframework.boot.actuate.endpoint.PublicMetrics
;
import
org.springframework.boot.actuate.endpoint.RichGaugeReaderPublicMetrics
;
import
org.springframework.boot.actuate.endpoint.SystemPublicMetrics
;
import
org.springframework.boot.actuate.metrics.reader.MetricReader
;
import
org.springframework.boot.actuate.metrics.repository.InMemoryMetricRepository
;
import
org.springframework.boot.actuate.metrics.rich.RichGaugeReader
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
import
org.springframework.boot.autoconfigure.AutoConfigureBefore
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.EnableAutoConfiguration
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvider
;
import
org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvider
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
/**
* {@link EnableAutoConfiguration Auto-configuration} that provides metrics on dataSource
* {@link EnableAutoConfiguration Auto-configuration} for {@link PublicMetrics}.
* usage.
*
*
* @author Stephane Nicoll
* @author Stephane Nicoll
* @author Phillip Webb
* @since 1.2.0
* @since 1.2.0
*/
*/
@ConditionalOnBean
(
DataSource
.
class
)
@Configuration
@AutoConfigureAfter
(
DataSourceAutoConfiguration
.
class
)
@AutoConfigureAfter
({
DataSourceAutoConfiguration
.
class
,
public
class
DataSourceMetricsAutoConfiguration
{
MetricRepositoryAutoConfiguration
.
class
})
@AutoConfigureBefore
(
EndpointAutoConfiguration
.
class
)
public
class
PublicMetricsAutoConfiguration
{
@Autowired
(
required
=
false
)
private
MetricReader
metricReader
=
new
InMemoryMetricRepository
();
@Bean
public
SystemPublicMetrics
systemPublicMetrics
()
{
return
new
SystemPublicMetrics
();
}
@Bean
@Bean
@ConditionalOnBean
(
DataSourcePoolMetadataProvider
.
class
)
public
MetricReaderPublicMetrics
metricReaderPublicMetrics
()
{
@ConditionalOnMissingBean
return
new
MetricReaderPublicMetrics
(
this
.
metricReader
);
public
DataSourcePublicMetrics
dataSourcePublicMetrics
()
{
}
return
new
DataSourcePublicMetrics
();
@Bean
@ConditionalOnBean
(
RichGaugeReader
.
class
)
public
RichGaugeReaderPublicMetrics
richGaugePublicMetrics
(
RichGaugeReader
richGaugeReader
)
{
return
new
RichGaugeReaderPublicMetrics
(
richGaugeReader
);
}
@Configuration
@ConditionalOnClass
(
DataSource
.
class
)
@ConditionalOnBean
(
DataSource
.
class
)
static
class
DataSourceMetricsConfiguration
{
@Bean
@ConditionalOnMissingBean
@ConditionalOnBean
(
DataSourcePoolMetadataProvider
.
class
)
public
DataSourcePublicMetrics
dataSourcePublicMetrics
()
{
return
new
DataSourcePublicMetrics
();
}
}
}
}
}
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/DataSourcePublicMetrics.java
View file @
d8c5c326
...
@@ -121,4 +121,5 @@ public class DataSourcePublicMetrics implements PublicMetrics {
...
@@ -121,4 +121,5 @@ public class DataSourcePublicMetrics implements PublicMetrics {
return
null
;
return
null
;
}
}
}
}
}
}
spring-boot-actuator/src/main/resources/META-INF/spring.factories
View file @
d8c5c326
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.actuate.autoconfigure.AuditAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.AuditAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.DataSourceMetricsAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.EndpointMBeanExportAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.EndpointMBeanExportAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration,\
...
@@ -11,5 +10,6 @@ org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfigurati
...
@@ -11,5 +10,6 @@ org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfigurati
org.springframework.boot.actuate.autoconfigure.ManagementServerPropertiesAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.ManagementServerPropertiesAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.MetricFilterAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.MetricRepositoryAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.MetricRepositoryAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.PublicMetricsAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.TraceRepositoryAutoConfiguration,\
org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration
org.springframework.boot.actuate.autoconfigure.TraceWebFilterAutoConfiguration
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/EndpointAutoConfigurationTests.java
View file @
d8c5c326
...
@@ -103,7 +103,7 @@ public class EndpointAutoConfigurationTests {
...
@@ -103,7 +103,7 @@ public class EndpointAutoConfigurationTests {
@Test
@Test
public
void
metricEndpointsHasSystemMetricsByDefault
()
{
public
void
metricEndpointsHasSystemMetricsByDefault
()
{
load
(
EndpointAutoConfiguration
.
class
);
load
(
PublicMetricsAutoConfiguration
.
class
,
EndpointAutoConfiguration
.
class
);
MetricsEndpoint
endpoint
=
this
.
context
.
getBean
(
MetricsEndpoint
.
class
);
MetricsEndpoint
endpoint
=
this
.
context
.
getBean
(
MetricsEndpoint
.
class
);
Map
<
String
,
Object
>
metrics
=
endpoint
.
invoke
();
Map
<
String
,
Object
>
metrics
=
endpoint
.
invoke
();
assertTrue
(
metrics
.
containsKey
(
"mem"
));
assertTrue
(
metrics
.
containsKey
(
"mem"
));
...
@@ -112,7 +112,8 @@ public class EndpointAutoConfigurationTests {
...
@@ -112,7 +112,8 @@ public class EndpointAutoConfigurationTests {
@Test
@Test
public
void
metricEndpointCustomPublicMetrics
()
{
public
void
metricEndpointCustomPublicMetrics
()
{
load
(
CustomPublicMetricsConfig
.
class
,
EndpointAutoConfiguration
.
class
);
load
(
CustomPublicMetricsConfig
.
class
,
PublicMetricsAutoConfiguration
.
class
,
EndpointAutoConfiguration
.
class
);
MetricsEndpoint
endpoint
=
this
.
context
.
getBean
(
MetricsEndpoint
.
class
);
MetricsEndpoint
endpoint
=
this
.
context
.
getBean
(
MetricsEndpoint
.
class
);
Map
<
String
,
Object
>
metrics
=
endpoint
.
invoke
();
Map
<
String
,
Object
>
metrics
=
endpoint
.
invoke
();
...
...
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/MetricRepositoryAutoConfigurationTests.java
View file @
d8c5c326
...
@@ -16,18 +16,13 @@
...
@@ -16,18 +16,13 @@
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
;
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.Executor
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.boot.actuate.endpoint.RichGaugeReaderPublicMetrics
;
import
org.springframework.boot.actuate.metrics.CounterService
;
import
org.springframework.boot.actuate.metrics.CounterService
;
import
org.springframework.boot.actuate.metrics.GaugeService
;
import
org.springframework.boot.actuate.metrics.GaugeService
;
import
org.springframework.boot.actuate.metrics.Metric
;
import
org.springframework.boot.actuate.metrics.Metric
;
import
org.springframework.boot.actuate.metrics.reader.MetricReader
;
import
org.springframework.boot.actuate.metrics.reader.MetricReader
;
import
org.springframework.boot.actuate.metrics.rich.RichGauge
;
import
org.springframework.boot.actuate.metrics.rich.RichGaugeReader
;
import
org.springframework.boot.actuate.metrics.writer.DefaultCounterService
;
import
org.springframework.boot.actuate.metrics.writer.DefaultCounterService
;
import
org.springframework.boot.actuate.metrics.writer.DefaultGaugeService
;
import
org.springframework.boot.actuate.metrics.writer.DefaultGaugeService
;
import
org.springframework.boot.actuate.metrics.writer.MetricWriter
;
import
org.springframework.boot.actuate.metrics.writer.MetricWriter
;
...
@@ -46,8 +41,6 @@ import static org.junit.Assert.assertEquals;
...
@@ -46,8 +41,6 @@ import static org.junit.Assert.assertEquals;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
junit
.
Assert
.
assertThat
;
import
static
org
.
junit
.
Assert
.
assertThat
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
static
org
.
junit
.
Assert
.
fail
;
import
static
org
.
mockito
.
BDDMockito
.
given
;
import
static
org
.
mockito
.
Matchers
.
any
;
import
static
org
.
mockito
.
Matchers
.
any
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
static
org
.
mockito
.
Mockito
.
verify
;
...
@@ -122,44 +115,6 @@ public class MetricRepositoryAutoConfigurationTests {
...
@@ -122,44 +115,6 @@ public class MetricRepositoryAutoConfigurationTests {
context
.
close
();
context
.
close
();
}
}
@Test
public
void
richGaugePublicMetrics
()
{
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
RichGaugeReaderConfig
.
class
,
MetricRepositoryAutoConfiguration
.
class
);
RichGaugeReader
richGaugeReader
=
context
.
getBean
(
RichGaugeReader
.
class
);
assertNotNull
(
richGaugeReader
);
given
(
richGaugeReader
.
findAll
()).
willReturn
(
Collections
.
singletonList
(
new
RichGauge
(
"bar"
,
3.7d
)));
RichGaugeReaderPublicMetrics
publicMetrics
=
context
.
getBean
(
RichGaugeReaderPublicMetrics
.
class
);
assertNotNull
(
publicMetrics
);
Collection
<
Metric
<?>>
metrics
=
publicMetrics
.
metrics
();
assertNotNull
(
metrics
);
assertEquals
(
metrics
.
size
(),
6
);
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.val"
,
3.7d
));
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.avg"
,
3.7d
));
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.min"
,
3.7d
));
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.max"
,
3.7d
));
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.alpha"
,
-
1
.
d
));
assertHasMetric
(
metrics
,
new
Metric
<
Long
>(
"bar.count"
,
1L
));
context
.
close
();
}
private
void
assertHasMetric
(
Collection
<
Metric
<?>>
metrics
,
Metric
<?>
metric
)
{
for
(
Metric
<?>
m
:
metrics
)
{
if
(
m
.
getValue
().
equals
(
metric
.
getValue
())
&&
m
.
getName
().
equals
(
metric
.
getName
()))
{
return
;
}
}
fail
(
"Metric "
+
metric
.
toString
()
+
" not found in "
+
metrics
.
toString
());
}
@Configuration
@Configuration
public
static
class
SyncTaskExecutorConfiguration
{
public
static
class
SyncTaskExecutorConfiguration
{
...
@@ -195,11 +150,4 @@ public class MetricRepositoryAutoConfigurationTests {
...
@@ -195,11 +150,4 @@ public class MetricRepositoryAutoConfigurationTests {
}
}
@Configuration
static
class
RichGaugeReaderConfig
{
@Bean
public
RichGaugeReader
richGaugeReader
()
{
return
mock
(
RichGaugeReader
.
class
);
}
}
}
}
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/
DataSource
MetricsAutoConfigurationTests.java
→
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/
Public
MetricsAutoConfigurationTests.java
View file @
d8c5c326
...
@@ -19,6 +19,7 @@ package org.springframework.boot.actuate.autoconfigure;
...
@@ -19,6 +19,7 @@ package org.springframework.boot.actuate.autoconfigure;
import
java.sql.Connection
;
import
java.sql.Connection
;
import
java.sql.SQLException
;
import
java.sql.SQLException
;
import
java.util.Collection
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -28,8 +29,13 @@ import org.apache.commons.dbcp.BasicDataSource;
...
@@ -28,8 +29,13 @@ import org.apache.commons.dbcp.BasicDataSource;
import
org.junit.After
;
import
org.junit.After
;
import
org.junit.Test
;
import
org.junit.Test
;
import
org.springframework.boot.actuate.endpoint.DataSourcePublicMetrics
;
import
org.springframework.boot.actuate.endpoint.DataSourcePublicMetrics
;
import
org.springframework.boot.actuate.endpoint.MetricReaderPublicMetrics
;
import
org.springframework.boot.actuate.endpoint.PublicMetrics
;
import
org.springframework.boot.actuate.endpoint.PublicMetrics
;
import
org.springframework.boot.actuate.endpoint.RichGaugeReaderPublicMetrics
;
import
org.springframework.boot.actuate.endpoint.SystemPublicMetrics
;
import
org.springframework.boot.actuate.metrics.Metric
;
import
org.springframework.boot.actuate.metrics.Metric
;
import
org.springframework.boot.actuate.metrics.rich.RichGauge
;
import
org.springframework.boot.actuate.metrics.rich.RichGaugeReader
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder
;
import
org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder
;
import
org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration
;
import
org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration
;
...
@@ -44,14 +50,20 @@ import org.springframework.jdbc.core.JdbcTemplate;
...
@@ -44,14 +50,20 @@ import org.springframework.jdbc.core.JdbcTemplate;
import
com.zaxxer.hikari.HikariDataSource
;
import
com.zaxxer.hikari.HikariDataSource
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
junit
.
Assert
.
assertNotNull
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
static
org
.
junit
.
Assert
.
assertTrue
;
import
static
org
.
junit
.
Assert
.
fail
;
import
static
org
.
mockito
.
BDDMockito
.
given
;
import
static
org
.
mockito
.
Mockito
.
mock
;
/**
/**
* Tests for {@link
DataSource
MetricsAutoConfiguration}.
* Tests for {@link
Public
MetricsAutoConfiguration}.
*
*
* @author Stephane Nicoll
* @author Stephane Nicoll
* @author Dave Syer
* @author Phillip Webb
*/
*/
public
class
DataSource
MetricsAutoConfigurationTests
{
public
class
Public
MetricsAutoConfigurationTests
{
private
AnnotationConfigApplicationContext
context
;
private
AnnotationConfigApplicationContext
context
;
...
@@ -62,16 +74,58 @@ public class DataSourceMetricsAutoConfigurationTests {
...
@@ -62,16 +74,58 @@ public class DataSourceMetricsAutoConfigurationTests {
}
}
}
}
@Test
public
void
systemPublicMetrics
()
throws
Exception
{
load
();
assertEquals
(
1
,
this
.
context
.
getBeansOfType
(
SystemPublicMetrics
.
class
).
size
());
}
@Test
public
void
metricReaderPublicMetrics
()
throws
Exception
{
load
();
assertEquals
(
1
,
this
.
context
.
getBeansOfType
(
MetricReaderPublicMetrics
.
class
)
.
size
());
}
@Test
public
void
richGaugePublicMetrics
()
{
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
RichGaugeReaderConfig
.
class
,
MetricRepositoryAutoConfiguration
.
class
,
PublicMetricsAutoConfiguration
.
class
);
RichGaugeReader
richGaugeReader
=
context
.
getBean
(
RichGaugeReader
.
class
);
assertNotNull
(
richGaugeReader
);
given
(
richGaugeReader
.
findAll
()).
willReturn
(
Collections
.
singletonList
(
new
RichGauge
(
"bar"
,
3.7d
)));
RichGaugeReaderPublicMetrics
publicMetrics
=
context
.
getBean
(
RichGaugeReaderPublicMetrics
.
class
);
assertNotNull
(
publicMetrics
);
Collection
<
Metric
<?>>
metrics
=
publicMetrics
.
metrics
();
assertNotNull
(
metrics
);
assertEquals
(
metrics
.
size
(),
6
);
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.val"
,
3.7d
));
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.avg"
,
3.7d
));
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.min"
,
3.7d
));
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.max"
,
3.7d
));
assertHasMetric
(
metrics
,
new
Metric
<
Double
>(
"bar.alpha"
,
-
1
.
d
));
assertHasMetric
(
metrics
,
new
Metric
<
Long
>(
"bar.count"
,
1L
));
context
.
close
();
}
@Test
@Test
public
void
noDataSource
()
{
public
void
noDataSource
()
{
load
();
load
();
assertEquals
(
0
,
this
.
context
.
getBeansOfType
(
PublicMetrics
.
class
).
size
());
assertEquals
(
0
,
this
.
context
.
getBeansOfType
(
DataSource
PublicMetrics
.
class
).
size
());
}
}
@Test
@Test
public
void
autoDataSource
()
{
public
void
autoDataSource
()
{
load
(
DataSourceAutoConfiguration
.
class
);
load
(
DataSourceAutoConfiguration
.
class
);
PublicMetrics
bean
=
this
.
context
.
getBean
(
PublicMetrics
.
class
);
PublicMetrics
bean
=
this
.
context
.
getBean
(
DataSource
PublicMetrics
.
class
);
Collection
<
Metric
<?>>
metrics
=
bean
.
metrics
();
Collection
<
Metric
<?>>
metrics
=
bean
.
metrics
();
assertMetrics
(
metrics
,
"datasource.primary.active"
,
"datasource.primary.usage"
);
assertMetrics
(
metrics
,
"datasource.primary.active"
,
"datasource.primary.usage"
);
}
}
...
@@ -79,7 +133,7 @@ public class DataSourceMetricsAutoConfigurationTests {
...
@@ -79,7 +133,7 @@ public class DataSourceMetricsAutoConfigurationTests {
@Test
@Test
public
void
multipleDataSources
()
{
public
void
multipleDataSources
()
{
load
(
MultipleDataSourcesConfig
.
class
);
load
(
MultipleDataSourcesConfig
.
class
);
PublicMetrics
bean
=
this
.
context
.
getBean
(
PublicMetrics
.
class
);
PublicMetrics
bean
=
this
.
context
.
getBean
(
DataSource
PublicMetrics
.
class
);
Collection
<
Metric
<?>>
metrics
=
bean
.
metrics
();
Collection
<
Metric
<?>>
metrics
=
bean
.
metrics
();
assertMetrics
(
metrics
,
"datasource.tomcat.active"
,
"datasource.tomcat.usage"
,
assertMetrics
(
metrics
,
"datasource.tomcat.active"
,
"datasource.tomcat.usage"
,
"datasource.commonsDbcp.active"
,
"datasource.commonsDbcp.usage"
);
"datasource.commonsDbcp.active"
,
"datasource.commonsDbcp.usage"
);
...
@@ -105,7 +159,7 @@ public class DataSourceMetricsAutoConfigurationTests {
...
@@ -105,7 +159,7 @@ public class DataSourceMetricsAutoConfigurationTests {
@Test
@Test
public
void
multipleDataSourcesWithPrimary
()
{
public
void
multipleDataSourcesWithPrimary
()
{
load
(
MultipleDataSourcesWithPrimaryConfig
.
class
);
load
(
MultipleDataSourcesWithPrimaryConfig
.
class
);
PublicMetrics
bean
=
this
.
context
.
getBean
(
PublicMetrics
.
class
);
PublicMetrics
bean
=
this
.
context
.
getBean
(
DataSource
PublicMetrics
.
class
);
Collection
<
Metric
<?>>
metrics
=
bean
.
metrics
();
Collection
<
Metric
<?>>
metrics
=
bean
.
metrics
();
assertMetrics
(
metrics
,
"datasource.primary.active"
,
"datasource.primary.usage"
,
assertMetrics
(
metrics
,
"datasource.primary.active"
,
"datasource.primary.usage"
,
"datasource.commonsDbcp.active"
,
"datasource.commonsDbcp.usage"
);
"datasource.commonsDbcp.active"
,
"datasource.commonsDbcp.usage"
);
...
@@ -115,11 +169,20 @@ public class DataSourceMetricsAutoConfigurationTests {
...
@@ -115,11 +169,20 @@ public class DataSourceMetricsAutoConfigurationTests {
public
void
customPrefix
()
{
public
void
customPrefix
()
{
load
(
MultipleDataSourcesWithPrimaryConfig
.
class
,
load
(
MultipleDataSourcesWithPrimaryConfig
.
class
,
CustomDataSourcePublicMetrics
.
class
);
CustomDataSourcePublicMetrics
.
class
);
PublicMetrics
bean
=
this
.
context
.
getBean
(
PublicMetrics
.
class
);
PublicMetrics
bean
=
this
.
context
.
getBean
(
DataSource
PublicMetrics
.
class
);
Collection
<
Metric
<?>>
metrics
=
bean
.
metrics
();
Collection
<
Metric
<?>>
metrics
=
bean
.
metrics
();
assertMetrics
(
metrics
,
"ds.first.active"
,
"ds.first.usage"
,
"ds.second.active"
,
assertMetrics
(
metrics
,
"ds.first.active"
,
"ds.first.usage"
,
"ds.second.active"
,
"ds.second.usage"
);
"ds.second.usage"
);
}
private
void
assertHasMetric
(
Collection
<
Metric
<?>>
metrics
,
Metric
<?>
metric
)
{
for
(
Metric
<?>
m
:
metrics
)
{
if
(
m
.
getValue
().
equals
(
metric
.
getValue
())
&&
m
.
getName
().
equals
(
metric
.
getName
()))
{
return
;
}
}
fail
(
"Metric "
+
metric
.
toString
()
+
" not found in "
+
metrics
.
toString
());
}
}
private
void
assertMetrics
(
Collection
<
Metric
<?>>
metrics
,
String
...
keys
)
{
private
void
assertMetrics
(
Collection
<
Metric
<?>>
metrics
,
String
...
keys
)
{
...
@@ -138,7 +201,7 @@ public class DataSourceMetricsAutoConfigurationTests {
...
@@ -138,7 +201,7 @@ public class DataSourceMetricsAutoConfigurationTests {
this
.
context
.
register
(
config
);
this
.
context
.
register
(
config
);
}
}
this
.
context
.
register
(
DataSourcePoolMetadataProvidersConfiguration
.
class
,
this
.
context
.
register
(
DataSourcePoolMetadataProvidersConfiguration
.
class
,
DataSource
MetricsAutoConfiguration
.
class
);
Public
MetricsAutoConfiguration
.
class
);
this
.
context
.
refresh
();
this
.
context
.
refresh
();
}
}
...
@@ -198,4 +261,14 @@ public class DataSourceMetricsAutoConfigurationTests {
...
@@ -198,4 +261,14 @@ public class DataSourceMetricsAutoConfigurationTests {
.
url
(
"jdbc:hsqldb:mem:test"
).
username
(
"sa"
);
.
url
(
"jdbc:hsqldb:mem:test"
).
username
(
"sa"
);
}
}
@Configuration
static
class
RichGaugeReaderConfig
{
@Bean
public
RichGaugeReader
richGaugeReader
()
{
return
mock
(
RichGaugeReader
.
class
);
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment