summaryrefslogtreecommitdiff
path: root/src/leap/common/tests/test_events.py
diff options
context:
space:
mode:
authorKali Kaneko <kali@leap.se>2016-09-20 17:07:14 -0400
committerKali Kaneko <kali@leap.se>2016-09-20 17:07:14 -0400
commita889a5480b3807d887c3f196963236b2667bb8fa (patch)
tree47b3dced8e2925ca1e5cede25223e866ef61e80d /src/leap/common/tests/test_events.py
parentf063726b3ad003693010555d57dbc214f6abb01d (diff)
parent34ee56766446a1072599bd5641ffdf2a89442462 (diff)
Merge branch 'debian/experimental' into debian/platform-0.9
Diffstat (limited to 'src/leap/common/tests/test_events.py')
-rw-r--r--src/leap/common/tests/test_events.py198
1 files changed, 0 insertions, 198 deletions
diff --git a/src/leap/common/tests/test_events.py b/src/leap/common/tests/test_events.py
deleted file mode 100644
index 2ad097e..0000000
--- a/src/leap/common/tests/test_events.py
+++ /dev/null
@@ -1,198 +0,0 @@
-# -*- coding: utf-8 -*-
-# test_events.py
-# Copyright (C) 2013 LEAP
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-import os
-import logging
-import time
-
-from twisted.internet.reactor import callFromThread
-from twisted.trial import unittest
-from twisted.internet import defer
-
-from leap.common.events import server
-from leap.common.events import client
-from leap.common.events import flags
-from leap.common.events import txclient
-from leap.common.events import catalog
-from leap.common.events.errors import CallbackAlreadyRegisteredError
-
-
-if 'DEBUG' in os.environ:
- logging.basicConfig(level=logging.DEBUG)
-
-
-class EventsGenericClientTestCase(object):
-
- def setUp(self):
- flags.set_events_enabled(True)
- self._server = server.ensure_server(
- emit_addr="tcp://127.0.0.1:0",
- reg_addr="tcp://127.0.0.1:0")
- self._client.configure_client(
- emit_addr="tcp://127.0.0.1:%d" % self._server.pull_port,
- reg_addr="tcp://127.0.0.1:%d" % self._server.pub_port)
-
- def tearDown(self):
- self._client.shutdown()
- self._server.shutdown()
- flags.set_events_enabled(False)
- # wait a bit for sockets to close properly
- time.sleep(0.1)
-
- def test_client_register(self):
- """
- Ensure clients can register callbacks.
- """
- callbacks = self._client.instance().callbacks
- self.assertTrue(len(callbacks) == 0,
- 'There should be no callback for this event.')
- # register one event
- event1 = catalog.CLIENT_UID
-
- def cbk1(event, _):
- return True
-
- uid1 = self._client.register(event1, cbk1)
- # assert for correct registration
- self.assertTrue(len(callbacks) == 1)
- self.assertTrue(callbacks[event1][uid1] == cbk1,
- 'Could not register event in local client.')
- # register another event
- event2 = catalog.CLIENT_SESSION_ID
-
- def cbk2(event, _):
- return True
-
- uid2 = self._client.register(event2, cbk2)
- # assert for correct registration
- self.assertTrue(len(callbacks) == 2)
- self.assertTrue(callbacks[event2][uid2] == cbk2,
- 'Could not register event in local client.')
-
- def test_register_signal_replace(self):
- """
- Make sure clients can replace already registered callbacks.
- """
- event = catalog.CLIENT_UID
- d = defer.Deferred()
-
- def cbk_fail(event, _):
- return callFromThread(d.errback, event)
-
- def cbk_succeed(event, _):
- return callFromThread(d.callback, event)
-
- self._client.register(event, cbk_fail, uid=1)
- self._client.register(event, cbk_succeed, uid=1, replace=True)
- self._client.emit(event, None)
- return d
-
- def test_register_signal_replace_fails_when_replace_is_false(self):
- """
- Make sure clients trying to replace already registered callbacks fail
- when replace=False
- """
- event = catalog.CLIENT_UID
- self._client.register(event, lambda event, _: None, uid=1)
- self.assertRaises(
- CallbackAlreadyRegisteredError,
- self._client.register,
- event, lambda event, _: None, uid=1, replace=False)
-
- def test_register_more_than_one_callback_works(self):
- """
- Make sure clients can replace already registered callbacks.
- """
- event = catalog.CLIENT_UID
- d1 = defer.Deferred()
-
- def cbk1(event, _):
- return callFromThread(d1.callback, event)
-
- d2 = defer.Deferred()
-
- def cbk2(event, _):
- return d2.callback(event)
-
- self._client.register(event, cbk1)
- self._client.register(event, cbk2)
- self._client.emit(event, None)
- d = defer.gatherResults([d1, d2])
- return d
-
- def test_client_receives_signal(self):
- """
- Ensure clients can receive signals.
- """
- event = catalog.CLIENT_UID
- d = defer.Deferred()
-
- def cbk(events, _):
- callFromThread(d.callback, event)
-
- self._client.register(event, cbk)
- self._client.emit(event, None)
- return d
-
- def test_client_unregister_all(self):
- """
- Test that the client can unregister all events for one signal.
- """
- event1 = catalog.CLIENT_UID
- d = defer.Deferred()
- # register more than one callback for the same event
- self._client.register(
- event1, lambda ev, _: callFromThread(d.errback, None))
- self._client.register(
- event1, lambda ev, _: callFromThread(d.errback, None))
- # unregister and emit the event
- self._client.unregister(event1)
- self._client.emit(event1, None)
- # register and emit another event so the deferred can succeed
- event2 = catalog.CLIENT_SESSION_ID
- self._client.register(
- event2, lambda ev, _: callFromThread(d.callback, None))
- self._client.emit(event2, None)
- return d
-
- def test_client_unregister_by_uid(self):
- """
- Test that the client can unregister an event by uid.
- """
- event = catalog.CLIENT_UID
- d = defer.Deferred()
- # register one callback that would fail
- uid = self._client.register(
- event, lambda ev, _: callFromThread(d.errback, None))
- # register one callback that will succeed
- self._client.register(
- event, lambda ev, _: callFromThread(d.callback, None))
- # unregister by uid and emit the event
- self._client.unregister(event, uid=uid)
- self._client.emit(event, None)
- return d
-
-
-class EventsTxClientTestCase(EventsGenericClientTestCase, unittest.TestCase):
-
- _client = txclient
-
-
-class EventsClientTestCase(EventsGenericClientTestCase, unittest.TestCase):
-
- _client = client