@ -1,5 +1,5 @@
/ *
/ *
* Copyright 2012 - 201 6 the original author or authors .
* Copyright 2012 - 201 7 the original author or authors .
*
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* you may not use this file except in compliance with the License .
@ -19,7 +19,7 @@ package org.springframework.boot.actuate.health;
import java.io.IOException ;
import java.io.IOException ;
import org.apache.solr.client.solrj.SolrClient ;
import org.apache.solr.client.solrj.SolrClient ;
import org.apache.solr.client.solrj.re sponse.SolrPingResponse ;
import org.apache.solr.client.solrj.re quest.CoreAdminRequest ;
import org.apache.solr.common.util.NamedList ;
import org.apache.solr.common.util.NamedList ;
import org.junit.After ;
import org.junit.After ;
import org.junit.Test ;
import org.junit.Test ;
@ -32,6 +32,8 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext
import static org.assertj.core.api.Assertions.assertThat ;
import static org.assertj.core.api.Assertions.assertThat ;
import static org.mockito.BDDMockito.given ;
import static org.mockito.BDDMockito.given ;
import static org.mockito.Matchers.any ;
import static org.mockito.Matchers.isNull ;
import static org.mockito.Mockito.mock ;
import static org.mockito.Mockito.mock ;
/ * *
/ * *
@ -65,21 +67,30 @@ public class SolrHealthIndicatorTests {
@Test
@Test
public void solrIsUp ( ) throws Exception {
public void solrIsUp ( ) throws Exception {
SolrClient solrClient = mock ( SolrClient . class ) ;
SolrClient solrClient = mock ( SolrClient . class ) ;
SolrPingResponse pingResponse = new SolrPingResponse ( ) ;
given ( solrClient . request ( any ( CoreAdminRequest . class ) , ( String ) isNull ( ) ) )
NamedList < Object > response = new NamedList < Object > ( ) ;
. willReturn ( mockResponse ( 0 ) ) ;
response . add ( "status" , "OK" ) ;
pingResponse . setResponse ( response ) ;
given ( solrClient . ping ( ) ) . willReturn ( pingResponse ) ;
SolrHealthIndicator healthIndicator = new SolrHealthIndicator ( solrClient ) ;
SolrHealthIndicator healthIndicator = new SolrHealthIndicator ( solrClient ) ;
Health health = healthIndicator . health ( ) ;
Health health = healthIndicator . health ( ) ;
assertThat ( health . getStatus ( ) ) . isEqualTo ( Status . UP ) ;
assertThat ( health . getStatus ( ) ) . isEqualTo ( Status . UP ) ;
assertThat ( health . getDetails ( ) . get ( "solrStatus" ) ) . isEqualTo ( "OK" ) ;
assertThat ( health . getDetails ( ) . get ( "solrStatus" ) ) . isEqualTo ( "OK" ) ;
}
}
@Test
public void solrIsUpAndRequestFailed ( ) throws Exception {
SolrClient solrClient = mock ( SolrClient . class ) ;
given ( solrClient . request ( any ( CoreAdminRequest . class ) , ( String ) isNull ( ) ) )
. willReturn ( mockResponse ( 400 ) ) ;
SolrHealthIndicator healthIndicator = new SolrHealthIndicator ( solrClient ) ;
Health health = healthIndicator . health ( ) ;
assertThat ( health . getStatus ( ) ) . isEqualTo ( Status . DOWN ) ;
assertThat ( health . getDetails ( ) . get ( "solrStatus" ) ) . isEqualTo ( 400 ) ;
}
@Test
@Test
public void solrIsDown ( ) throws Exception {
public void solrIsDown ( ) throws Exception {
SolrClient solrClient = mock ( SolrClient . class ) ;
SolrClient solrClient = mock ( SolrClient . class ) ;
given ( solrClient . ping ( ) ) . willThrow ( new IOException ( "Connection failed" ) ) ;
given ( solrClient . request ( any ( CoreAdminRequest . class ) , ( String ) isNull ( ) ) )
. willThrow ( new IOException ( "Connection failed" ) ) ;
SolrHealthIndicator healthIndicator = new SolrHealthIndicator ( solrClient ) ;
SolrHealthIndicator healthIndicator = new SolrHealthIndicator ( solrClient ) ;
Health health = healthIndicator . health ( ) ;
Health health = healthIndicator . health ( ) ;
assertThat ( health . getStatus ( ) ) . isEqualTo ( Status . DOWN ) ;
assertThat ( health . getStatus ( ) ) . isEqualTo ( Status . DOWN ) ;
@ -87,4 +98,12 @@ public class SolrHealthIndicatorTests {
. contains ( "Connection failed" ) ) ;
. contains ( "Connection failed" ) ) ;
}
}
private NamedList < Object > mockResponse ( int status ) {
NamedList < Object > response = new NamedList < Object > ( ) ;
NamedList < Object > headers = new NamedList < Object > ( ) ;
headers . add ( "status" , status ) ;
response . add ( "responseHeader" , headers ) ;
return response ;
}
}
}