Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
spring-cloud-netflix
Project
Overview
Details
Activity
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
openSource
spring-cloud-netflix
Commits
924363ca
Commit
924363ca
authored
Mar 20, 2015
by
Spencer Gibb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Sidecar reports true non-jvm app status to eureka.
Added a LocalApplicationHealthCheckHandler that checks the local app and sends the appropriate status to eureka. fixes gh-251
parent
3515112c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
132 additions
and
0 deletions
+132
-0
LocalApplicationHealthCheckHandler.java
...d/netflix/sidecar/LocalApplicationHealthCheckHandler.java
+54
-0
SidecarConfiguration.java
...framework/cloud/netflix/sidecar/SidecarConfiguration.java
+8
-0
LocalApplicationHealthCheckHandlerTests.java
...flix/sidecar/LocalApplicationHealthCheckHandlerTests.java
+70
-0
No files found.
spring-cloud-netflix-sidecar/src/main/java/org/springframework/cloud/netflix/sidecar/LocalApplicationHealthCheckHandler.java
0 → 100644
View file @
924363ca
/*
* Copyright 2013-2015 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
cloud
.
netflix
.
sidecar
;
import
static
com
.
netflix
.
appinfo
.
InstanceInfo
.
InstanceStatus
.
DOWN
;
import
static
com
.
netflix
.
appinfo
.
InstanceInfo
.
InstanceStatus
.
OUT_OF_SERVICE
;
import
static
com
.
netflix
.
appinfo
.
InstanceInfo
.
InstanceStatus
.
UNKNOWN
;
import
static
com
.
netflix
.
appinfo
.
InstanceInfo
.
InstanceStatus
.
UP
;
import
com.netflix.appinfo.HealthCheckHandler
;
import
com.netflix.appinfo.InstanceInfo.InstanceStatus
;
import
org.springframework.boot.actuate.health.HealthIndicator
;
import
org.springframework.boot.actuate.health.Status
;
/**
* Eureka HealthCheckHandler that translates boot health status to
* InstanceStatus so the proper status of the non-JVM app is sent to Eureka.
* @author Spencer Gibb
*/
class
LocalApplicationHealthCheckHandler
implements
HealthCheckHandler
{
private
final
HealthIndicator
healthIndicator
;
public
LocalApplicationHealthCheckHandler
(
HealthIndicator
healthIndicator
)
{
this
.
healthIndicator
=
healthIndicator
;
}
@Override
public
InstanceStatus
getStatus
(
InstanceStatus
currentStatus
)
{
Status
status
=
healthIndicator
.
health
().
getStatus
();
if
(
status
.
equals
(
Status
.
UP
))
{
return
UP
;
}
else
if
(
status
.
equals
(
Status
.
OUT_OF_SERVICE
))
{
return
OUT_OF_SERVICE
;
}
else
if
(
status
.
equals
(
Status
.
DOWN
))
{
return
DOWN
;
}
return
UNKNOWN
;
}
}
spring-cloud-netflix-sidecar/src/main/java/org/springframework/cloud/netflix/sidecar/SidecarConfiguration.java
View file @
924363ca
...
@@ -25,6 +25,7 @@ import org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean;
...
@@ -25,6 +25,7 @@ import org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean;
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
com.netflix.appinfo.HealthCheckHandler
;
import
com.netflix.discovery.EurekaClientConfig
;
import
com.netflix.discovery.EurekaClientConfig
;
/**
/**
...
@@ -63,6 +64,13 @@ public class SidecarConfiguration {
...
@@ -63,6 +64,13 @@ public class SidecarConfiguration {
+
config
.
getHomePageUrlPath
());
+
config
.
getHomePageUrlPath
());
return
config
;
return
config
;
}
}
@Bean
public
HealthCheckHandler
healthCheckHandler
(
final
LocalApplicationHealthIndicator
healthIndicator
)
{
return
new
LocalApplicationHealthCheckHandler
(
healthIndicator
);
}
}
}
@Bean
@Bean
...
...
spring-cloud-netflix-sidecar/src/test/java/org/springframework/cloud/netflix/sidecar/LocalApplicationHealthCheckHandlerTests.java
0 → 100644
View file @
924363ca
/*
* Copyright 2013-2015 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
cloud
.
netflix
.
sidecar
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
import
static
org
.
mockito
.
MockitoAnnotations
.
initMocks
;
import
static
org
.
mockito
.
BDDMockito
.*;
import
com.netflix.appinfo.InstanceInfo.InstanceStatus
;
import
org.junit.Before
;
import
org.junit.Test
;
import
org.mockito.Mock
;
import
org.springframework.boot.actuate.health.Health
;
import
org.springframework.boot.actuate.health.HealthIndicator
;
/**
* @author Spencer Gibb
*/
public
class
LocalApplicationHealthCheckHandlerTests
{
@Mock
private
HealthIndicator
healthIndicator
;
@Before
public
void
setup
()
{
initMocks
(
this
);
}
@Test
public
void
upMappingWorks
()
{
assertStatus
(
InstanceStatus
.
UP
,
Health
.
up
());
}
@Test
public
void
downMappingWorks
()
{
assertStatus
(
InstanceStatus
.
DOWN
,
Health
.
down
());
}
@Test
public
void
outOfServiceMappingWorks
()
{
assertStatus
(
InstanceStatus
.
OUT_OF_SERVICE
,
Health
.
outOfService
());
}
@Test
public
void
unkownMappingWorks
()
{
assertStatus
(
InstanceStatus
.
UNKNOWN
,
Health
.
unknown
());
}
private
void
assertStatus
(
InstanceStatus
expected
,
Health
.
Builder
builder
)
{
given
(
healthIndicator
.
health
()).
willReturn
(
builder
.
build
());
LocalApplicationHealthCheckHandler
handler
=
new
LocalApplicationHealthCheckHandler
(
healthIndicator
);
InstanceStatus
status
=
handler
.
getStatus
(
InstanceStatus
.
UP
);
assertEquals
(
expected
,
status
);
}
}
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