Files
charm-swift-proxy/unit_tests/test_swift_utils.py
2014-12-04 19:32:37 +00:00

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)