diff --git a/swh/storage/buffer.py b/swh/storage/buffer.py --- a/swh/storage/buffer.py +++ b/swh/storage/buffer.py @@ -140,7 +140,8 @@ for batch in batches: add_fn = getattr(self.storage, "%s_add" % object_type) stats = add_fn(list(batch)) - summary = {k: v + summary.get(k, 0) for k, v in stats.items()} + for k, v in stats.items(): + summary[k] = v + summary.get(k, 0) self.clear_buffers(object_types) diff --git a/swh/storage/tests/test_buffer.py b/swh/storage/tests/test_buffer.py --- a/swh/storage/tests/test_buffer.py +++ b/swh/storage/tests/test_buffer.py @@ -523,3 +523,30 @@ methods_called, ) prev = cur + + +def test_buffer_flush_stats(sample_data) -> None: + storage = get_storage_with_buffer_config() + + s = storage.content_add(sample_data.contents) + assert s == {} + s = storage.skipped_content_add(sample_data.skipped_contents) + assert s == {} + s = storage.directory_add(sample_data.directories) + assert s == {} + s = storage.revision_add(sample_data.revisions) + assert s == {} + s = storage.release_add(sample_data.releases) + assert s == {} + s = storage.snapshot_add(sample_data.snapshots) + assert s == {} + + # Flush all the things + s = storage.flush() + assert s["content:add"] > 0 + assert s["content:add:bytes"] > 0 + assert s["skipped_content:add"] > 0 + assert s["directory:add"] > 0 + assert s["revision:add"] > 0 + assert s["release:add"] > 0 + assert s["snapshot:add"] > 0