From 7b3cdb1aeaee5f91ea5f8ca980156ca3f95aaa3e Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Wed, 28 Sep 2022 22:18:23 +0200 Subject: [PATCH] add benchmark for item attribute / dict access Author: @RonnyPfannschmidt in PR #5763 --- src/borg/testsuite/benchmark.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/borg/testsuite/benchmark.py b/src/borg/testsuite/benchmark.py index 563397ad5..bb9d20548 100644 --- a/src/borg/testsuite/benchmark.py +++ b/src/borg/testsuite/benchmark.py @@ -11,6 +11,7 @@ import os import pytest from .archiver import changedir, cmd +from .item import Item from ..constants import zeros @@ -108,3 +109,17 @@ def test_check(benchmark, cmd, repo_archive): def test_help(benchmark, cmd): result, out = benchmark(cmd, "help") assert result == 0 + + +@pytest.mark.parametrize("type, key, value", [(Item, "size", 1000), (Item, "mode", 0x777), (Item, "deleted", False)]) +def test_propdict_attributes(benchmark, type, key, value): + + propdict = type() + + def getattr_setattr(item, key, value): + setattr(item, key, value) + assert item.get(key) == value + assert getattr(item, key) == value + item.as_dict() + + benchmark(getattr_setattr, propdict, key, value)