1
from tests.helpers import FakeRelation
2
from testtools import TestCase
4
from charmhelpers.contrib import peerstorage
7
TO_PATCH = ['relation_ids', 'relation_set', 'relation_get', 'local_unit']
8
FAKE_RELATION_NAME = 'cluster'
20
FAKE_RELATION_IDS = ['cluster:0']
21
FAKE_LOCAL_UNIT = 'test_host'
24
class TestPeerStorage(TestCase):
26
super(TestPeerStorage, self).setUp()
28
setattr(self, m, self._patch(m))
29
self.fake_relation_name = FAKE_RELATION_NAME
30
self.fake_relation = FakeRelation(FAKE_RELATION)
31
self.local_unit.return_value = FAKE_LOCAL_UNIT
32
self.relation_get.return_value = {'key1': 'value1',
34
'private-address': '127.0.0.1',
35
'public-address': '91.189.90.159'}
37
def _patch(self, method):
38
_m = patch('charmhelpers.contrib.peerstorage.' + method)
40
self.addCleanup(_m.stop)
43
def test_peer_retrieve_no_relation(self):
44
self.relation_ids.return_value = []
45
self.assertRaises(ValueError, peerstorage.peer_retrieve, 'key', relation_name=self.fake_relation_name)
47
def test_peer_retrieve_with_relation(self):
48
self.relation_ids.return_value = FAKE_RELATION_IDS
49
peerstorage.peer_retrieve('key', self.fake_relation_name)
50
self.relation_get.assert_called_with(attribute='key', rid=FAKE_RELATION_IDS[0], unit=FAKE_LOCAL_UNIT)
52
def test_peer_store_no_relation(self):
53
self.relation_ids.return_value = []
54
self.assertRaises(ValueError, peerstorage.peer_store, 'key', 'value', relation_name=self.fake_relation_name)
56
def test_peer_store_with_relation(self):
57
self.relation_ids.return_value = FAKE_RELATION_IDS
58
peerstorage.peer_store('key', 'value', self.fake_relation_name)
59
self.relation_set.assert_called_with(relation_id=FAKE_RELATION_IDS[0],
60
relation_settings={'key': 'value'})
62
def test_peer_echo_no_includes(self):
63
peerstorage.peer_echo()
64
self.relation_set.assert_called_with(relation_settings={'key1': 'value1',
67
def test_peer_echo_includes(self):
68
peerstorage.peer_echo(['key1'])
69
self.relation_set.assert_called_with(relation_settings={'key1': 'value1'})