| """license: Apache License 2.0, see LICENSE for more details.""" |
| import uuid |
| |
| from nose.tools import eq_ |
| |
| from kazoo.testing import KazooTestCase |
| |
| |
| class KazooPartyTests(KazooTestCase): |
| def setUp(self): |
| super(KazooPartyTests, self).setUp() |
| self.path = "/" + uuid.uuid4().hex |
| |
| def test_party(self): |
| parties = [self.client.Party(self.path, "p%s" % i) |
| for i in range(5)] |
| |
| one_party = parties[0] |
| |
| eq_(list(one_party), []) |
| eq_(len(one_party), 0) |
| |
| participants = set() |
| for party in parties: |
| party.join() |
| participants.add(party.data.decode('utf-8')) |
| |
| eq_(set(party), participants) |
| eq_(len(party), len(participants)) |
| |
| for party in parties: |
| party.leave() |
| participants.remove(party.data.decode('utf-8')) |
| |
| eq_(set(party), participants) |
| eq_(len(party), len(participants)) |
| |
| def test_party_reuse_node(self): |
| party = self.client.Party(self.path, "p1") |
| self.client.ensure_path(self.path) |
| self.client.create(party.create_path) |
| party.join() |
| self.assertTrue(party.participating) |
| party.leave() |
| self.assertFalse(party.participating) |
| self.assertEqual(len(party), 0) |
| |
| def test_party_vanishing_node(self): |
| party = self.client.Party(self.path, "p1") |
| party.join() |
| self.assertTrue(party.participating) |
| self.client.delete(party.create_path) |
| party.leave() |
| self.assertFalse(party.participating) |
| self.assertEqual(len(party), 0) |
| |
| |
| class KazooShallowPartyTests(KazooTestCase): |
| def setUp(self): |
| super(KazooShallowPartyTests, self).setUp() |
| self.path = "/" + uuid.uuid4().hex |
| |
| def test_party(self): |
| parties = [self.client.ShallowParty(self.path, "p%s" % i) |
| for i in range(5)] |
| |
| one_party = parties[0] |
| |
| eq_(list(one_party), []) |
| eq_(len(one_party), 0) |
| |
| participants = set() |
| for party in parties: |
| party.join() |
| participants.add(party.data.decode('utf-8')) |
| |
| eq_(set(party), participants) |
| eq_(len(party), len(participants)) |
| |
| for party in parties: |
| party.leave() |
| participants.remove(party.data.decode('utf-8')) |
| |
| eq_(set(party), participants) |
| eq_(len(party), len(participants)) |