Skip to content

Commit

Permalink
add async event bus e2e test
Browse files Browse the repository at this point in the history
  • Loading branch information
keotl committed Jun 17, 2020
1 parent b23e2b4 commit c2ab4d8
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 8 deletions.
37 changes: 37 additions & 0 deletions e2e_test/app/components/event/async_event_handler.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import anachronos
from anachronos import Anachronos

from e2e_test.testing_messages import ASYNC_INSTANTIATED_EVENT_HANDLER, \
ASYNC_FUNCTION_EVENT_HANDLER, ASYNC_RUNNABLE_EVENT_HANDLER
from jivago.event.config.annotations import EventHandler, EventHandlerClass
from jivago.lang.annotations import Inject, Override
from jivago.lang.runnable import Runnable


@EventHandler("async-event")
class MyHandler(Runnable):

@Inject
def __init__(self, anachronos: Anachronos):
self.anachronos = anachronos

@Override
def run(self):
self.anachronos.store(ASYNC_RUNNABLE_EVENT_HANDLER)


@EventHandlerClass
class MyHandlerClass(object):

@Inject
def __init__(self, anachronos: Anachronos):
self.anachronos = anachronos

@EventHandler("async-event")
def handle(self):
self.anachronos.store(ASYNC_INSTANTIATED_EVENT_HANDLER)


@EventHandler("async-event")
def my_event_handler_function():
anachronos.get_instance().store(ASYNC_FUNCTION_EVENT_HANDLER)
1 change: 1 addition & 0 deletions e2e_test/app/components/event/event_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,4 @@ def handle(self):
@EventHandler("event")
def my_event_handler_function():
anachronos.get_instance().store(FUNCTION_EVENT_HANDLER)

16 changes: 12 additions & 4 deletions e2e_test/app/components/event/event_resource.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
from jivago.event.async_event_bus import AsyncEventBus
from jivago.event.event_bus import EventBus
from jivago.lang.annotations import Inject
from jivago.wsgi.annotations import Resource
from jivago.wsgi.methods import GET
from jivago.wsgi.annotations import Resource, Path
from jivago.wsgi.methods import POST


@Resource("/event")
class EventResource(object):

@Inject
def __init__(self, event_bus: EventBus):
def __init__(self, event_bus: EventBus, async_event_bus: AsyncEventBus):
self.async_event_bus = async_event_bus
self.event_bus = event_bus

@GET
@POST
def send_event(self) -> str:
self.event_bus.emit("event")
return "OK"

@POST
@Path("/async")
def send_event_async(self) -> str:
self.async_event_bus.emit("async-event")
return "OK"
6 changes: 5 additions & 1 deletion e2e_test/testing_messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,13 @@
FILTER = "Filtering:Entering Filter"

# Event
RUNNABLE_EVENT_HANDLER = "Event:Got Event in runnable"
RUNNABLE_EVENT_HANDLER = "Event: Got Event in runnable"
INSTANTIATED_EVENT_HANDLER = "Event: Got Event in instantiated handler"
FUNCTION_EVENT_HANDLER = "Event: Got Event in simple function"

ASYNC_RUNNABLE_EVENT_HANDLER = "AsyncEvent: Got Event in runnable"
ASYNC_INSTANTIATED_EVENT_HANDLER = "AsyncEvent: Got Event in instantiated handler"
ASYNC_FUNCTION_EVENT_HANDLER = "AsyncEvent: Got Event in simple function"

# Dependency injection
INSTANTIATED_LAZY_BEAN = "Injection: Instantiated lazy component"
12 changes: 10 additions & 2 deletions e2e_test/tests/test_event.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,26 @@
import anachronos

from e2e_test.runner import http
from e2e_test.testing_messages import RUNNABLE_EVENT_HANDLER, INSTANTIATED_EVENT_HANDLER, FUNCTION_EVENT_HANDLER
from e2e_test.testing_messages import RUNNABLE_EVENT_HANDLER, INSTANTIATED_EVENT_HANDLER, FUNCTION_EVENT_HANDLER, \
ASYNC_FUNCTION_EVENT_HANDLER, ASYNC_INSTANTIATED_EVENT_HANDLER, ASYNC_RUNNABLE_EVENT_HANDLER


class EventTest(anachronos.TestCase):

def test_sendEvent(self):
http.get("/event")
http.post("/event")

self.assertThat(RUNNABLE_EVENT_HANDLER).is_stored()
self.assertThat(INSTANTIATED_EVENT_HANDLER).is_stored()
self.assertThat(FUNCTION_EVENT_HANDLER).is_stored()

def test_sendAsyncEvent(self):
http.post("/event/async")

self.assertThat(ASYNC_RUNNABLE_EVENT_HANDLER).is_stored()
self.assertThat(ASYNC_INSTANTIATED_EVENT_HANDLER).is_stored()
self.assertThat(ASYNC_FUNCTION_EVENT_HANDLER).is_stored()


if __name__ == '__main__':
anachronos.run_tests()
2 changes: 1 addition & 1 deletion jivago/event/async_event_bus.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

class AsyncEventBus(EventBus):

def __init__(self, event_bus: SynchronousEventBus, pool_size=12):
def __init__(self, event_bus: SynchronousEventBus, pool_size=2):
self.event_bus = event_bus
self.thread_pool = ThreadPoolExecutor(max_workers=pool_size)

Expand Down

0 comments on commit c2ab4d8

Please sign in to comment.