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
1259057a
Commit
1259057a
authored
Aug 05, 2014
by
Dave Syer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change unknownPath to unmapped
parent
733b22f4
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
57 additions
and
58 deletions
+57
-58
MetricFilterAutoConfiguration.java
.../actuate/autoconfigure/MetricFilterAutoConfiguration.java
+9
-8
MetricFilterAutoConfigurationTests.java
...ate/autoconfigure/MetricFilterAutoConfigurationTests.java
+48
-50
No files found.
spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/MetricFilterAutoConfiguration.java
View file @
1259057a
...
...
@@ -57,7 +57,7 @@ import org.springframework.web.util.UrlPathHelper;
public
class
MetricFilterAutoConfiguration
{
private
static
final
int
UNDEFINED_HTTP_STATUS
=
999
;
private
static
final
String
UNKNOWN_PATH_SUFFIX
=
"/un
knownPath
"
;
private
static
final
String
UNKNOWN_PATH_SUFFIX
=
"/un
mapped
"
;
@Autowired
private
CounterService
counterService
;
...
...
@@ -89,18 +89,19 @@ public class MetricFilterAutoConfiguration {
}
finally
{
stopWatch
.
stop
();
if
(
request
.
getAttribute
(
HandlerMapping
.
BEST_MATCHING_PATTERN_ATTRIBUTE
)
!=
null
)
{
suffix
=
request
.
getAttribute
(
HandlerMapping
.
BEST_MATCHING_PATTERN_ATTRIBUTE
).
toString
().
replaceAll
(
"[{}]"
,
"-"
);
int
status
=
getStatus
(
response
);
if
(
request
.
getAttribute
(
HandlerMapping
.
BEST_MATCHING_PATTERN_ATTRIBUTE
)
!=
null
)
{
suffix
=
request
.
getAttribute
(
HandlerMapping
.
BEST_MATCHING_PATTERN_ATTRIBUTE
)
.
toString
().
replaceAll
(
"[{}]"
,
"-"
);
}
else
if
(
getStatus
(
response
)
==
HttpStatus
.
NOT_FOUND
.
value
())
{
suffix
=
UNKNOWN_PATH_SUFFIX
;
else
if
(
HttpStatus
.
valueOf
(
status
).
is4xxClientError
())
{
suffix
=
UNKNOWN_PATH_SUFFIX
;
}
String
gaugeKey
=
getKey
(
"response"
+
suffix
);
MetricFilterAutoConfiguration
.
this
.
gaugeService
.
submit
(
gaugeKey
,
stopWatch
.
getTotalTimeMillis
());
String
counterKey
=
getKey
(
"status."
+
getStatus
(
response
)
+
suffix
);
String
counterKey
=
getKey
(
"status."
+
status
+
suffix
);
MetricFilterAutoConfiguration
.
this
.
counterService
.
increment
(
counterKey
);
}
}
...
...
spring-boot-actuator/src/test/java/org/springframework/boot/actuate/autoconfigure/MetricFilterAutoConfigurationTests.java
View file @
1259057a
...
...
@@ -16,17 +16,6 @@
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
;
import
static
org
.
hamcrest
.
Matchers
.
equalTo
;
import
static
org
.
junit
.
Assert
.
assertThat
;
import
static
org
.
mockito
.
BDDMockito
.
willAnswer
;
import
static
org
.
mockito
.
Matchers
.
anyDouble
;
import
static
org
.
mockito
.
Matchers
.
eq
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
request
.
MockMvcRequestBuilders
.
get
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
result
.
MockMvcResultMatchers
.
status
;
import
javax.servlet.Filter
;
import
javax.servlet.FilterChain
;
...
...
@@ -49,13 +38,23 @@ import org.springframework.web.bind.annotation.ResponseBody;
import
org.springframework.web.bind.annotation.ResponseStatus
;
import
org.springframework.web.bind.annotation.RestController
;
import
static
org
.
hamcrest
.
Matchers
.
equalTo
;
import
static
org
.
junit
.
Assert
.
assertThat
;
import
static
org
.
mockito
.
BDDMockito
.
willAnswer
;
import
static
org
.
mockito
.
Matchers
.
anyDouble
;
import
static
org
.
mockito
.
Matchers
.
eq
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
request
.
MockMvcRequestBuilders
.
get
;
import
static
org
.
springframework
.
test
.
web
.
servlet
.
result
.
MockMvcResultMatchers
.
status
;
/**
* Tests for {@link MetricFilterAutoConfiguration}.
*
* @author Phillip Webb
*/
public
class
MetricFilterAutoConfigurationTests
{
@Test
public
void
recordsHttpInteractions
()
throws
Exception
{
...
...
@@ -79,52 +78,55 @@ public class MetricFilterAutoConfigurationTests {
anyDouble
());
context
.
close
();
}
@Test
public
void
recordsHttpInteractionsWithTemplateVariable
()
throws
Exception
{
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
Config
.
class
,
MetricFilterAutoConfiguration
.
class
);
Filter
filter
=
context
.
getBean
(
Filter
.
class
);
MockMvc
mvc
=
MockMvcBuilders
.
standaloneSetup
(
new
MetricFilterTestController
()).
addFilter
(
filter
).
build
();
mvc
.
perform
(
get
(
"/templateVarTest/foo"
))
.
andExpect
(
status
().
isOk
());
verify
(
context
.
getBean
(
CounterService
.
class
)).
increment
(
"status.200.templateVarTest.-someVariable-"
);
verify
(
context
.
getBean
(
GaugeService
.
class
)).
submit
(
eq
(
"response.templateVarTest.-someVariable-"
),
anyDouble
());
MockMvc
mvc
=
MockMvcBuilders
.
standaloneSetup
(
new
MetricFilterTestController
())
.
addFilter
(
filter
).
build
();
mvc
.
perform
(
get
(
"/templateVarTest/foo"
)).
andExpect
(
status
().
isOk
());
verify
(
context
.
getBean
(
CounterService
.
class
)).
increment
(
"status.200.templateVarTest.-someVariable-"
);
verify
(
context
.
getBean
(
GaugeService
.
class
)).
submit
(
eq
(
"response.templateVarTest.-someVariable-"
),
anyDouble
());
context
.
close
();
}
@Test
public
void
recordsKnown404HttpInteractionsAsSingleMetricWithPathAndTemplateVariable
()
throws
Exception
{
public
void
recordsKnown404HttpInteractionsAsSingleMetricWithPathAndTemplateVariable
()
throws
Exception
{
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
Config
.
class
,
MetricFilterAutoConfiguration
.
class
);
Filter
filter
=
context
.
getBean
(
Filter
.
class
);
MockMvc
mvc
=
MockMvcBuilders
.
standaloneSetup
(
new
MetricFilterTestController
()).
addFilter
(
filter
).
build
();
mvc
.
perform
(
get
(
"/knownPath/foo"
))
.
andExpect
(
status
().
isNotFound
());
verify
(
context
.
getBean
(
CounterService
.
class
)).
increment
(
"status.404.knownPath.-someVariable-"
);
verify
(
context
.
getBean
(
GaugeService
.
class
)).
submit
(
eq
(
"response.knownPath.-someVariable-"
),
anyDouble
());
MockMvc
mvc
=
MockMvcBuilders
.
standaloneSetup
(
new
MetricFilterTestController
())
.
addFilter
(
filter
).
build
();
mvc
.
perform
(
get
(
"/knownPath/foo"
)).
andExpect
(
status
().
isNotFound
());
verify
(
context
.
getBean
(
CounterService
.
class
)).
increment
(
"status.404.knownPath.-someVariable-"
);
verify
(
context
.
getBean
(
GaugeService
.
class
)).
submit
(
eq
(
"response.knownPath.-someVariable-"
),
anyDouble
());
context
.
close
();
}
@Test
public
void
records404HttpInteractionsAsSingleMetric
()
throws
Exception
{
AnnotationConfigApplicationContext
context
=
new
AnnotationConfigApplicationContext
(
Config
.
class
,
MetricFilterAutoConfiguration
.
class
);
Filter
filter
=
context
.
getBean
(
Filter
.
class
);
MockMvc
mvc
=
MockMvcBuilders
.
standaloneSetup
(
new
MetricFilterTestController
())
.
addFilter
(
filter
).
build
();
mvc
.
perform
(
get
(
"/unknownPath/1"
))
.
andExpect
(
status
().
isNotFound
());
mvc
.
perform
(
get
(
"/unknownPath/2"
))
.
andExpect
(
status
().
isNotFound
());
verify
(
context
.
getBean
(
CounterService
.
class
),
times
(
2
)).
increment
(
"status.404.unknownPath
"
);
verify
(
context
.
getBean
(
GaugeService
.
class
),
times
(
2
)).
submit
(
eq
(
"response.unknownPath"
),
anyDouble
());
MockMvc
mvc
=
MockMvcBuilders
.
standaloneSetup
(
new
MetricFilterTestController
())
.
addFilter
(
filter
).
build
();
mvc
.
perform
(
get
(
"/unknownPath/1"
))
.
andExpect
(
status
().
isNotFound
());
mvc
.
perform
(
get
(
"/unknownPath/2"
))
.
andExpect
(
status
().
isNotFound
());
verify
(
context
.
getBean
(
CounterService
.
class
),
times
(
2
)).
increment
(
"status.404.unmapped
"
);
verify
(
context
.
getBean
(
GaugeService
.
class
),
times
(
2
)).
submit
(
eq
(
"response.unmapped"
),
anyDouble
());
context
.
close
();
}
...
...
@@ -148,27 +150,23 @@ public class MetricFilterAutoConfigurationTests {
public
GaugeService
gaugeService
()
{
return
mock
(
GaugeService
.
class
);
}
}
}
@RestController
class
MetricFilterTestController
{
class
MetricFilterTestController
{
@RequestMapping
(
"templateVarTest/{someVariable}"
)
public
String
testTemplateVariableResolution
(
@PathVariable
String
someVariable
)
{
public
String
testTemplateVariableResolution
(
@PathVariable
String
someVariable
)
{
return
someVariable
;
}
@RequestMapping
(
"knownPath/{someVariable}"
)
@ResponseStatus
(
HttpStatus
.
NOT_FOUND
)
@ResponseBody
public
String
testKnownPathWith404Response
(
@PathVariable
String
someVariable
)
{
public
String
testKnownPathWith404Response
(
@PathVariable
String
someVariable
)
{
return
someVariable
;
}
}
\ No newline at end of file
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