我需要启动一个嵌入式cassandra示例来通过单元测试在一个Cassandra键空间上执行一些操作。编程语言是Java。启动嵌入式cassandra的选项是什么?
我使用了mojo maven插件,但是在使用以下命令启动示例后,我没有看到cassandra示例在localhost上的默认端口9042启动。插件:http://www.mojohaus.org/cassandra-maven-plugin/usage.html要启动的命令:mvn cassandra:运行-德Cassandra。本地运输港口=9042
在用法方面是否缺少了什么,或者我需要使用不同的东西?
谢谢Jyothi
4条答案
按热度按时间ctehm74n1#
Cassandra Maven Plugin(我是它的原始作者之一)和Cassandra Unit都做了一些非常相似的事情,它们都启动了Cassandra的一个JVM内示例。
如果你只是想在集成测试中做一些CRUD的事情,这是非常好的,但是如果你想测试一致性级别失败和面对各种失败情况下的重试,特别是对于多个数据中心,这就没有帮助了。Cassandra在这一点上是一个野兽,所以这意味着你需要 * 很多 * 内存来运行测试。
要真正验证上述内容,我建议使用Simulacron:https://github.com/datastax/simulacron/blob/master/doc/java_api/README.md
集成示例:https://github.com/datastax/java-driver/blob/9f0d89799a8a1e4cd1022dd7c43333924c36a648/integration-tests/src/test/java/com/datastax/oss/driver/api/core/ProtocolVersionMixedClusterIT.java
这是驱动程序团队用来测试行为场景的工具,尽管他们仍然依赖CCM测试桥(也是一个选项)来进行大量的拦网和阻截。对于这两种情况,在该项目中将其引入maven的方式应该被用作最佳实践的例子:
https://github.com/datastax/java-driver/blob/3.x/pom.xml#L749-L816
和配置文件切换为这样:https://github.com/datastax/java-driver/blob/3.x/pom.xml#L925-L947
并使用配置文件:https://github.com/datastax/java-driver/blob/3.x/driver-core/src/test/java/com/datastax/driver/core/PreparedStatementTest.java#L146
为了让您真正理解它,我建议您将驱动程序项目拉下来,并将其拆开,看看这些是如何组合在一起的。可能最大的好处是整个项目对Cassandra代码没有任何依赖。
swvgeqrz2#
我们使用Cassandra unit进行单元测试。这个库提供了有用的助手,并允许非常容易地从代码启动Embedded Cassandra
lyr7nygr3#
您还可以查看https://github.com/nosan/embedded-cassandra/wiki
例如,如果要使用
JUnit4
启动Cassandra
,可以在一行中执行以下操作:Cassandra
将作为单独的进程forked
。如果您使用java
9和更高版本,也可以通过javaHome
属性将路径设置为JAVA_HOME 8
。ztigrdn84#
您需要向cassandra-maven-plugin提供以下配置才能启动本机传输端口(9042)
<startNativeTransport>true</startNativeTransport>
所以你的插件看起来像