109 lines
4.3 KiB
Python
109 lines
4.3 KiB
Python
import mock
|
|
import shutil
|
|
import tempfile
|
|
import unittest
|
|
|
|
|
|
with mock.patch('charmhelpers.core.hookenv.config'):
|
|
import swift_utils
|
|
|
|
|
|
class SwiftUtilsTestCase(unittest.TestCase):
|
|
|
|
@mock.patch('swift_utils.log')
|
|
@mock.patch('swift_utils.os.path.exists')
|
|
@mock.patch('swift_utils.is_elected_leader')
|
|
@mock.patch('swift_utils.config')
|
|
@mock.patch('swift_utils.get_min_part_hours')
|
|
@mock.patch('swift_utils.set_min_part_hours')
|
|
@mock.patch('swift_utils.update_www_rings')
|
|
@mock.patch('swift_utils.cluster_sync_rings')
|
|
def test_update_min_part_hours(self, mock_cluster_sync_rings,
|
|
mock_update_www_rings,
|
|
mock_set_min_hours, mock_get_min_hours,
|
|
mock_config, mock_is_elected_leader,
|
|
mock_path_exists, mock_log):
|
|
|
|
# Test blocker 1
|
|
mock_is_elected_leader.return_value = False
|
|
swift_utils.update_min_part_hours()
|
|
self.assertFalse(mock_config.called)
|
|
|
|
# Test blocker 2
|
|
mock_path_exists.return_value = False
|
|
mock_is_elected_leader.return_value = True
|
|
swift_utils.update_min_part_hours()
|
|
self.assertTrue(mock_config.called)
|
|
self.assertFalse(mock_get_min_hours.called)
|
|
|
|
# Test blocker 3
|
|
mock_path_exists.return_value = True
|
|
mock_is_elected_leader.return_value = True
|
|
mock_config.return_value = 10
|
|
mock_get_min_hours.return_value = 10
|
|
swift_utils.update_min_part_hours()
|
|
self.assertTrue(mock_config.called)
|
|
self.assertTrue(mock_get_min_hours.called)
|
|
self.assertFalse(mock_set_min_hours.called)
|
|
|
|
# Test go through
|
|
mock_path_exists.return_value = True
|
|
mock_is_elected_leader.return_value = True
|
|
mock_config.return_value = 10
|
|
mock_get_min_hours.return_value = 11
|
|
swift_utils.update_min_part_hours()
|
|
self.assertTrue(mock_config.called)
|
|
self.assertTrue(mock_get_min_hours.called)
|
|
self.assertTrue(mock_set_min_hours.called)
|
|
self.assertTrue(mock_update_www_rings.called)
|
|
self.assertTrue(mock_cluster_sync_rings.called)
|
|
|
|
@mock.patch('swift_utils.get_www_dir')
|
|
def test_mark_www_rings_deleted(self, mock_get_www_dir):
|
|
try:
|
|
tmpdir = tempfile.mkdtemp()
|
|
mock_get_www_dir.return_value = tmpdir
|
|
swift_utils.mark_www_rings_deleted()
|
|
finally:
|
|
shutil.rmtree(tmpdir)
|
|
|
|
@mock.patch('swift_utils.uuid')
|
|
def test_cluster_rpc_stop_proxy_request(self, mock_uuid):
|
|
mock_uuid.uuid4.return_value = 'test-uuid'
|
|
rpc = swift_utils.SwiftProxyClusterRPC()
|
|
rq = rpc.stop_proxy_request(peers_only=True)
|
|
self.assertEqual({'trigger': 'test-uuid',
|
|
'builder-broker': None,
|
|
'peers-only': True,
|
|
'stop-proxy-service': 'test-uuid',
|
|
'stop-proxy-service-ack': None}, rq)
|
|
|
|
rq = rpc.stop_proxy_request()
|
|
self.assertEqual({'trigger': 'test-uuid',
|
|
'builder-broker': None,
|
|
'peers-only': None,
|
|
'stop-proxy-service': 'test-uuid',
|
|
'stop-proxy-service-ack': None}, rq)
|
|
|
|
@mock.patch('swift_utils.uuid')
|
|
def test_cluster_rpc_stop_proxy_ack(self, mock_uuid):
|
|
mock_uuid.uuid4.return_value = 'token2'
|
|
rpc = swift_utils.SwiftProxyClusterRPC()
|
|
rq = rpc.stop_proxy_ack('token1')
|
|
self.assertEqual({'trigger': 'token2',
|
|
'builder-broker': None,
|
|
'peers-only': None,
|
|
'stop-proxy-service': None,
|
|
'stop-proxy-service-ack': 'token1'}, rq)
|
|
|
|
@mock.patch('swift_utils.uuid')
|
|
def test_cluster_rpc_sync_request(self, mock_uuid):
|
|
mock_uuid.uuid4.return_value = 'token1'
|
|
rpc = swift_utils.SwiftProxyClusterRPC()
|
|
rq = rpc.sync_rings_request('HostA')
|
|
self.assertEqual({'trigger': 'token1',
|
|
'builder-broker': 'HostA',
|
|
'peers-only': None,
|
|
'stop-proxy-service': None,
|
|
'stop-proxy-service-ack': None}, rq)
|