我正试图用cassandraunit来测试Cassandra。我从github粘贴测试并转换为Scala,但它不起作用。
text = '[red]\naaa [bbb] hello\n[blue]\naaa\n[green]\nccc'
# keys = ('red', 'blue', 'green')
# keys = ('blue', 'red', 'green')
# keys = ('green', 'red', 'blue')
keys = ('green', 'blue', 'red')
# store key and index of key tuple
index_key_tuples = []
for key in keys:
index = text.find('[' + key + ']')
if index != -1:
index_key_tuples.append((index, key))
# sort the index key tuple
index_key_tuples.sort()
i = 0
size = len(index_key_tuples)
while i < size - 1:
# start index of content of key
item = index_key_tuples[i]
key = item[1]
start_index = item[0] + len(key) + 2 # 2 is for square bracket
# end index of content of key
next_item = index_key_tuples[i + 1]
end_index = next_item[0]
# content of key
key_content = text[start_index:end_index].strip()
print(key, key_content)
i += 1
# handle the last key
last_item = index_key_tuples[size-1]
key = last_item[1]
start_index = last_item[0] + len(key) + 2
key_content = text[start_index:].strip()
print(key, key_content)
会话变量为null我不知道为什么。我理解比cassandraCQLUnit在同一个VM中有一个Cassandra服务器。是否有必要做其他事情?
答案 0 :(得分:2)
您需要启动服务器并进行连接。然后您可以在以下位置加载数据:
import com.datastax.driver.core.{Cluster, Session}
import org.cassandraunit.CQLDataLoader
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet
import org.cassandraunit.utils.EmbeddedCassandraServerHelper
import org.scalatest.{BeforeAndAfterAll, FunSuite}
class CassandraTest extends FunSuite
with BeforeAndAfterAll {
var cluster : Cluster = _
var session : Session = _
override def beforeAll(): Unit = {
EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.CASSANDRA_RNDPORT_YML_FILE)
cluster = EmbeddedCassandraServerHelper.getCluster()
session = cluster.connect()
val dataLoader = new CQLDataLoader(session)
dataLoader.load(new ClassPathCQLDataSet("statementsWithBlankEndings.cql","mykeyspace"))
}
test("really simple transformation") {
val resultSet = session.execute("select * from mykeyspace.testCQLTable WHERE id='1690e8da-5bf8-49e8-9583-4dff8a570737'")
println(resultSet.iterator().next().getString("value"))
}
}