Commit ef592eae authored by Stephane Nicoll's avatar Stephane Nicoll

Merge branch '2.2.x'

Closes gh-20726
parents a7e88295 ac56db70
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
package org.springframework.boot.actuate.cassandra; package org.springframework.boot.actuate.cassandra;
import com.datastax.oss.driver.api.core.ConsistencyLevel; import com.datastax.oss.driver.api.core.ConsistencyLevel;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.SimpleStatement; import com.datastax.oss.driver.api.core.cql.SimpleStatement;
import org.springframework.boot.actuate.health.AbstractHealthIndicator; import org.springframework.boot.actuate.health.AbstractHealthIndicator;
...@@ -57,12 +56,7 @@ public class CassandraHealthIndicator extends AbstractHealthIndicator { ...@@ -57,12 +56,7 @@ public class CassandraHealthIndicator extends AbstractHealthIndicator {
@Override @Override
protected void doHealthCheck(Health.Builder builder) throws Exception { protected void doHealthCheck(Health.Builder builder) throws Exception {
ResultSet results = this.cassandraOperations.getCqlOperations().queryForResultSet(SELECT); String version = this.cassandraOperations.getCqlOperations().queryForObject(SELECT, String.class);
if (results.isFullyFetched()) {
builder.up();
return;
}
String version = results.one().getString(0);
builder.up().withDetail("version", version); builder.up().withDetail("version", version);
} }
......
...@@ -16,19 +16,19 @@ ...@@ -16,19 +16,19 @@
package org.springframework.boot.actuate.cassandra; package org.springframework.boot.actuate.cassandra;
import com.datastax.oss.driver.api.core.cql.ResultSet;
import com.datastax.oss.driver.api.core.cql.Row;
import com.datastax.oss.driver.api.core.cql.SimpleStatement; import com.datastax.oss.driver.api.core.cql.SimpleStatement;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.Status; import org.springframework.boot.actuate.health.Status;
import org.springframework.data.cassandra.CassandraInternalException;
import org.springframework.data.cassandra.core.CassandraOperations; import org.springframework.data.cassandra.core.CassandraOperations;
import org.springframework.data.cassandra.core.cql.CqlOperations; import org.springframework.data.cassandra.core.cql.CqlOperations;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.BDDMockito.given; import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
...@@ -36,6 +36,7 @@ import static org.mockito.Mockito.mock; ...@@ -36,6 +36,7 @@ import static org.mockito.Mockito.mock;
* Tests for {@link CassandraHealthIndicator}. * Tests for {@link CassandraHealthIndicator}.
* *
* @author Oleksii Bondar * @author Oleksii Bondar
* @author Stephane Nicoll
*/ */
class CassandraHealthIndicatorTests { class CassandraHealthIndicatorTests {
...@@ -45,34 +46,26 @@ class CassandraHealthIndicatorTests { ...@@ -45,34 +46,26 @@ class CassandraHealthIndicatorTests {
} }
@Test @Test
void verifyHealthStatusWhenExhausted() { void healthWithCassandraUp() {
CassandraOperations cassandraOperations = mock(CassandraOperations.class); CassandraOperations cassandraOperations = mock(CassandraOperations.class);
CqlOperations cqlOperations = mock(CqlOperations.class); CqlOperations cqlOperations = mock(CqlOperations.class);
ResultSet resultSet = mock(ResultSet.class);
CassandraHealthIndicator healthIndicator = new CassandraHealthIndicator(cassandraOperations); CassandraHealthIndicator healthIndicator = new CassandraHealthIndicator(cassandraOperations);
given(cassandraOperations.getCqlOperations()).willReturn(cqlOperations); given(cassandraOperations.getCqlOperations()).willReturn(cqlOperations);
given(cqlOperations.queryForResultSet(any(SimpleStatement.class))).willReturn(resultSet); given(cqlOperations.queryForObject(any(SimpleStatement.class), eq(String.class))).willReturn("1.0.0");
given(resultSet.isFullyFetched()).willReturn(true);
Health health = healthIndicator.health(); Health health = healthIndicator.health();
assertThat(health.getStatus()).isEqualTo(Status.UP); assertThat(health.getStatus()).isEqualTo(Status.UP);
assertThat(health.getDetails().get("version")).isEqualTo("1.0.0");
} }
@Test @Test
void verifyHealthStatusWithVersion() { void healthWithCassandraDown() {
CassandraOperations cassandraOperations = mock(CassandraOperations.class); CassandraOperations cassandraOperations = mock(CassandraOperations.class);
CqlOperations cqlOperations = mock(CqlOperations.class); given(cassandraOperations.getCqlOperations()).willThrow(new CassandraInternalException("Connection failed"));
ResultSet resultSet = mock(ResultSet.class);
Row row = mock(Row.class);
CassandraHealthIndicator healthIndicator = new CassandraHealthIndicator(cassandraOperations); CassandraHealthIndicator healthIndicator = new CassandraHealthIndicator(cassandraOperations);
given(cassandraOperations.getCqlOperations()).willReturn(cqlOperations);
given(cqlOperations.queryForResultSet(any(SimpleStatement.class))).willReturn(resultSet);
given(resultSet.isFullyFetched()).willReturn(false);
given(resultSet.one()).willReturn(row);
String expectedVersion = "1.0.0";
given(row.getString(0)).willReturn(expectedVersion);
Health health = healthIndicator.health(); Health health = healthIndicator.health();
assertThat(health.getStatus()).isEqualTo(Status.UP); assertThat(health.getStatus()).isEqualTo(Status.DOWN);
assertThat(health.getDetails().get("version")).isEqualTo(expectedVersion); assertThat(health.getDetails().get("error"))
.isEqualTo(CassandraInternalException.class.getName() + ": Connection failed");
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment