From 85593e8d84e317ca337b128d0bd20fc4f8818e45 Mon Sep 17 00:00:00 2001 From: Tim Burke Date: Thu, 11 Jun 2020 15:37:56 -0700 Subject: [PATCH] py3: Fix expirer container generation Closes-Bug: #1883561 Change-Id: Idbc13b90a565c4e64cef9035dbcd60872576727a --- swift/common/utils.py | 2 +- test/unit/common/test_utils.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/swift/common/utils.py b/swift/common/utils.py index 458652840b..2cc97ecb3b 100644 --- a/swift/common/utils.py +++ b/swift/common/utils.py @@ -4346,7 +4346,7 @@ def get_expirer_container(x_delete_at, expirer_divisor, acc, cont, obj): """ shard_int = int(hash_path(acc, cont, obj), 16) % 100 return normalize_delete_at_timestamp( - int(x_delete_at) / expirer_divisor * expirer_divisor - shard_int) + int(x_delete_at) // expirer_divisor * expirer_divisor - shard_int) class _MultipartMimeFileLikeObject(object): diff --git a/test/unit/common/test_utils.py b/test/unit/common/test_utils.py index b3a1c9728e..b3f10503ec 100644 --- a/test/unit/common/test_utils.py +++ b/test/unit/common/test_utils.py @@ -6476,6 +6476,16 @@ class TestParseContentDisposition(unittest.TestCase): self.assertEqual(attrs, {'name': 'somefile', 'filename': 'test.html'}) +class TestGetExpirerContainer(unittest.TestCase): + + @mock.patch.object(utils, 'hash_path', return_value=hex(101)[2:]) + def test_get_expirer_container(self, mock_hash_path): + container = utils.get_expirer_container(1234, 20, 'a', 'c', 'o') + self.assertEqual(container, '0000001219') + container = utils.get_expirer_container(1234, 200, 'a', 'c', 'o') + self.assertEqual(container, '0000001199') + + class TestIterMultipartMimeDocuments(unittest.TestCase): def test_bad_start(self):