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
9aef2bde
Commit
9aef2bde
authored
Feb 04, 2020
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '2.2.x'
Closes gh-20030
parents
6213ff6a
68acc412
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
45 additions
and
12 deletions
+45
-12
TestController.java
...oot/actuate/autoconfigure/metrics/web/TestController.java
+10
-1
WebMvcMetricsAutoConfigurationTests.java
...rics/web/servlet/WebMvcMetricsAutoConfigurationTests.java
+25
-4
WebMvcMetricsFilter.java
...boot/actuate/metrics/web/servlet/WebMvcMetricsFilter.java
+10
-7
No files found.
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/TestController.java
View file @
9aef2bde
/*
* Copyright 2012-20
19
the original author or authors.
* Copyright 2012-20
20
the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
...
...
@@ -16,6 +16,8 @@
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
metrics
.
web
;
import
io.micrometer.core.annotation.Timed
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -24,6 +26,7 @@ import org.springframework.web.bind.annotation.RestController;
*
* @author Dmytro Nosan
* @author Stephane Nicoll
* @author Chanhyeong LEE
*/
@RestController
public
class
TestController
{
...
...
@@ -43,4 +46,10 @@ public class TestController {
return
"test2"
;
}
@Timed
@GetMapping
(
"test3"
)
public
String
test3
()
{
return
"test3"
;
}
}
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfigurationTests.java
View file @
9aef2bde
...
...
@@ -16,6 +16,7 @@
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
metrics
.
web
.
servlet
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.EnumSet
;
...
...
@@ -24,6 +25,7 @@ import javax.servlet.Filter;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
io.micrometer.core.instrument.Meter
;
import
io.micrometer.core.instrument.MeterRegistry
;
import
io.micrometer.core.instrument.Tag
;
import
io.micrometer.core.instrument.Timer
;
...
...
@@ -64,12 +66,13 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
* @author Dmytro Nosan
* @author Tadaya Tsuyukubo
* @author Madhura Bhave
* @author Chanhyeong LEE
*/
@ExtendWith
(
OutputCaptureExtension
.
class
)
class
WebMvcMetricsAutoConfigurationTests
{
private
WebApplicationContextRunner
contextRunner
=
new
WebApplicationContextRunner
().
with
(
MetricsRun
.
simple
()
)
.
withConfiguration
(
AutoConfigurations
.
of
(
WebMvcMetricsAutoConfiguration
.
class
));
private
final
WebApplicationContextRunner
contextRunner
=
new
WebApplicationContextRunner
(
)
.
with
(
MetricsRun
.
simple
()).
with
Configuration
(
AutoConfigurations
.
of
(
WebMvcMetricsAutoConfiguration
.
class
));
@Test
void
backsOffWhenMeterRegistryIsMissing
()
{
...
...
@@ -157,6 +160,19 @@ class WebMvcMetricsAutoConfigurationTests {
});
}
@Test
void
timerWorksWithTimedAnnotationsWhenAutoTimeRequestsIsFalse
()
{
this
.
contextRunner
.
withUserConfiguration
(
TestController
.
class
)
.
withConfiguration
(
AutoConfigurations
.
of
(
MetricsAutoConfiguration
.
class
,
WebMvcAutoConfiguration
.
class
))
.
withPropertyValues
(
"management.metrics.web.server.request.autotime.enabled=false"
).
run
((
context
)
->
{
MeterRegistry
registry
=
getInitializedMeterRegistry
(
context
,
"/test3"
);
Collection
<
Meter
>
meters
=
registry
.
get
(
"http.server.requests"
).
meters
();
assertThat
(
meters
).
hasSize
(
1
);
Meter
meter
=
meters
.
iterator
().
next
();
assertThat
(
meter
.
getId
().
getTag
(
"uri"
)).
isEqualTo
(
"/test3"
);
});
}
@Test
@SuppressWarnings
(
"rawtypes"
)
void
longTaskTimingInterceptorIsRegistered
()
{
...
...
@@ -168,12 +184,17 @@ class WebMvcMetricsAutoConfigurationTests {
}
private
MeterRegistry
getInitializedMeterRegistry
(
AssertableWebApplicationContext
context
)
throws
Exception
{
return
getInitializedMeterRegistry
(
context
,
"/test0"
,
"/test1"
,
"/test2"
);
}
private
MeterRegistry
getInitializedMeterRegistry
(
AssertableWebApplicationContext
context
,
String
...
urls
)
throws
Exception
{
assertThat
(
context
).
hasSingleBean
(
FilterRegistrationBean
.
class
);
Filter
filter
=
context
.
getBean
(
FilterRegistrationBean
.
class
).
getFilter
();
assertThat
(
filter
).
isInstanceOf
(
WebMvcMetricsFilter
.
class
);
MockMvc
mockMvc
=
MockMvcBuilders
.
webAppContextSetup
(
context
).
addFilters
(
filter
).
build
();
for
(
int
i
=
0
;
i
<
3
;
i
++
)
{
mockMvc
.
perform
(
MockMvcRequestBuilders
.
get
(
"/test"
+
i
)).
andExpect
(
status
().
isOk
());
for
(
String
url
:
urls
)
{
mockMvc
.
perform
(
MockMvcRequestBuilders
.
get
(
url
)).
andExpect
(
status
().
isOk
());
}
return
context
.
getBean
(
MeterRegistry
.
class
);
}
...
...
spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/servlet/WebMvcMetricsFilter.java
View file @
9aef2bde
...
...
@@ -48,6 +48,7 @@ import org.springframework.web.util.NestedServletException;
*
* @author Jon Schneider
* @author Phillip Webb
* @author Chanhyeong LEE
* @since 2.0.0
*/
public
class
WebMvcMetricsFilter
extends
OncePerRequestFilter
{
...
...
@@ -123,13 +124,15 @@ public class WebMvcMetricsFilter extends OncePerRequestFilter {
Set
<
Timed
>
annotations
=
getTimedAnnotations
(
handler
);
Timer
.
Sample
timerSample
=
timingContext
.
getTimerSample
();
if
(
annotations
.
isEmpty
())
{
Builder
builder
=
this
.
autoTimer
.
builder
(
this
.
metricName
);
timerSample
.
stop
(
getTimer
(
builder
,
handler
,
request
,
response
,
exception
));
return
;
}
for
(
Timed
annotation
:
annotations
)
{
Builder
builder
=
Timer
.
builder
(
annotation
,
this
.
metricName
);
timerSample
.
stop
(
getTimer
(
builder
,
handler
,
request
,
response
,
exception
));
if
(
this
.
autoTimer
.
isEnabled
())
{
Builder
builder
=
this
.
autoTimer
.
builder
(
this
.
metricName
);
timerSample
.
stop
(
getTimer
(
builder
,
handler
,
request
,
response
,
exception
));
}
}
else
{
for
(
Timed
annotation
:
annotations
)
{
Builder
builder
=
Timer
.
builder
(
annotation
,
this
.
metricName
);
timerSample
.
stop
(
getTimer
(
builder
,
handler
,
request
,
response
,
exception
));
}
}
}
...
...
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