def expireZookeeperSession(self, requestContext, timeout): result = False if settings.ENV == "default" or \ settings.ENV == "test": result = expire_zookeeper_client_session(self.zookeeper_client, timeout) return result
def test_session_expiration(self): expired_session_hashring = [] def observer(event): if event.state_name == "EXPIRED_SESSION_STATE": hashring = self.hashring_watch.hashring() expired_session_hashring.append(hashring) #add session observer for testing self.zookeeper_client.add_session_observer(observer) expired_result = expire_zookeeper_client_session( self.zookeeper_client, 10) self.assertEqual(expired_result, True) gevent.sleep(1) self.assertEqual(len(expired_session_hashring[0]), 0) hashring = self.hashring_watch.hashring() self.assertEqual(len(hashring), 3) self.assertEqual(hashring[0].token, 0x0) self.assertEqual(hashring[1].token, 0xcfcd208495d565ef66e7dff9f98764da) self.assertEqual(hashring[2].token, 0xf899139df5e1059396431415e770c6dd) preference_list = self.hashring_watch.preference_list('0') self.assertEqual(preference_list[0].token, 0xf899139df5e1059396431415e770c6dd) self.assertEqual(preference_list[1].token, 0x0) self.assertEqual(preference_list[2].token, 0xcfcd208495d565ef66e7dff9f98764da) self.zookeeper_client.remove_session_observer(observer)
def test_session_expiration(self): expired_session_hashring = [] def observer(event): if event.state_name == "EXPIRED_SESSION_STATE": hashring = self.hashring_watch.hashring() expired_session_hashring.append(hashring) #add session observer for testing self.zookeeper_client.add_session_observer(observer) expired_result = expire_zookeeper_client_session(self.zookeeper_client, 10) self.assertEqual(expired_result, True) gevent.sleep(1) self.assertEqual(len(expired_session_hashring[0]), 0) hashring = self.hashring_watch.hashring() self.assertEqual(len(hashring), 3) self.assertEqual(hashring[0].token, 0x0) self.assertEqual(hashring[1].token, 0xcfcd208495d565ef66e7dff9f98764da) self.assertEqual(hashring[2].token, 0xf899139df5e1059396431415e770c6dd) preference_list = self.hashring_watch.preference_list('0') self.assertEqual(preference_list[0].token, 0xf899139df5e1059396431415e770c6dd) self.assertEqual(preference_list[1].token, 0x0) self.assertEqual(preference_list[2].token, 0xcfcd208495d565ef66e7dff9f98764da) self.zookeeper_client.remove_session_observer(observer)
def test_proxy(self): proxy = ZookeeperServiceProxy(self.zookeeper_client, self.service.info().name) version = proxy.getVersion(self.request_context) self.assertEqual(version, "VERSION") expired = expire_zookeeper_client_session(self.zookeeper_client, 10) self.assertEqual(expired, True) gevent.sleep(1) version = proxy.getVersion(self.request_context) self.assertEqual(version, "VERSION")
def test_proxy(self): proxy = ZookeeperServiceProxy( self.zookeeper_client, self.service.info().name) version = proxy.getVersion(self.request_context) self.assertEqual(version, "VERSION") expired = expire_zookeeper_client_session(self.zookeeper_client, 10) self.assertEqual(expired, True) gevent.sleep(1) version = proxy.getVersion(self.request_context) self.assertEqual(version, "VERSION")
def test_session_expiration(self): expired_session_data = [] def observer(event): if event.state_name == "EXPIRED_SESSION_STATE": expired_session_data.append(self.watch.get_data()) #add session observer for testing self.zookeeper_client.add_session_observer(observer) count = self.watch_observer_count expired_result = expire_zookeeper_client_session(self.zookeeper_client, 10) self.assertEqual(expired_result, True) gevent.sleep(1) self.assertEqual(expired_session_data[0], None) self.assertEqual(self.watch_observer_count, count+1) data = self.watch.get_data() self.assertEqual(data, self.watch_data) self.assertEqual(self.watch_observer_data, self.watch_data)
def test_session_expiration(self): expired_session_data = [] def observer(event): if event.state_name == "EXPIRED_SESSION_STATE": expired_session_data.append(self.watch.get_data()) #add session observer for testing self.zookeeper_client.add_session_observer(observer) count = self.watch_observer_count expired_result = expire_zookeeper_client_session( self.zookeeper_client, 10) self.assertEqual(expired_result, True) gevent.sleep(1) self.assertEqual(expired_session_data[0], None) self.assertEqual(self.watch_observer_count, count + 1) data = self.watch.get_data() self.assertEqual(data, self.watch_data) self.assertEqual(self.watch_observer_data, self.watch_data)
def test_session_expiration(self): expired_session_children = {} def observer(event): if event.state_name == "EXPIRED_SESSION_STATE": expired_session_children.update(self.watch.get_children()) #add session observer for testing self.zookeeper_client.add_session_observer(observer) count = self.watch_observer_count expired_result = expire_zookeeper_client_session(self.zookeeper_client, 10) self.assertEqual(expired_result, True) gevent.sleep(1) self.assertEqual(len(expired_session_children), 0) self.assertEqual(self.watch_observer_count, count+1) children = self.watch.get_children() self.assertEqual(children, self.watch_observer_children) self.assertEqual(len(children), len(self.children)) for child, child_data in self.children: self.assertEqual(children[child][0], child_data)
def test_session_expiration(self): #unregister service since the registration is associated with #service zookeeper client, and we're going to cause a #session expiration on self.zookeeper_client. self.registrar.unregister_service(self.service) gevent.sleep(1) service_info = self.registrar.locate_service("unittestsvc") self.assertIsNone(service_info) #register now with self.registar which is associated with #self.zookeeper_client. self.registrar.register_service(self.service) expired = expire_zookeeper_client_session(self.zookeeper_client, 10) self.assertEqual(expired, True) gevent.sleep(1) #verify registration following session expiration service_info = self.registrar.locate_service("unittestsvc") self.assertIsNotNone(service_info) self.assertEqual(service_info.name, "unittestsvc") self.assertEqual(service_info.default_endpoint().port, 10090) self.assertEqual(len(self.registrar.find_services("unittestsvc")), 1)
def test_session_expiration(self): path = "/unittest_expiration" ephemeral_path = "/unittest_expiration_ephemeral" data = "unittest_data" expired = [] if self.zookeeper_client.exists(path): self.zookeeper_client.delete(path) self.zookeeper_client.create(path, data, ephemeral=False) self.zookeeper_client.create(ephemeral_path, data, ephemeral=True) rdata, rstat = self.zookeeper_client.get_data(path) self.assertEqual(rdata, data) def observer(event): if event.state_name == "EXPIRED_SESSION_STATE": expired.append(True) #add session observer for testing self.zookeeper_client.add_session_observer(observer) expired_result = expire_zookeeper_client_session( self.zookeeper_client, 10) self.assertEqual(expired_result, True) gevent.sleep(1) #verify expiration took place self.assertEqual(len(expired), 1) #verify ephemeral node no longer exists with self.assertRaises(zookeeper.NoNodeException): self.zookeeper_client.get_data(ephemeral_path) #verify non-ephemeral node still exists rdata, rstat = self.zookeeper_client.get_data(path) self.assertEqual(rdata, data) self.zookeeper_client.delete(path)
def test_session_expiration(self): path = "/unittest_expiration" ephemeral_path = "/unittest_expiration_ephemeral" data = "unittest_data" expired = [] if self.zookeeper_client.exists(path): self.zookeeper_client.delete(path) self.zookeeper_client.create(path, data, ephemeral=False) self.zookeeper_client.create(ephemeral_path, data, ephemeral=True) rdata, rstat = self.zookeeper_client.get_data(path) self.assertEqual(rdata, data) def observer(event): if event.state_name == "EXPIRED_SESSION_STATE": expired.append(True) #add session observer for testing self.zookeeper_client.add_session_observer(observer) expired_result = expire_zookeeper_client_session(self.zookeeper_client, 10) self.assertEqual(expired_result, True) gevent.sleep(1) #verify expiration took place self.assertEqual(len(expired), 1) #verify ephemeral node no longer exists with self.assertRaises(zookeeper.NoNodeException): self.zookeeper_client.get_data(ephemeral_path) #verify non-ephemeral node still exists rdata, rstat = self.zookeeper_client.get_data(path) self.assertEqual(rdata, data) self.zookeeper_client.delete(path)
def test_session_expiration(self): expired_session_children = {} def observer(event): if event.state_name == "EXPIRED_SESSION_STATE": expired_session_children.update(self.watch.get_children()) #add session observer for testing self.zookeeper_client.add_session_observer(observer) count = self.watch_observer_count expired_result = expire_zookeeper_client_session( self.zookeeper_client, 10) self.assertEqual(expired_result, True) gevent.sleep(1) self.assertEqual(len(expired_session_children), 0) self.assertEqual(self.watch_observer_count, count + 1) children = self.watch.get_children() self.assertEqual(children, self.watch_observer_children) self.assertEqual(len(children), len(self.children)) for child, child_data in self.children: self.assertEqual(children[child][0], child_data)