From 71476cce261245fa29b1eb72517759f2be6d0cf6 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 c2499821f4..0b5bb1eea3 100644 --- a/swift/common/utils.py +++ b/swift/common/utils.py @@ -4312,7 +4312,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 06e54d5e3e..e7ec0b639f 100644 --- a/test/unit/common/test_utils.py +++ b/test/unit/common/test_utils.py @@ -6346,6 +6346,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):