MCPcopy Create free account
hub / github.com/KentBeck/BPlusTree3 / do_batch_delete

Method do_batch_delete

python/tests/fuzz_test.py:269–310  ·  view source on GitHub ↗

Perform batch delete operation

(self)

Source from the content-addressed store, hash-verified

267 return True
268
269 def do_batch_delete(self):
270 """Perform batch delete operation"""
271 if len(self.reference) < 5:
272 return True # Not enough keys for meaningful batch operation
273
274 # Select random subset of existing keys
275 batch_size = min(random.randint(2, 10), len(self.reference) // 2)
276 keys_to_delete = random.sample(list(self.reference.keys()), batch_size)
277
278 # Add some non-existent keys to test robustness
279 keys_to_delete.extend([self.random_key(existing_bias=0.1) for _ in range(2)])
280
281 # Remove duplicates and count expected deletions
282 keys_to_delete = list(set(keys_to_delete)) # Remove duplicates
283 keys_expected_to_exist = [
284 key for key in keys_to_delete if key in self.reference
285 ]
286 expected_deletions = len(keys_expected_to_exist)
287
288 # Perform batch delete on btree
289 actual_deletions = self.btree.delete_batch(keys_to_delete)
290
291 # Check which keys that should have been deleted weren't found in the tree
292 if actual_deletions != expected_deletions:
293 print(
294 f"ERROR: batch delete count mismatch: expected={expected_deletions}, actual={actual_deletions}"
295 )
296 # Find which keys were expected but not found in the tree
297 missing_keys = []
298 for key in keys_expected_to_exist:
299 if key not in self.btree:
300 missing_keys.append(key)
301 print(f"Keys expected in tree but missing: {missing_keys}")
302 return False
303
304 # Manually delete from reference
305 for key in keys_to_delete:
306 if key in self.reference:
307 del self.reference[key]
308
309 self.log_operation("batch_delete", keys_to_delete, expected_deletions)
310 return True
311
312 def do_compact(self):
313 """Perform tree compaction - functionality removed"""

Callers

nothing calls this directly

Calls 3

random_keyMethod · 0.95
log_operationMethod · 0.95
keysMethod · 0.45

Tested by

no test coverage detected