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 = VncServerKombuClient(self.db_client_mgr,servers, self.port,None,
                                  self.username, self.password, self.vhost, 0,
                                  False)
        _lock.wait()
        kc.shutdown()
Esempio n. 2
0
    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.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 = VncServerKombuClient(self.db_client_mgr, servers, self.port,
                                  self.username, self.password, self.vhost, 0,
                                  'x.x.x.x', False)
        gevent.sleep(0)
        kc.dbe_publish('CREATE', 'virtual_network', ['vn1'], {})
        _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)
Esempio n. 3
0
    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 = VncServerKombuClient(self.db_client_mgr,servers, self.port,None,
                                  self.username, self.password, self.vhost, 0,
                                  False)
        _lock.wait()
        kc.shutdown()
    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):
            VncServerKombuClient(self.db_client_mgr, servers, self.port, None,
                                 self.username, self.password, self.vhost, 0,
                                 False)
    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 = VncServerKombuClient(self.db_client_mgr, servers, self.port, None,
                                  self.username, self.password, self.vhost, 0,
                                  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)