Refactor timestamp iter in db backend tests
Change-Id: I61d044a6d778e158af73a3f4d9fc75d642af0beb
This commit is contained in:
parent
739c370410
commit
b75d593935
@ -170,7 +170,7 @@ class TestAuditorRealBrokerMigration(
|
|||||||
for i in range(num_containers):
|
for i in range(num_containers):
|
||||||
name = 'test-container-%02d' % i
|
name = 'test-container-%02d' % i
|
||||||
policy = next(policies)
|
policy = next(policies)
|
||||||
self.broker.put_container(name, next(self.ts),
|
self.broker.put_container(name, next(self.ts).internal,
|
||||||
0, 0, 0, int(policy))
|
0, 0, 0, int(policy))
|
||||||
per_policy_container_counts[int(policy)] += 1
|
per_policy_container_counts[int(policy)] += 1
|
||||||
|
|
||||||
|
@ -47,6 +47,10 @@ from test.unit.common import test_db
|
|||||||
class TestAccountBroker(unittest.TestCase):
|
class TestAccountBroker(unittest.TestCase):
|
||||||
"""Tests for AccountBroker"""
|
"""Tests for AccountBroker"""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
# tests seem to assume x-timestamp was set by the proxy before "now"
|
||||||
|
self.ts = make_timestamp_iter(offset=-1)
|
||||||
|
|
||||||
def test_creation(self):
|
def test_creation(self):
|
||||||
# Test AccountBroker.__init__
|
# Test AccountBroker.__init__
|
||||||
broker = AccountBroker(':memory:', account='a')
|
broker = AccountBroker(':memory:', account='a')
|
||||||
@ -176,28 +180,26 @@ class TestAccountBroker(unittest.TestCase):
|
|||||||
broker.reclaim(Timestamp.now().internal, time())
|
broker.reclaim(Timestamp.now().internal, time())
|
||||||
|
|
||||||
def test_delete_db_status(self):
|
def test_delete_db_status(self):
|
||||||
ts = (Timestamp(t).internal for t in itertools.count(int(time())))
|
start = next(self.ts)
|
||||||
start = next(ts)
|
|
||||||
broker = AccountBroker(':memory:', account='a')
|
broker = AccountBroker(':memory:', account='a')
|
||||||
broker.initialize(start)
|
broker.initialize(start.internal)
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
self.assertEqual(info['put_timestamp'], Timestamp(start).internal)
|
self.assertEqual(info['put_timestamp'], start.internal)
|
||||||
self.assertGreaterEqual(Timestamp(info['created_at']), start)
|
self.assertGreaterEqual(Timestamp(info['created_at']), start)
|
||||||
self.assertEqual(info['delete_timestamp'], '0')
|
self.assertEqual(info['delete_timestamp'], '0')
|
||||||
if self.__class__ == TestAccountBrokerBeforeMetadata:
|
if self.__class__ == TestAccountBrokerBeforeMetadata:
|
||||||
self.assertEqual(info['status_changed_at'], '0')
|
self.assertEqual(info['status_changed_at'], '0')
|
||||||
else:
|
else:
|
||||||
self.assertEqual(info['status_changed_at'],
|
self.assertEqual(info['status_changed_at'], start.internal)
|
||||||
Timestamp(start).internal)
|
|
||||||
|
|
||||||
# delete it
|
# delete it
|
||||||
delete_timestamp = next(ts)
|
delete_timestamp = next(self.ts)
|
||||||
broker.delete_db(delete_timestamp)
|
broker.delete_db(delete_timestamp.internal)
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
self.assertEqual(info['put_timestamp'], Timestamp(start).internal)
|
self.assertEqual(info['put_timestamp'], start.internal)
|
||||||
self.assertGreaterEqual(Timestamp(info['created_at']), start)
|
self.assertGreaterEqual(Timestamp(info['created_at']), start)
|
||||||
self.assertEqual(info['delete_timestamp'], delete_timestamp)
|
self.assertEqual(info['delete_timestamp'], delete_timestamp.internal)
|
||||||
self.assertEqual(info['status_changed_at'], delete_timestamp)
|
self.assertEqual(info['status_changed_at'], delete_timestamp.internal)
|
||||||
|
|
||||||
def test_delete_container(self):
|
def test_delete_container(self):
|
||||||
# Test AccountBroker.delete_container
|
# Test AccountBroker.delete_container
|
||||||
@ -644,7 +646,6 @@ class TestAccountBroker(unittest.TestCase):
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
ts = make_timestamp_iter()
|
|
||||||
default_listing_params = {
|
default_listing_params = {
|
||||||
'limit': 10000,
|
'limit': 10000,
|
||||||
'marker': '',
|
'marker': '',
|
||||||
@ -655,9 +656,9 @@ class TestAccountBroker(unittest.TestCase):
|
|||||||
failures = []
|
failures = []
|
||||||
for expected in expectations:
|
for expected in expectations:
|
||||||
broker = AccountBroker(':memory:', account='a')
|
broker = AccountBroker(':memory:', account='a')
|
||||||
broker.initialize(next(ts).internal, 0)
|
broker.initialize(next(self.ts).internal, 0)
|
||||||
for name in expected['containers']:
|
for name in expected['containers']:
|
||||||
broker.put_container(name, next(ts).internal, 0, 0, 0,
|
broker.put_container(name, next(self.ts).internal, 0, 0, 0,
|
||||||
POLICIES.default.idx)
|
POLICIES.default.idx)
|
||||||
params = default_listing_params.copy()
|
params = default_listing_params.copy()
|
||||||
params.update(expected['params'])
|
params.update(expected['params'])
|
||||||
@ -874,9 +875,8 @@ class TestAccountBroker(unittest.TestCase):
|
|||||||
StoragePolicy(2, 'two', False),
|
StoragePolicy(2, 'two', False),
|
||||||
StoragePolicy(3, 'three', False)])
|
StoragePolicy(3, 'three', False)])
|
||||||
def test_get_policy_stats(self):
|
def test_get_policy_stats(self):
|
||||||
ts = (Timestamp(t).internal for t in itertools.count(int(time())))
|
|
||||||
broker = AccountBroker(':memory:', account='a')
|
broker = AccountBroker(':memory:', account='a')
|
||||||
broker.initialize(next(ts))
|
broker.initialize(next(self.ts).internal)
|
||||||
# check empty policy_stats
|
# check empty policy_stats
|
||||||
self.assertTrue(broker.empty())
|
self.assertTrue(broker.empty())
|
||||||
policy_stats = broker.get_policy_stats()
|
policy_stats = broker.get_policy_stats()
|
||||||
@ -885,9 +885,9 @@ class TestAccountBroker(unittest.TestCase):
|
|||||||
# add some empty containers
|
# add some empty containers
|
||||||
for policy in POLICIES:
|
for policy in POLICIES:
|
||||||
container_name = 'c-%s' % policy.name
|
container_name = 'c-%s' % policy.name
|
||||||
put_timestamp = next(ts)
|
put_timestamp = next(self.ts)
|
||||||
broker.put_container(container_name,
|
broker.put_container(container_name,
|
||||||
put_timestamp, 0,
|
put_timestamp.internal, 0,
|
||||||
0, 0,
|
0, 0,
|
||||||
policy.idx)
|
policy.idx)
|
||||||
policy_stats = broker.get_policy_stats()
|
policy_stats = broker.get_policy_stats()
|
||||||
@ -900,10 +900,10 @@ class TestAccountBroker(unittest.TestCase):
|
|||||||
# update the containers object & byte count
|
# update the containers object & byte count
|
||||||
for policy in POLICIES:
|
for policy in POLICIES:
|
||||||
container_name = 'c-%s' % policy.name
|
container_name = 'c-%s' % policy.name
|
||||||
put_timestamp = next(ts)
|
put_timestamp = next(self.ts)
|
||||||
count = policy.idx * 100 # good as any integer
|
count = policy.idx * 100 # good as any integer
|
||||||
broker.put_container(container_name,
|
broker.put_container(container_name,
|
||||||
put_timestamp, 0,
|
put_timestamp.internal, 0,
|
||||||
count, count,
|
count, count,
|
||||||
policy.idx)
|
policy.idx)
|
||||||
|
|
||||||
@ -926,9 +926,9 @@ class TestAccountBroker(unittest.TestCase):
|
|||||||
# now delete the containers one by one
|
# now delete the containers one by one
|
||||||
for policy in POLICIES:
|
for policy in POLICIES:
|
||||||
container_name = 'c-%s' % policy.name
|
container_name = 'c-%s' % policy.name
|
||||||
delete_timestamp = next(ts)
|
delete_timestamp = next(self.ts)
|
||||||
broker.put_container(container_name,
|
broker.put_container(container_name,
|
||||||
0, delete_timestamp,
|
0, delete_timestamp.internal,
|
||||||
0, 0,
|
0, 0,
|
||||||
policy.idx)
|
policy.idx)
|
||||||
|
|
||||||
@ -942,16 +942,15 @@ class TestAccountBroker(unittest.TestCase):
|
|||||||
@patch_policies([StoragePolicy(0, 'zero', False),
|
@patch_policies([StoragePolicy(0, 'zero', False),
|
||||||
StoragePolicy(1, 'one', True)])
|
StoragePolicy(1, 'one', True)])
|
||||||
def test_policy_stats_tracking(self):
|
def test_policy_stats_tracking(self):
|
||||||
ts = (Timestamp(t).internal for t in itertools.count(int(time())))
|
|
||||||
broker = AccountBroker(':memory:', account='a')
|
broker = AccountBroker(':memory:', account='a')
|
||||||
broker.initialize(next(ts))
|
broker.initialize(next(self.ts).internal)
|
||||||
|
|
||||||
# policy 0
|
# policy 0
|
||||||
broker.put_container('con1', next(ts), 0, 12, 2798641, 0)
|
broker.put_container('con1', next(self.ts).internal, 0, 12, 2798641, 0)
|
||||||
broker.put_container('con1', next(ts), 0, 13, 8156441, 0)
|
broker.put_container('con1', next(self.ts).internal, 0, 13, 8156441, 0)
|
||||||
# policy 1
|
# policy 1
|
||||||
broker.put_container('con2', next(ts), 0, 7, 5751991, 1)
|
broker.put_container('con2', next(self.ts).internal, 0, 7, 5751991, 1)
|
||||||
broker.put_container('con2', next(ts), 0, 8, 6085379, 1)
|
broker.put_container('con2', next(self.ts).internal, 0, 8, 6085379, 1)
|
||||||
|
|
||||||
stats = broker.get_policy_stats()
|
stats = broker.get_policy_stats()
|
||||||
self.assertEqual(len(stats), 2)
|
self.assertEqual(len(stats), 2)
|
||||||
@ -1051,6 +1050,8 @@ class TestAccountBrokerBeforeMetadata(TestAccountBroker):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
# tests seem to assume x-timestamp was set by the proxy before "now"
|
||||||
|
self.ts = make_timestamp_iter(offset=-1)
|
||||||
self._imported_create_account_stat_table = \
|
self._imported_create_account_stat_table = \
|
||||||
AccountBroker.create_account_stat_table
|
AccountBroker.create_account_stat_table
|
||||||
AccountBroker.create_account_stat_table = \
|
AccountBroker.create_account_stat_table = \
|
||||||
@ -1136,6 +1137,8 @@ class TestAccountBrokerBeforeSPI(TestAccountBroker):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
# tests seem to assume x-timestamp was set by the proxy before "now"
|
||||||
|
self.ts = make_timestamp_iter(offset=-1)
|
||||||
self._imported_create_container_table = \
|
self._imported_create_container_table = \
|
||||||
AccountBroker.create_container_table
|
AccountBroker.create_container_table
|
||||||
AccountBroker.create_container_table = \
|
AccountBroker.create_container_table = \
|
||||||
@ -1348,16 +1351,14 @@ class TestAccountBrokerBeforeSPI(TestAccountBroker):
|
|||||||
@with_tempdir
|
@with_tempdir
|
||||||
def test_half_upgraded_database(self, tempdir):
|
def test_half_upgraded_database(self, tempdir):
|
||||||
db_path = os.path.join(tempdir, 'account.db')
|
db_path = os.path.join(tempdir, 'account.db')
|
||||||
ts = itertools.count()
|
|
||||||
ts = (Timestamp(t).internal for t in itertools.count(int(time())))
|
|
||||||
|
|
||||||
broker = AccountBroker(db_path, account='a')
|
broker = AccountBroker(db_path, account='a')
|
||||||
broker.initialize(next(ts))
|
broker.initialize(next(self.ts).internal)
|
||||||
|
|
||||||
self.assertTrue(broker.empty())
|
self.assertTrue(broker.empty())
|
||||||
|
|
||||||
# add a container (to pending file)
|
# add a container (to pending file)
|
||||||
broker.put_container('c', next(ts), 0, 0, 0,
|
broker.put_container('c', next(self.ts).internal, 0, 0, 0,
|
||||||
POLICIES.default.idx)
|
POLICIES.default.idx)
|
||||||
|
|
||||||
real_get = broker.get
|
real_get = broker.get
|
||||||
@ -1410,16 +1411,14 @@ class TestAccountBrokerBeforeSPI(TestAccountBroker):
|
|||||||
|
|
||||||
@with_tempdir
|
@with_tempdir
|
||||||
def test_pre_storage_policy_replication(self, tempdir):
|
def test_pre_storage_policy_replication(self, tempdir):
|
||||||
ts = make_timestamp_iter()
|
|
||||||
|
|
||||||
# make and two account database "replicas"
|
# make and two account database "replicas"
|
||||||
old_broker = AccountBroker(os.path.join(tempdir, 'old_account.db'),
|
old_broker = AccountBroker(os.path.join(tempdir, 'old_account.db'),
|
||||||
account='a')
|
account='a')
|
||||||
old_broker.initialize(next(ts).internal)
|
old_broker.initialize(next(self.ts).internal)
|
||||||
new_broker = AccountBroker(os.path.join(tempdir, 'new_account.db'),
|
new_broker = AccountBroker(os.path.join(tempdir, 'new_account.db'),
|
||||||
account='a')
|
account='a')
|
||||||
new_broker.initialize(next(ts).internal)
|
new_broker.initialize(next(self.ts).internal)
|
||||||
timestamp = next(ts).internal
|
timestamp = next(self.ts).internal
|
||||||
|
|
||||||
# manually insert an existing row to avoid migration for old database
|
# manually insert an existing row to avoid migration for old database
|
||||||
with old_broker.get() as conn:
|
with old_broker.get() as conn:
|
||||||
@ -1581,12 +1580,13 @@ class AccountBrokerPreTrackContainerCountSetup(object):
|
|||||||
self.assertUnmigrated(broker)
|
self.assertUnmigrated(broker)
|
||||||
|
|
||||||
self.tempdir = mkdtemp()
|
self.tempdir = mkdtemp()
|
||||||
self.ts = (Timestamp(t).internal for t in itertools.count(int(time())))
|
# tests seem to assume x-timestamp was set by the proxy before "now"
|
||||||
|
self.ts = make_timestamp_iter(offset=-1)
|
||||||
|
|
||||||
self.db_path = os.path.join(self.tempdir, 'sda', 'accounts',
|
self.db_path = os.path.join(self.tempdir, 'sda', 'accounts',
|
||||||
'0', '0', '0', 'test.db')
|
'0', '0', '0', 'test.db')
|
||||||
self.broker = AccountBroker(self.db_path, account='a')
|
self.broker = AccountBroker(self.db_path, account='a')
|
||||||
self.broker.initialize(next(self.ts))
|
self.broker.initialize(next(self.ts).internal)
|
||||||
|
|
||||||
# Common sanity-check that our starting, pre-migration state correctly
|
# Common sanity-check that our starting, pre-migration state correctly
|
||||||
# does not have the container_count column.
|
# does not have the container_count column.
|
||||||
@ -1630,7 +1630,7 @@ class TestAccountBrokerBeforePerPolicyContainerTrack(
|
|||||||
for i in range(num_containers):
|
for i in range(num_containers):
|
||||||
name = 'test-container-%02d' % i
|
name = 'test-container-%02d' % i
|
||||||
policy = next(policies)
|
policy = next(policies)
|
||||||
self.broker.put_container(name, next(self.ts),
|
self.broker.put_container(name, next(self.ts).internal,
|
||||||
0, 0, 0, int(policy))
|
0, 0, 0, int(policy))
|
||||||
per_policy_container_counts[int(policy)] += 1
|
per_policy_container_counts[int(policy)] += 1
|
||||||
|
|
||||||
@ -1717,7 +1717,7 @@ class TestAccountBrokerBeforePerPolicyContainerTrack(
|
|||||||
for i in range(num_containers):
|
for i in range(num_containers):
|
||||||
name = 'test-container-%02d' % i
|
name = 'test-container-%02d' % i
|
||||||
policy = next(policies)
|
policy = next(policies)
|
||||||
self.broker.put_container(name, next(self.ts),
|
self.broker.put_container(name, next(self.ts).internal,
|
||||||
0, 0, 0, int(policy))
|
0, 0, 0, int(policy))
|
||||||
# keep track of stub container policies
|
# keep track of stub container policies
|
||||||
container_policy_map[name] = policy
|
container_policy_map[name] = policy
|
||||||
@ -1726,7 +1726,7 @@ class TestAccountBrokerBeforePerPolicyContainerTrack(
|
|||||||
for i in range(0, num_containers, 2):
|
for i in range(0, num_containers, 2):
|
||||||
name = 'test-container-%02d' % i
|
name = 'test-container-%02d' % i
|
||||||
policy = container_policy_map[name]
|
policy = container_policy_map[name]
|
||||||
self.broker.put_container(name, 0, next(self.ts),
|
self.broker.put_container(name, 0, next(self.ts).internal,
|
||||||
0, 0, int(policy))
|
0, 0, int(policy))
|
||||||
|
|
||||||
total_container_count = self.broker.get_info()['container_count']
|
total_container_count = self.broker.get_info()['container_count']
|
||||||
@ -1747,12 +1747,12 @@ class TestAccountBrokerBeforePerPolicyContainerTrack(
|
|||||||
# add a few container entries
|
# add a few container entries
|
||||||
for i in range(num_containers):
|
for i in range(num_containers):
|
||||||
name = 'test-container-%02d' % i
|
name = 'test-container-%02d' % i
|
||||||
self.broker.put_container(name, next(self.ts),
|
self.broker.put_container(name, next(self.ts).internal,
|
||||||
0, 0, 0, int(policy))
|
0, 0, 0, int(policy))
|
||||||
# delete about half of the containers
|
# delete about half of the containers
|
||||||
for i in range(0, num_containers, 2):
|
for i in range(0, num_containers, 2):
|
||||||
name = 'test-container-%02d' % i
|
name = 'test-container-%02d' % i
|
||||||
self.broker.put_container(name, 0, next(self.ts),
|
self.broker.put_container(name, 0, next(self.ts).internal,
|
||||||
0, 0, int(policy))
|
0, 0, int(policy))
|
||||||
|
|
||||||
total_container_count = self.broker.get_info()['container_count']
|
total_container_count = self.broker.get_info()['container_count']
|
||||||
@ -1770,14 +1770,15 @@ class TestAccountBrokerBeforePerPolicyContainerTrack(
|
|||||||
with patch_policies(legacy_only=True):
|
with patch_policies(legacy_only=True):
|
||||||
# add a container for the legacy policy
|
# add a container for the legacy policy
|
||||||
policy = POLICIES[0]
|
policy = POLICIES[0]
|
||||||
self.broker.put_container('test-legacy-container', next(self.ts),
|
self.broker.put_container('test-legacy-container',
|
||||||
0, 0, 0, int(policy))
|
next(self.ts).internal, 0, 0, 0,
|
||||||
|
int(policy))
|
||||||
|
|
||||||
# now create an impossible situation by adding a container for a
|
# now create an impossible situation by adding a container for a
|
||||||
# policy index that doesn't exist
|
# policy index that doesn't exist
|
||||||
non_existent_policy_index = int(policy) + 1
|
non_existent_policy_index = int(policy) + 1
|
||||||
self.broker.put_container('test-non-existent-policy',
|
self.broker.put_container('test-non-existent-policy',
|
||||||
next(self.ts), 0, 0, 0,
|
next(self.ts).internal, 0, 0, 0,
|
||||||
non_existent_policy_index)
|
non_existent_policy_index)
|
||||||
|
|
||||||
total_container_count = self.broker.get_info()['container_count']
|
total_container_count = self.broker.get_info()['container_count']
|
||||||
|
@ -46,7 +46,7 @@ from swift.common.utils import normalize_timestamp, mkdirs, Timestamp
|
|||||||
from swift.common.exceptions import LockTimeout
|
from swift.common.exceptions import LockTimeout
|
||||||
from swift.common.swob import HTTPException
|
from swift.common.swob import HTTPException
|
||||||
|
|
||||||
from test.unit import with_tempdir
|
from test.unit import with_tempdir, make_timestamp_iter
|
||||||
|
|
||||||
|
|
||||||
class TestHelperFunctions(unittest.TestCase):
|
class TestHelperFunctions(unittest.TestCase):
|
||||||
@ -327,17 +327,16 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
policy = 0
|
policy = 0
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.ts = (Timestamp(t).internal for t in
|
self.ts = make_timestamp_iter()
|
||||||
itertools.count(int(time.time())))
|
|
||||||
|
|
||||||
def test_delete_db(self):
|
def test_delete_db(self):
|
||||||
broker = self.broker_class(':memory:', account='a', container='c')
|
broker = self.broker_class(':memory:', account='a', container='c')
|
||||||
broker.initialize(next(self.ts))
|
broker.initialize(next(self.ts).internal)
|
||||||
broker.delete_db(next(self.ts))
|
broker.delete_db(next(self.ts).internal)
|
||||||
self.assertTrue(broker.is_deleted())
|
self.assertTrue(broker.is_deleted())
|
||||||
|
|
||||||
def test_merge_timestamps_simple_delete(self):
|
def test_merge_timestamps_simple_delete(self):
|
||||||
put_timestamp = next(self.ts)
|
put_timestamp = next(self.ts).internal
|
||||||
broker = self.broker_class(':memory:', account='a', container='c')
|
broker = self.broker_class(':memory:', account='a', container='c')
|
||||||
broker.initialize(put_timestamp)
|
broker.initialize(put_timestamp)
|
||||||
created_at = broker.get_info()['created_at']
|
created_at = broker.get_info()['created_at']
|
||||||
@ -348,7 +347,7 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
self.assertEqual(info['delete_timestamp'], '0')
|
self.assertEqual(info['delete_timestamp'], '0')
|
||||||
self.assertEqual(info['status_changed_at'], put_timestamp)
|
self.assertEqual(info['status_changed_at'], put_timestamp)
|
||||||
# delete
|
# delete
|
||||||
delete_timestamp = next(self.ts)
|
delete_timestamp = next(self.ts).internal
|
||||||
broker.merge_timestamps(created_at, put_timestamp, delete_timestamp)
|
broker.merge_timestamps(created_at, put_timestamp, delete_timestamp)
|
||||||
self.assertTrue(broker.is_deleted())
|
self.assertTrue(broker.is_deleted())
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
@ -364,7 +363,7 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
broker.delete_test('test', timestamp)
|
broker.delete_test('test', timestamp)
|
||||||
|
|
||||||
def test_merge_timestamps_delete_with_objects(self):
|
def test_merge_timestamps_delete_with_objects(self):
|
||||||
put_timestamp = next(self.ts)
|
put_timestamp = next(self.ts).internal
|
||||||
broker = self.broker_class(':memory:', account='a', container='c')
|
broker = self.broker_class(':memory:', account='a', container='c')
|
||||||
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
||||||
created_at = broker.get_info()['created_at']
|
created_at = broker.get_info()['created_at']
|
||||||
@ -375,11 +374,11 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
self.assertEqual(info['delete_timestamp'], '0')
|
self.assertEqual(info['delete_timestamp'], '0')
|
||||||
self.assertEqual(info['status_changed_at'], put_timestamp)
|
self.assertEqual(info['status_changed_at'], put_timestamp)
|
||||||
# add object
|
# add object
|
||||||
self.put_item(broker, next(self.ts))
|
self.put_item(broker, next(self.ts).internal)
|
||||||
self.assertEqual(broker.get_info()[
|
self.assertEqual(broker.get_info()[
|
||||||
'%s_count' % broker.db_contains_type], 1)
|
'%s_count' % broker.db_contains_type], 1)
|
||||||
# delete
|
# delete
|
||||||
delete_timestamp = next(self.ts)
|
delete_timestamp = next(self.ts).internal
|
||||||
broker.merge_timestamps(created_at, put_timestamp, delete_timestamp)
|
broker.merge_timestamps(created_at, put_timestamp, delete_timestamp)
|
||||||
self.assertFalse(broker.is_deleted())
|
self.assertFalse(broker.is_deleted())
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
@ -389,18 +388,18 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
# status is unchanged
|
# status is unchanged
|
||||||
self.assertEqual(info['status_changed_at'], put_timestamp)
|
self.assertEqual(info['status_changed_at'], put_timestamp)
|
||||||
# count is causing status to hold on
|
# count is causing status to hold on
|
||||||
self.delete_item(broker, next(self.ts))
|
self.delete_item(broker, next(self.ts).internal)
|
||||||
self.assertEqual(broker.get_info()[
|
self.assertEqual(broker.get_info()[
|
||||||
'%s_count' % broker.db_contains_type], 0)
|
'%s_count' % broker.db_contains_type], 0)
|
||||||
self.assertTrue(broker.is_deleted())
|
self.assertTrue(broker.is_deleted())
|
||||||
|
|
||||||
def test_merge_timestamps_simple_recreate(self):
|
def test_merge_timestamps_simple_recreate(self):
|
||||||
put_timestamp = next(self.ts)
|
put_timestamp = next(self.ts).internal
|
||||||
broker = self.broker_class(':memory:', account='a', container='c')
|
broker = self.broker_class(':memory:', account='a', container='c')
|
||||||
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
||||||
virgin_status_changed_at = broker.get_info()['status_changed_at']
|
virgin_status_changed_at = broker.get_info()['status_changed_at']
|
||||||
created_at = broker.get_info()['created_at']
|
created_at = broker.get_info()['created_at']
|
||||||
delete_timestamp = next(self.ts)
|
delete_timestamp = next(self.ts).internal
|
||||||
broker.merge_timestamps(created_at, put_timestamp, delete_timestamp)
|
broker.merge_timestamps(created_at, put_timestamp, delete_timestamp)
|
||||||
self.assertTrue(broker.is_deleted())
|
self.assertTrue(broker.is_deleted())
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
@ -411,7 +410,7 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
self.assertTrue(orig_status_changed_at >
|
self.assertTrue(orig_status_changed_at >
|
||||||
Timestamp(virgin_status_changed_at))
|
Timestamp(virgin_status_changed_at))
|
||||||
# recreate
|
# recreate
|
||||||
recreate_timestamp = next(self.ts)
|
recreate_timestamp = next(self.ts).internal
|
||||||
status_changed_at = time.time()
|
status_changed_at = time.time()
|
||||||
with patch('swift.common.db.time.time', new=lambda: status_changed_at):
|
with patch('swift.common.db.time.time', new=lambda: status_changed_at):
|
||||||
broker.merge_timestamps(created_at, recreate_timestamp, '0')
|
broker.merge_timestamps(created_at, recreate_timestamp, '0')
|
||||||
@ -423,12 +422,12 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
self.assertTrue(info['status_changed_at'], status_changed_at)
|
self.assertTrue(info['status_changed_at'], status_changed_at)
|
||||||
|
|
||||||
def test_merge_timestamps_recreate_with_objects(self):
|
def test_merge_timestamps_recreate_with_objects(self):
|
||||||
put_timestamp = next(self.ts)
|
put_timestamp = next(self.ts).internal
|
||||||
broker = self.broker_class(':memory:', account='a', container='c')
|
broker = self.broker_class(':memory:', account='a', container='c')
|
||||||
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
||||||
created_at = broker.get_info()['created_at']
|
created_at = broker.get_info()['created_at']
|
||||||
# delete
|
# delete
|
||||||
delete_timestamp = next(self.ts)
|
delete_timestamp = next(self.ts).internal
|
||||||
broker.merge_timestamps(created_at, put_timestamp, delete_timestamp)
|
broker.merge_timestamps(created_at, put_timestamp, delete_timestamp)
|
||||||
self.assertTrue(broker.is_deleted())
|
self.assertTrue(broker.is_deleted())
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
@ -439,12 +438,12 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
self.assertTrue(Timestamp(orig_status_changed_at) >=
|
self.assertTrue(Timestamp(orig_status_changed_at) >=
|
||||||
Timestamp(put_timestamp))
|
Timestamp(put_timestamp))
|
||||||
# add object
|
# add object
|
||||||
self.put_item(broker, next(self.ts))
|
self.put_item(broker, next(self.ts).internal)
|
||||||
count_key = '%s_count' % broker.db_contains_type
|
count_key = '%s_count' % broker.db_contains_type
|
||||||
self.assertEqual(broker.get_info()[count_key], 1)
|
self.assertEqual(broker.get_info()[count_key], 1)
|
||||||
self.assertFalse(broker.is_deleted())
|
self.assertFalse(broker.is_deleted())
|
||||||
# recreate
|
# recreate
|
||||||
recreate_timestamp = next(self.ts)
|
recreate_timestamp = next(self.ts).internal
|
||||||
broker.merge_timestamps(created_at, recreate_timestamp, '0')
|
broker.merge_timestamps(created_at, recreate_timestamp, '0')
|
||||||
self.assertFalse(broker.is_deleted())
|
self.assertFalse(broker.is_deleted())
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
@ -453,30 +452,31 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
self.assertEqual(info['delete_timestamp'], delete_timestamp)
|
self.assertEqual(info['delete_timestamp'], delete_timestamp)
|
||||||
self.assertEqual(info['status_changed_at'], orig_status_changed_at)
|
self.assertEqual(info['status_changed_at'], orig_status_changed_at)
|
||||||
# count is not causing status to hold on
|
# count is not causing status to hold on
|
||||||
self.delete_item(broker, next(self.ts))
|
self.delete_item(broker, next(self.ts).internal)
|
||||||
self.assertFalse(broker.is_deleted())
|
self.assertFalse(broker.is_deleted())
|
||||||
|
|
||||||
def test_merge_timestamps_update_put_no_status_change(self):
|
def test_merge_timestamps_update_put_no_status_change(self):
|
||||||
put_timestamp = next(self.ts)
|
put_timestamp = next(self.ts).internal
|
||||||
broker = self.broker_class(':memory:', account='a', container='c')
|
broker = self.broker_class(':memory:', account='a', container='c')
|
||||||
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
orig_status_changed_at = info['status_changed_at']
|
orig_status_changed_at = info['status_changed_at']
|
||||||
created_at = info['created_at']
|
created_at = info['created_at']
|
||||||
new_put_timestamp = next(self.ts)
|
new_put_timestamp = next(self.ts).internal
|
||||||
broker.merge_timestamps(created_at, new_put_timestamp, '0')
|
broker.merge_timestamps(created_at, new_put_timestamp, '0')
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
self.assertEqual(new_put_timestamp, info['put_timestamp'])
|
self.assertEqual(new_put_timestamp, info['put_timestamp'])
|
||||||
self.assertEqual(orig_status_changed_at, info['status_changed_at'])
|
self.assertEqual(orig_status_changed_at, info['status_changed_at'])
|
||||||
|
|
||||||
def test_merge_timestamps_update_delete_no_status_change(self):
|
def test_merge_timestamps_update_delete_no_status_change(self):
|
||||||
put_timestamp = next(self.ts)
|
put_timestamp = next(self.ts).internal
|
||||||
broker = self.broker_class(':memory:', account='a', container='c')
|
broker = self.broker_class(':memory:', account='a', container='c')
|
||||||
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
broker.initialize(put_timestamp, storage_policy_index=int(self.policy))
|
||||||
created_at = broker.get_info()['created_at']
|
created_at = broker.get_info()['created_at']
|
||||||
broker.merge_timestamps(created_at, put_timestamp, next(self.ts))
|
broker.merge_timestamps(created_at, put_timestamp,
|
||||||
|
next(self.ts).internal)
|
||||||
orig_status_changed_at = broker.get_info()['status_changed_at']
|
orig_status_changed_at = broker.get_info()['status_changed_at']
|
||||||
new_delete_timestamp = next(self.ts)
|
new_delete_timestamp = next(self.ts).internal
|
||||||
broker.merge_timestamps(created_at, put_timestamp,
|
broker.merge_timestamps(created_at, put_timestamp,
|
||||||
new_delete_timestamp)
|
new_delete_timestamp)
|
||||||
info = broker.get_info()
|
info = broker.get_info()
|
||||||
@ -485,13 +485,14 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
|
|
||||||
def test_get_max_row(self):
|
def test_get_max_row(self):
|
||||||
broker = self.broker_class(':memory:', account='a', container='c')
|
broker = self.broker_class(':memory:', account='a', container='c')
|
||||||
broker.initialize(next(self.ts), storage_policy_index=int(self.policy))
|
broker.initialize(next(self.ts).internal,
|
||||||
|
storage_policy_index=int(self.policy))
|
||||||
self.assertEqual(-1, broker.get_max_row())
|
self.assertEqual(-1, broker.get_max_row())
|
||||||
self.put_item(broker, next(self.ts))
|
self.put_item(broker, next(self.ts).internal)
|
||||||
self.assertEqual(1, broker.get_max_row())
|
self.assertEqual(1, broker.get_max_row())
|
||||||
self.delete_item(broker, next(self.ts))
|
self.delete_item(broker, next(self.ts).internal)
|
||||||
self.assertEqual(2, broker.get_max_row())
|
self.assertEqual(2, broker.get_max_row())
|
||||||
self.put_item(broker, next(self.ts))
|
self.put_item(broker, next(self.ts).internal)
|
||||||
self.assertEqual(3, broker.get_max_row())
|
self.assertEqual(3, broker.get_max_row())
|
||||||
|
|
||||||
def test_get_info(self):
|
def test_get_info(self):
|
||||||
@ -540,7 +541,7 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
|
|
||||||
def test_put_timestamp(self):
|
def test_put_timestamp(self):
|
||||||
broker = self.broker_class(':memory:', account='a', container='c')
|
broker = self.broker_class(':memory:', account='a', container='c')
|
||||||
orig_put_timestamp = next(self.ts)
|
orig_put_timestamp = next(self.ts).internal
|
||||||
broker.initialize(orig_put_timestamp,
|
broker.initialize(orig_put_timestamp,
|
||||||
storage_policy_index=int(self.policy))
|
storage_policy_index=int(self.policy))
|
||||||
self.assertEqual(broker.get_info()['put_timestamp'],
|
self.assertEqual(broker.get_info()['put_timestamp'],
|
||||||
@ -550,7 +551,7 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
self.assertEqual(broker.get_info()['put_timestamp'],
|
self.assertEqual(broker.get_info()['put_timestamp'],
|
||||||
orig_put_timestamp)
|
orig_put_timestamp)
|
||||||
# put_timestamp newer - gets newer
|
# put_timestamp newer - gets newer
|
||||||
newer_put_timestamp = next(self.ts)
|
newer_put_timestamp = next(self.ts).internal
|
||||||
broker.update_put_timestamp(newer_put_timestamp)
|
broker.update_put_timestamp(newer_put_timestamp)
|
||||||
self.assertEqual(broker.get_info()['put_timestamp'],
|
self.assertEqual(broker.get_info()['put_timestamp'],
|
||||||
newer_put_timestamp)
|
newer_put_timestamp)
|
||||||
@ -561,7 +562,7 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
|
|
||||||
def test_status_changed_at(self):
|
def test_status_changed_at(self):
|
||||||
broker = self.broker_class(':memory:', account='test', container='c')
|
broker = self.broker_class(':memory:', account='test', container='c')
|
||||||
put_timestamp = next(self.ts)
|
put_timestamp = next(self.ts).internal
|
||||||
created_at = time.time()
|
created_at = time.time()
|
||||||
with patch('swift.common.db.time.time', new=lambda: created_at):
|
with patch('swift.common.db.time.time', new=lambda: created_at):
|
||||||
broker.initialize(put_timestamp,
|
broker.initialize(put_timestamp,
|
||||||
@ -570,13 +571,13 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
put_timestamp)
|
put_timestamp)
|
||||||
self.assertEqual(broker.get_info()['created_at'],
|
self.assertEqual(broker.get_info()['created_at'],
|
||||||
Timestamp(created_at).internal)
|
Timestamp(created_at).internal)
|
||||||
status_changed_at = next(self.ts)
|
status_changed_at = next(self.ts).internal
|
||||||
broker.update_status_changed_at(status_changed_at)
|
broker.update_status_changed_at(status_changed_at)
|
||||||
self.assertEqual(broker.get_info()['status_changed_at'],
|
self.assertEqual(broker.get_info()['status_changed_at'],
|
||||||
status_changed_at)
|
status_changed_at)
|
||||||
# save the old and get a new status_changed_at
|
# save the old and get a new status_changed_at
|
||||||
old_status_changed_at, status_changed_at = \
|
old_status_changed_at, status_changed_at = \
|
||||||
status_changed_at, next(self.ts)
|
status_changed_at, next(self.ts).internal
|
||||||
broker.update_status_changed_at(status_changed_at)
|
broker.update_status_changed_at(status_changed_at)
|
||||||
self.assertEqual(broker.get_info()['status_changed_at'],
|
self.assertEqual(broker.get_info()['status_changed_at'],
|
||||||
status_changed_at)
|
status_changed_at)
|
||||||
@ -603,9 +604,9 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
def test_commit_pending(self, tempdir):
|
def test_commit_pending(self, tempdir):
|
||||||
broker = self.broker_class(os.path.join(tempdir, 'test.db'),
|
broker = self.broker_class(os.path.join(tempdir, 'test.db'),
|
||||||
account='a', container='c')
|
account='a', container='c')
|
||||||
broker.initialize(next(self.ts),
|
broker.initialize(next(self.ts).internal,
|
||||||
storage_policy_index=int(self.policy))
|
storage_policy_index=int(self.policy))
|
||||||
self.put_item(broker, next(self.ts))
|
self.put_item(broker, next(self.ts).internal)
|
||||||
qry = 'select * from %s_stat' % broker.db_type
|
qry = 'select * from %s_stat' % broker.db_type
|
||||||
with broker.get() as conn:
|
with broker.get() as conn:
|
||||||
rows = [dict(x) for x in conn.execute(qry)]
|
rows = [dict(x) for x in conn.execute(qry)]
|
||||||
@ -619,7 +620,7 @@ class TestExampleBroker(unittest.TestCase):
|
|||||||
def test_maybe_get(self, tempdir):
|
def test_maybe_get(self, tempdir):
|
||||||
broker = self.broker_class(os.path.join(tempdir, 'test.db'),
|
broker = self.broker_class(os.path.join(tempdir, 'test.db'),
|
||||||
account='a', container='c')
|
account='a', container='c')
|
||||||
broker.initialize(next(self.ts),
|
broker.initialize(next(self.ts).internal,
|
||||||
storage_policy_index=int(self.policy))
|
storage_policy_index=int(self.policy))
|
||||||
qry = 'select account from %s_stat' % broker.db_type
|
qry = 'select account from %s_stat' % broker.db_type
|
||||||
with broker.maybe_get(None) as conn:
|
with broker.maybe_get(None) as conn:
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user