summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2014-09-20 12:52:09 +0000
committerGerrit Code Review <review@openstack.org>2014-09-20 12:52:09 +0000
commit0d0c16d4521b6be16a9fed8f5567c4a3c766d5a7 (patch)
treebc3ebc660ff953d8172d6aab4656655081af4446
parent3668ea060451ba35408a600949eecc33bb779b0e (diff)
parent1678083d0e48f24e6a74eada874f01ac2755cf78 (diff)
downloadswift-0d0c16d4521b6be16a9fed8f5567c4a3c766d5a7.tar.gz
Merge "Test for unicode names in AccountBroker.merge_items()"
-rw-r--r--test/unit/account/test_backend.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/unit/account/test_backend.py b/test/unit/account/test_backend.py
index d98b80396..1fb65260a 100644
--- a/test/unit/account/test_backend.py
+++ b/test/unit/account/test_backend.py
@@ -16,6 +16,7 @@
""" Tests for swift.account.backend """
import hashlib
+import json
import unittest
import pickle
import os
@@ -578,6 +579,34 @@ class TestAccountBroker(unittest.TestCase):
self.assertEqual(['a', 'b', 'c'],
sorted([rec['name'] for rec in items]))
+ def test_merge_items_overwrite_unicode(self):
+ snowman = u'\N{SNOWMAN}'.encode('utf-8')
+ broker1 = AccountBroker(':memory:', account='a')
+ broker1.initialize(Timestamp('1').internal, 0)
+ id1 = broker1.get_info()['id']
+ broker2 = AccountBroker(':memory:', account='a')
+ broker2.initialize(Timestamp('1').internal, 0)
+ broker1.put_container(snowman, Timestamp(2).internal, 0, 1, 100,
+ POLICIES.default.idx)
+ broker1.put_container('b', Timestamp(3).internal, 0, 0, 0,
+ POLICIES.default.idx)
+ broker2.merge_items(json.loads(json.dumps(broker1.get_items_since(
+ broker2.get_sync(id1), 1000))), id1)
+ broker1.put_container(snowman, Timestamp(4).internal, 0, 2, 200,
+ POLICIES.default.idx)
+ broker2.merge_items(json.loads(json.dumps(broker1.get_items_since(
+ broker2.get_sync(id1), 1000))), id1)
+ items = broker2.get_items_since(-1, 1000)
+ self.assertEquals(['b', snowman],
+ sorted([rec['name'] for rec in items]))
+ items_by_name = dict((rec['name'], rec) for rec in items)
+
+ self.assertEqual(items_by_name[snowman]['object_count'], 2)
+ self.assertEqual(items_by_name[snowman]['bytes_used'], 200)
+
+ self.assertEqual(items_by_name['b']['object_count'], 0)
+ self.assertEqual(items_by_name['b']['bytes_used'], 0)
+
def test_load_old_pending_puts(self):
# pending puts from pre-storage-policy account brokers won't contain
# the storage policy index