def test_url_parsing(self): check_value = [] def Connection(self, urls, **kwargs): if set(urls) != set(check_value): raise WrongValueException("expected %s - received %s", str(check_value), str(urls)) else: raise CorrectValueException() flexmock(vnc_kombu.kombu.Connection, __new__=Connection) servers = "a.a.a.a,b.b.b.b:5050,[email protected],[email protected]:5050,eeee:[email protected],ffff:[email protected]:5050" check_value = [ self._url("a.a.a.a"), self._url("b.b.b.b", port=5050), self._url("c.c.c.c", username="******"), self._url("d.d.d.d", port=5050, username="******"), self._url("e.e.e.e", username="******", password="******"), self._url("f.f.f.f", username="******", password="******", port=5050) ] with self.assertRaises(CorrectValueException): vnc_cfg_ifmap.VncServerKombuClient(self.db_client_mgr, servers, self.port, None, self.username, self.password, self.vhost, False)
def test_connection_monitor(self): flexmock(self.mock_connect).should_receive("close").times(3) flexmock(self.mock_connect).should_receive("connect").twice() flexmock(self.mock_connect).should_receive("ensure_connection").twice() flexmock(self.mock_connect).should_receive("channel").twice() flexmock(self.db_client_mgr).should_receive("wait_for_resync_done"). \ with_args().once() flexmock(self.mock_consumer).should_receive("consume").twice() flexmock(self.mock_consumer).should_receive("close").once() flexmock(self.mock_producer).should_receive("close").once() _lock = gevent.lock.Semaphore() _lock.acquire() def _drain_events(): if _lock.locked(): _lock.release() raise Exception() else: gevent.sleep(5) return flexmock(self.mock_connect).should_receive( "drain_events").replace_with(_drain_events).twice() servers = "a.a.a.a" kc = vnc_cfg_ifmap.VncServerKombuClient(self.db_client_mgr, servers, self.port, None, self.username, self.password, self.vhost, False) _lock.wait() kc.shutdown()
def test_connection_publish(self): flexmock(self.mock_connect).should_receive("close").twice() flexmock(self.mock_connect).should_receive("connect").twice() flexmock(self.mock_connect).should_receive("ensure_connection").twice() flexmock(self.mock_connect).should_receive("channel").twice() flexmock(self.db_client_mgr).should_receive("wait_for_resync_done"). \ with_args().once() flexmock(self.mock_consumer).should_receive("consume").once() _lock = gevent.lock.Semaphore() _lock.acquire() def _drain_events(): gevent.sleep(1000) return req_id = [] def _publish(args): req_id.append(args['request-id']) if _lock.locked(): _lock.release() raise Exception() return flexmock(self.mock_connect).should_receive( "drain_events").replace_with(_drain_events).once() flexmock(self.mock_producer).should_receive("publish").replace_with( _publish).twice() servers = "a.a.a.a" kc = vnc_cfg_ifmap.VncServerKombuClient(self.db_client_mgr, servers, self.port, None, self.username, self.password, self.vhost, False) gevent.sleep(0) kc.dbe_create_publish("network", [], {}) _lock.wait() # check if message is not missed out by publish error self.assertEqual(len(req_id), 2) self.assertEqual(len(set(req_id)), 1)