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
5f145ac4
Commit
5f145ac4
authored
Nov 28, 2018
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.0.x'
parents
04c7036e
b103e0c8
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
14 deletions
+52
-14
DataSourcePoolMetricsAutoConfiguration.java
.../metrics/jdbc/DataSourcePoolMetricsAutoConfiguration.java
+8
-3
DataSourcePoolMetricsAutoConfigurationTests.java
...ics/jdbc/DataSourcePoolMetricsAutoConfigurationTests.java
+44
-11
No files found.
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfiguration.java
View file @
5f145ac4
...
...
@@ -37,6 +37,7 @@ 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.jdbc.DataSourceAutoConfiguration
;
import
org.springframework.boot.jdbc.DataSourceUnwrapper
;
import
org.springframework.boot.jdbc.metadata.DataSourcePoolMetadataProvider
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.util.StringUtils
;
...
...
@@ -114,9 +115,13 @@ public class DataSourcePoolMetricsAutoConfiguration {
@Autowired
public
void
bindMetricsRegistryToHikariDataSources
(
Collection
<
DataSource
>
dataSources
)
{
dataSources
.
stream
().
filter
(
HikariDataSource
.
class
::
isInstance
)
.
map
(
HikariDataSource
.
class
::
cast
)
.
forEach
(
this
::
bindMetricsRegistryToHikariDataSource
);
for
(
DataSource
dataSource
:
dataSources
)
{
HikariDataSource
hikariDataSource
=
DataSourceUnwrapper
.
unwrap
(
dataSource
,
HikariDataSource
.
class
);
if
(
hikariDataSource
!=
null
)
{
bindMetricsRegistryToHikariDataSource
(
hikariDataSource
);
}
}
}
private
void
bindMetricsRegistryToHikariDataSource
(
HikariDataSource
hikari
)
{
...
...
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/jdbc/DataSourcePoolMetricsAutoConfigurationTests.java
View file @
5f145ac4
...
...
@@ -27,6 +27,7 @@ import io.micrometer.core.instrument.Tag;
import
io.micrometer.core.instrument.simple.SimpleMeterRegistry
;
import
org.junit.Test
;
import
org.springframework.aop.framework.ProxyFactory
;
import
org.springframework.beans.BeansException
;
import
org.springframework.beans.factory.config.BeanPostProcessor
;
import
org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun
;
...
...
@@ -39,6 +40,7 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.PriorityOrdered
;
import
org.springframework.jdbc.datasource.DelegatingDataSource
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -185,6 +187,25 @@ public class DataSourcePoolMetricsAutoConfigurationTests {
});
}
@Test
public
void
hikariProxiedDataSourceCanBeInstrumented
()
{
this
.
contextRunner
.
withUserConfiguration
(
ProxiedHikariDataSourcesConfiguration
.
class
)
.
withConfiguration
(
AutoConfigurations
.
of
(
DataSourceAutoConfiguration
.
class
))
.
run
((
context
)
->
{
context
.
getBean
(
"proxiedDataSource"
,
DataSource
.
class
)
.
getConnection
();
context
.
getBean
(
"delegateDataSource"
,
DataSource
.
class
)
.
getConnection
();
MeterRegistry
registry
=
context
.
getBean
(
MeterRegistry
.
class
);
registry
.
get
(
"hikaricp.connections"
).
tags
(
"pool"
,
"firstDataSource"
)
.
meter
();
registry
.
get
(
"hikaricp.connections"
).
tags
(
"pool"
,
"secondOne"
)
.
meter
();
});
}
@Test
public
void
hikariDataSourceIsInstrumentedWithoutMetadataProvider
()
{
this
.
contextRunner
.
withUserConfiguration
(
OneHikariDataSourceConfiguration
.
class
)
...
...
@@ -199,6 +220,14 @@ public class DataSourcePoolMetricsAutoConfigurationTests {
});
}
private
static
HikariDataSource
createHikariDataSource
(
String
poolName
)
{
String
url
=
"jdbc:hsqldb:mem:test-"
+
UUID
.
randomUUID
();
HikariDataSource
hikariDataSource
=
DataSourceBuilder
.
create
().
url
(
url
)
.
type
(
HikariDataSource
.
class
).
build
();
hikariDataSource
.
setPoolName
(
poolName
);
return
hikariDataSource
;
}
@Configuration
static
class
BaseConfiguration
{
...
...
@@ -242,12 +271,20 @@ public class DataSourcePoolMetricsAutoConfigurationTests {
return
createHikariDataSource
(
"secondOne"
);
}
private
HikariDataSource
createHikariDataSource
(
String
poolName
)
{
String
url
=
"jdbc:hsqldb:mem:test-"
+
UUID
.
randomUUID
();
HikariDataSource
hikariDataSource
=
DataSourceBuilder
.
create
().
url
(
url
)
.
type
(
HikariDataSource
.
class
).
build
();
hikariDataSource
.
setPoolName
(
poolName
);
return
hikariDataSource
;
}
@Configuration
static
class
ProxiedHikariDataSourcesConfiguration
{
@Bean
public
DataSource
proxiedDataSource
()
{
return
(
DataSource
)
new
ProxyFactory
(
createHikariDataSource
(
"firstDataSource"
)).
getProxy
();
}
@Bean
public
DataSource
delegateDataSource
()
{
return
new
DelegatingDataSource
(
createHikariDataSource
(
"secondOne"
));
}
}
...
...
@@ -257,11 +294,7 @@ public class DataSourcePoolMetricsAutoConfigurationTests {
@Bean
public
DataSource
hikariDataSource
()
{
String
url
=
"jdbc:hsqldb:mem:test-"
+
UUID
.
randomUUID
();
HikariDataSource
hikariDataSource
=
DataSourceBuilder
.
create
().
url
(
url
)
.
type
(
HikariDataSource
.
class
).
build
();
hikariDataSource
.
setPoolName
(
"hikariDataSource"
);
return
hikariDataSource
;
return
createHikariDataSource
(
"hikariDataSource"
);
}
}
...
...
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