在我的基于Java-Spring的Web应用程序中,我使用Cassandra连接到Hector and Spring数据库。
连接工作正常,但我希望能够测试连接。
因此,如果我故意向CassandraHostConfigurator提供错误的主机,我会收到错误:
ERROR connection.HConnectionManager: Could not start connection pool for host <myhost:myport>
当然可以。但是我该如何测试这种连接呢?
如果我以实际方式定义连接(而不是通过spring上下文),很明显,但是通过spring上下文,如何测试它并不是很清楚。
你能想到一个想法吗?答案 0 :(得分:0)
由于我无法提出或找不到令人满意的答案,因此我决定以实用方式定义我的连接并使用简单的查询:
private ColumnFamilyResult<String, String> readFromDb(Keyspace keyspace) {
ColumnFamilyTemplate<String, String> template = new ThriftColumnFamilyTemplate<String, String>(keyspace, tableName, StringSerializer.get(),
StringSerializer.get());
// It doesn't matter if the column actually exists or not since we only check the
// connection. In case of connection failure an exception is thrown,
// else something comes back.
return template.queryColumns("some_column");
}
我的测试检查返回的对象是否为空。
另一种可行的方法:
public boolean isConnected() {
List<KeyspaceDefinition> keyspaces = null;
try {
keyspaces = cluster.describeKeyspaces();
} catch (HectorException e) {
return false;
}
return (!CollectionUtils.isEmpty(keyspaces));
}