From 586516d8fad224c5fd5a62f496f86ae424b62afd Mon Sep 17 00:00:00 2001 From: Simon Westphahl Date: Tue, 15 Mar 2022 11:13:43 +0100 Subject: [PATCH] Fix ZKObject compressed data size estimate The `walk()` method used a wrong variable name for the compressed data size. Because of that the compressed size was always returned as 0 for nested ZKObjects leading to a wrong total. Change-Id: I2081f1100fe1733b9c1c161d3a65086359bd81e8 --- tests/unit/test_zk.py | 10 +++++++++- zuul/zk/zkobject.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_zk.py b/tests/unit/test_zk.py index 303ef25a55..fedf5a838d 100644 --- a/tests/unit/test_zk.py +++ b/tests/unit/test_zk.py @@ -1634,9 +1634,17 @@ class TestZKObject(ZooKeeperBaseTestCase): '/zuul/pipeline/fake_tenant') self.assertEqual(pipeline2.foo, 'bar') - compressed_size, uncompressed_size = pipeline1.estimateDataSize() + compressed_size, uncompressed_size = pipeline2.estimateDataSize() self.assertTrue(compressed_size != uncompressed_size != 0) + # Test that nested ZKObject sizes are summed up correctly + p1_compressed, p1_uncompressed = pipeline1.estimateDataSize() + p2_compressed, p2_uncompressed = pipeline2.estimateDataSize() + pipeline2._set(other=pipeline1) + compressed_size, uncompressed_size = pipeline2.estimateDataSize() + self.assertEqual(compressed_size, p1_compressed + p2_compressed) + self.assertEqual(uncompressed_size, p1_uncompressed + p2_uncompressed) + def get_ltime(obj): zstat = self.zk_client.client.exists(obj.getPath()) return zstat.last_modified_transaction_id diff --git a/zuul/zk/zkobject.py b/zuul/zk/zkobject.py index 215f442919..e7fc33d958 100644 --- a/zuul/zk/zkobject.py +++ b/zuul/zk/zkobject.py @@ -211,7 +211,7 @@ class ZKObject: if obj in seen: return 0, 0 seen.add(obj) - compress, uncompressed = obj.estimateDataSize(seen) + compressed, uncompressed = obj.estimateDataSize(seen) elif (isinstance(obj, dict) or isinstance(obj, types.MappingProxyType)): for sub in obj.values():