Skip to content

Commit 1eb8a48

Browse files
STAR-843: Update dtests for ULID based generation ID
(cherry picked from commit fd2ebac) (cherry picked from commit b85b0f0) (cherry picked from commit 2e1b38a) (cherry picked from commit 31b2994) (cherry picked from commit a265fbf)
1 parent 084c47e commit 1eb8a48

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

scrub_test.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,25 @@ def increase_sstable_generations(self, sstables):
193193
def uuid_sstable_identifiers_enabled(self, session):
194194
return 'true' == session.execute("select value from system_views.settings where name = 'uuid_sstable_identifiers_enabled'")[0][0]
195195

196+
def get_latest_generation(self, sstables):
197+
"""
198+
Get the latest generation ID of the provided sstables
199+
"""
200+
latest_gen = None
201+
for table_or_index, table_sstables in list(sstables.items()):
202+
gen = max(parse.search('{}-{generation}-{}.{}', s).named['generation'] for s in table_sstables)
203+
latest_gen = gen if latest_gen is None else max([gen, latest_gen])
204+
return latest_gen
205+
206+
def get_earliest_generation(self, sstables):
207+
"""
208+
Get the earliest generation ID of the provided sstables
209+
"""
210+
earliest_gen = None
211+
for table_or_index, table_sstables in list(sstables.items()):
212+
gen = min(parse.search('{}-{generation}-{}.{}', s).named['generation'] for s in table_sstables)
213+
earliest_gen = gen if earliest_gen is None else min([gen, earliest_gen])
214+
return earliest_gen
196215

197216
@since('2.2')
198217
class TestScrubIndexes(TestHelper):
@@ -258,13 +277,16 @@ def test_scrub_static_table(self):
258277
if should_assert_sstables:
259278
self.increase_sstable_generations(initial_sstables)
260279
assert initial_sstables == scrubbed_sstables
280+
assert self.get_latest_generation(initial_sstables) < self.get_earliest_generation(scrubbed_sstables)
261281

262282
users = self.query_users(session)
263283
assert initial_users == users
264284

265285
# Scrub and check sstables and data again
286+
initial_sstables = scrubbed_sstables
266287
scrubbed_sstables = self.scrub('users', 'gender_idx', 'state_idx', 'birth_year_idx')
267288

289+
assert self.get_latest_generation(initial_sstables) < self.get_earliest_generation(scrubbed_sstables)
268290
if should_assert_sstables:
269291
self.increase_sstable_generations(initial_sstables)
270292
assert initial_sstables == scrubbed_sstables
@@ -301,6 +323,7 @@ def test_standalone_scrub(self):
301323

302324
scrubbed_sstables = self.standalonescrub('users', 'gender_idx', 'state_idx', 'birth_year_idx')
303325

326+
assert self.get_latest_generation(initial_sstables) < self.get_earliest_generation(scrubbed_sstables)
304327
if should_assert_sstables:
305328
self.increase_sstable_generations(initial_sstables)
306329
assert initial_sstables == scrubbed_sstables
@@ -337,15 +360,18 @@ def test_scrub_collections_table(self):
337360
initial_sstables = self.flush('users', 'user_uuids_idx')
338361
scrubbed_sstables = self.scrub('users', 'user_uuids_idx')
339362

363+
assert self.get_latest_generation(initial_sstables) < self.get_earliest_generation(scrubbed_sstables)
340364
if should_assert_sstables:
341365
self.increase_sstable_generations(initial_sstables)
342366
assert initial_sstables == scrubbed_sstables
343367

344368
users = list(session.execute(("SELECT * from users where uuids contains {some_uuid}").format(some_uuid=_id)))
345369
assert initial_users == users
346370

371+
initial_sstables = scrubbed_sstables
347372
scrubbed_sstables = self.scrub('users', 'user_uuids_idx')
348373

374+
assert self.get_latest_generation(initial_sstables) < self.get_earliest_generation(scrubbed_sstables)
349375
if should_assert_sstables:
350376
self.increase_sstable_generations(initial_sstables)
351377
assert initial_sstables == scrubbed_sstables
@@ -402,6 +428,7 @@ def test_nodetool_scrub(self):
402428
initial_sstables = self.flush('users')
403429
scrubbed_sstables = self.scrub('users')
404430

431+
assert self.get_latest_generation(initial_sstables) < self.get_earliest_generation(scrubbed_sstables)
405432
if should_assert_sstables:
406433
self.increase_sstable_generations(initial_sstables)
407434
assert initial_sstables == scrubbed_sstables
@@ -410,8 +437,10 @@ def test_nodetool_scrub(self):
410437
assert initial_users == users
411438

412439
# Scrub and check sstables and data again
440+
initial_sstables = scrubbed_sstables
413441
scrubbed_sstables = self.scrub('users')
414442

443+
assert self.get_latest_generation(initial_sstables) < self.get_earliest_generation(scrubbed_sstables)
415444
if should_assert_sstables:
416445
self.increase_sstable_generations(initial_sstables)
417446
assert initial_sstables == scrubbed_sstables
@@ -448,6 +477,7 @@ def test_standalone_scrub(self):
448477

449478
scrubbed_sstables = self.standalonescrub('users')
450479

480+
assert self.get_latest_generation(initial_sstables) < self.get_earliest_generation(scrubbed_sstables)
451481
if should_assert_sstables:
452482
self.increase_sstable_generations(initial_sstables)
453483
assert initial_sstables == scrubbed_sstables
@@ -480,6 +510,7 @@ def test_standalone_scrub_essential_files_only(self):
480510

481511
scrubbed_sstables = self.standalonescrub(table='users', acceptable_errors=["WARN.*Could not recreate or deserialize existing bloom filter, continuing with a pass-through bloom filter but this will significantly impact reads performance"])
482512

513+
assert self.get_latest_generation(initial_sstables) < self.get_earliest_generation(scrubbed_sstables)
483514
if should_assert_sstables:
484515
self.increase_sstable_generations(initial_sstables)
485516
assert initial_sstables == scrubbed_sstables

0 commit comments

Comments
 (0)