blob: 61400ae58a4adda118f04acc326a22dd747240a8 [file] [log] [blame]
"""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))