forked from thepaul/cassandra-dtest
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrange_ghost_test.py
49 lines (37 loc) · 1.4 KB
/
range_ghost_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from dtest import Tester
from tools import *
from assertions import *
import os, sys, time
from ccmlib.cluster import Cluster
class TestRangeGhosts(Tester):
def ghosts_test(self):
""" Check range ghost are correctly removed by the system """
cluster = self.cluster
cluster.populate(1).start()
[node1] = cluster.nodelist()
time.sleep(.5)
cursor = self.cql_connection(node1).cursor()
self.create_ks(cursor, 'ks', 1)
self.create_cf(cursor, 'cf', gc_grace=0, columns={'c': 'text'})
rows = 1000
for i in xrange(0, rows):
cursor.execute("UPDATE cf SET c = 'value' WHERE key = 'k%i'" % i)
cursor.execute("SELECT * FROM cf LIMIT 10000")
res = cursor.fetchall()
assert len(res) == rows, res
node1.flush()
for i in xrange(0, rows/2):
cursor.execute("DELETE FROM cf WHERE key = 'k%i'" % i)
cursor.execute("SELECT * FROM cf LIMIT 10000")
res = cursor.fetchall()
# no ghosts in 1.2+
if cluster.version() >= '1.2':
assert len(res) == rows/2, len(res)
else:
assert len(res) == rows, len(res)
node1.flush()
time.sleep(1) # make sure tombstones are collected
node1.compact()
cursor.execute("SELECT * FROM cf LIMIT 10000")
res = cursor.fetchall()
assert len(res) == rows/2, len(res)