Skip to content
This repository has been archived by the owner on Jun 3, 2024. It is now read-only.

Commit

Permalink
Restore metrics:health-check-registry element
Browse files Browse the repository at this point in the history
Add a test for the health checks
  • Loading branch information
ryantenney committed Jun 17, 2013
1 parent 28075ae commit d69a5dd
Show file tree
Hide file tree
Showing 6 changed files with 141 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Copyright 2012 Ryan W Tenney (http://ryan.10e.us)
* and Martello Technologies (http://martellotech.com)
*
* 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 com.ryantenney.metrics.spring.config;

import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.w3c.dom.Element;

import com.codahale.metrics.health.HealthCheckRegistry;

class HealthCheckRegistryBeanDefinitionParser extends AbstractSingleBeanDefinitionParser {

@Override
protected Class<?> getBeanClass(Element element) {
return HealthCheckRegistry.class;
}

@Override
protected boolean shouldGenerateIdAsFallback() {
return true;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ class MetricsNamespaceHandler extends NamespaceHandlerSupport {
public void init() {
registerBeanDefinitionParser("annotation-driven", new AnnotationDrivenBeanDefinitionParser());
registerBeanDefinitionParser("metric-registry", new MetricRegistryBeanDefinitionParser());
registerBeanDefinitionParser("health-check-registry", new HealthCheckRegistryBeanDefinitionParser());
registerBeanDefinitionParser("reporter", new ReporterBeanDefinitionParser());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@
</xsd:complexType>
</xsd:element>

<xsd:element name="health-check-registry">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>

<xsd:element name="reporter">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:string" use="optional"/>
Expand Down
80 changes: 80 additions & 0 deletions src/test/java/com/ryantenney/metrics/spring/HealthCheckTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
/*
* Copyright 2012 Ryan W Tenney (http://ryan.10e.us)
* and Martello Technologies (http://martellotech.com)
*
* 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 com.ryantenney.metrics.spring;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.codahale.metrics.health.HealthCheck;
import com.codahale.metrics.health.HealthCheck.Result;
import com.codahale.metrics.health.HealthCheckRegistry;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:health-check.xml")
public class HealthCheckTest {

@Autowired
HealthCheckClass healthCheckClass;

@Autowired
HealthCheckRegistry healthCheckRegistry;

@Test
public void testHealthy() {
healthCheckClass.setShouldFail(false);
Result result = healthCheckRegistry.runHealthCheck("myHealthCheckClass");
assertTrue(result.isHealthy());
}

@Test
public void testUnhealthy() {
healthCheckClass.setShouldFail(true);
Result result = healthCheckRegistry.runHealthCheck("myHealthCheckClass");
assertFalse(result.isHealthy());
assertEquals("fail whale", result.getMessage());
}

public static class HealthCheckClass extends HealthCheck {

private boolean shouldFail;

public boolean isShouldFail() {
return shouldFail;
}

public void setShouldFail(boolean shouldFail) {
this.shouldFail = shouldFail;
}

@Override
protected Result check() {
if (shouldFail) {
return Result.unhealthy(new RuntimeException("fail whale"));
}
return Result.healthy();
}

}

}
17 changes: 17 additions & 0 deletions src/test/resources/health-check.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:metrics="http://www.ryantenney.com/schema/metrics"

xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.ryantenney.com/schema/metrics http://www.ryantenney.com/schema/metrics/metrics-3.0.xsd">

<metrics:health-check-registry id="health" />
<metrics:annotation-driven health-check-registry="health" />

<bean id="myHealthCheckClass" class="com.ryantenney.metrics.spring.HealthCheckTest.HealthCheckClass" />

</beans>
2 changes: 1 addition & 1 deletion src/test/resources/supplied-registries.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
http://www.ryantenney.com/schema/metrics http://www.ryantenney.com/schema/metrics/metrics-3.0.xsd">

<metrics:metric-registry id="metrics" />
<bean id="health" class="com.codahale.metrics.health.HealthCheckRegistry" />
<metrics:health-check-registry id="health" />

<metrics:annotation-driven metric-registry="metrics" health-check-registry="health" />

Expand Down

0 comments on commit d69a5dd

Please sign in to comment.