Skip to content

Commit

Permalink
more BoboSetup checks; styling fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
r3w0p committed Sep 12, 2019
1 parent e00a98b commit ecb4b7b
Show file tree
Hide file tree
Showing 11 changed files with 112 additions and 28 deletions.
2 changes: 1 addition & 1 deletion bobocep/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@

__author__ = """r3w0p"""
__email__ = ''
__version__ = '0.30.4'
__version__ = '0.30.5'
4 changes: 2 additions & 2 deletions bobocep/forwarder/action_forwarder.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from bobocep.forwarder.bobo_forwarder import \
BoboForwarder
from bobocep.rules.actions.bobo_action import BoboAction
from bobocep.rules.events.bobo_event import BoboEvent
from bobocep.rules.events.composite_event import CompositeEvent


class ActionForwarder(BoboForwarder):
Expand All @@ -28,5 +28,5 @@ def __init__(self,

self._action = action

def _handle_forwarder_event(self, event: BoboEvent) -> bool:
def _handle_forwarder_event(self, event: CompositeEvent) -> bool:
return self._action.execute(event).success
7 changes: 7 additions & 0 deletions bobocep/receiver/bobo_receiver.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,13 @@ def _loop(self) -> None:
else:
self._notify_invalid_data(data)

def get_validator(self) -> BoboValidator:
"""
:return: The validator used by the Receiver.
"""

return self._validator

def add_data(self, data) -> None:
"""
Add data to the receiver.
Expand Down
16 changes: 16 additions & 0 deletions bobocep/setup/bobo_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,22 @@ def get_forwarder(self) -> ActionForwarder:

return self._forwarder

def get_distributed(self) -> BoboDistManager:
"""
:raises RuntimeError: Attempting access before configuration.
:raises RuntimeError: Distributed was not configured.
:return: The distrubted manager.
"""

with self._lock:
if not self._configured:
raise RuntimeError("Setup must be configured first.")
elif not self._distributed:
raise RuntimeError("Distributed was not configured.")

return self._manager

def get_null_data_generator(self) -> BoboNullDataGenerator:
"""
:raises RuntimeError: Attempting access before configuration.
Expand Down
Binary file modified docs/source/_static/bobo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,9 @@
# built documents.
#
# The short X.Y version.
version = '0.30.4'
version = '0.30.5'
# The full version, including alpha/beta/rc tags.
release = '0.30.4'
release = '0.30.5'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.30.4
current_version = 0.30.5
tag = True

[bumpversion:file:setup.py]
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
author="r3w0p",
author_email='',
name='bobocep',
version='0.30.4',
version='0.30.5',
description="A fault-tolerant complex event processing engine designed "
"for edge computing in IoT systems.",
long_description=long_description,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import unittest

from bobocep.receiver.generators.data.bobo_null_data_static import \
BoboNullDataStatic


class TestBoboNullDataStatic(unittest.TestCase):

def test_get_static_data(self):
data = "123"
self.assertEqual(data, BoboNullDataStatic(data).get_null_data())
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def __init__(self, description: str) -> None:
self.description = description
self.events = []

def _perform_action(self, event: CompositeEvent) -> bool:
def _perform_action(self, event: CompositeEvent):
self.events.append(event)
raise RuntimeError(self.description)

Expand Down
90 changes: 70 additions & 20 deletions tests/test_bobocep/test_setup/test_bobo_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
BoboNullDataStatic
from bobocep.receiver.validators.str_dict_validator import StrDictValidator
from bobocep.rules.actions.no_action import NoAction
from bobocep.rules.actions.rate_limit_action import RateLimitAction
from bobocep.rules.events.composite_event import CompositeEvent
from bobocep.rules.events.histories.bobo_history import BoboHistory
from bobocep.rules.events.primitive_event import PrimitiveEvent
Expand All @@ -15,7 +16,10 @@
from bobocep.setup.bobo_complex_event import BoboComplexEvent
from bobocep.setup.bobo_setup import BoboSetup

NAME_DEF_A = "name_def_a"
EXCHANGE_NAME = "test_exchange_name"
USER_NAME = "test_user_name"
HOST_NAME = "127.0.0.1"

NAME_NFA_A = "name_nfa_a"

LABEL_A = "label_a"
Expand Down Expand Up @@ -65,7 +69,7 @@ def test_setup_before_configure(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_1
))

Expand All @@ -84,7 +88,7 @@ def test_setup_after_configure(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_1
))

Expand All @@ -111,7 +115,7 @@ def test_setup_after_start(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_1
))

Expand Down Expand Up @@ -141,7 +145,7 @@ def test_setup_after_cancel(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_1
))

Expand All @@ -166,6 +170,52 @@ def test_setup_after_cancel(self):
self.assertFalse(setup.get_forwarder().is_active())
self.assertFalse(setup.get_null_data_generator().is_active())

def test_config_arguments(self):
setup = BoboSetup()

event_def = BoboComplexEvent(
NAME_NFA_A,
stub_pattern_1)
validator = StrDictValidator()
action_producer = RateLimitAction()
action_forwarder = NoAction()
null_data = BoboNullDataStatic(DATA_DICT_A)

setup.add_complex_event(event_def)
setup.config_receiver(validator)
setup.config_producer(action_producer)
setup.config_forwarder(action_forwarder)
setup.config_null_data(NULL_DATA_DELAY, null_data)
setup.config_distributed(EXCHANGE_NAME,
USER_NAME,
HOST_NAME)
setup.configure()

receiver = setup.get_receiver()
decider = setup.get_decider()
producer = setup.get_producer()
forwarder = setup.get_forwarder()
nullgen = setup.get_null_data_generator()
manager = setup.get_distributed()

self.assertEqual(validator, receiver.get_validator())
self.assertEqual(NAME_NFA_A, decider.get_all_handlers()[0].nfa.name)
self.assertEqual(action_producer, producer._action)
self.assertEqual(action_forwarder, forwarder._action)

self.assertEqual(null_data, nullgen.null_data)
self.assertEqual(receiver, nullgen.receiver)

self.assertEqual(manager.outgoing.decider, decider)
self.assertEqual(manager.outgoing.exchange_name, EXCHANGE_NAME)
self.assertTrue(manager.outgoing.user_id.find(USER_NAME) != -1)
self.assertEqual(manager.outgoing.host_name, HOST_NAME)

self.assertEqual(manager.incoming.decider, decider)
self.assertEqual(manager.incoming.exchange_name, EXCHANGE_NAME)
self.assertTrue(manager.incoming.user_id.find(USER_NAME) != -1)
self.assertEqual(manager.incoming.host_name, HOST_NAME)

def test_access_before_configuration(self):
setup = BoboSetup()

Expand All @@ -189,7 +239,7 @@ def test_configure_when_cancelled(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_1
))
setup.cancel()
Expand All @@ -204,7 +254,7 @@ def test_configure_when_active(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_1
))

Expand All @@ -221,7 +271,7 @@ def test_configure_when_configured(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_1
))
setup.configure()
Expand All @@ -245,7 +295,7 @@ def test_primitive_from_receiver_to_decider(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_4
))
setup.config_receiver(StrDictValidator())
Expand All @@ -262,14 +312,14 @@ def test_primitive_from_receiver_to_decider(self):
decider.loop()

handlers = decider.get_all_handlers()
self.assertEqual(NAME_DEF_A, handlers[0].nfa.name)
self.assertEqual(NAME_NFA_A, handlers[0].nfa.name)

def test_composite_from_decider_to_producer_recursive(self):
setup = BoboSetup(recursive=True)

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_4
))
setup.config_receiver(StrDictValidator())
Expand All @@ -296,7 +346,7 @@ def test_composite_from_decider_to_producer_not_recursive(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_4
))
setup.config_receiver(StrDictValidator())
Expand All @@ -323,7 +373,7 @@ def test_action_from_producer_to_decider_recursive(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_4
))
setup.config_receiver(StrDictValidator())
Expand All @@ -338,7 +388,7 @@ def test_action_from_producer_to_decider_recursive(self):
a_event = NoAction().execute(
CompositeEvent(
timestamp=EpochNSClock.generate_timestamp(),
name=NAME_DEF_A,
name=NAME_NFA_A,
history=BoboHistory(),
data={}))

Expand All @@ -353,7 +403,7 @@ def test_action_from_producer_to_decider_not_recursive(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_4
))
setup.config_receiver(StrDictValidator())
Expand All @@ -368,7 +418,7 @@ def test_action_from_producer_to_decider_not_recursive(self):
a_event = NoAction().execute(
CompositeEvent(
timestamp=EpochNSClock.generate_timestamp(),
name=NAME_DEF_A,
name=NAME_NFA_A,
history=BoboHistory(),
data={}))

Expand All @@ -383,7 +433,7 @@ def test_composite_from_producer_to_forwarder(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_4
))
setup.config_receiver(StrDictValidator())
Expand All @@ -397,7 +447,7 @@ def test_composite_from_producer_to_forwarder(self):

c_event = CompositeEvent(
timestamp=EpochNSClock.generate_timestamp(),
name=NAME_DEF_A,
name=NAME_NFA_A,
history=BoboHistory(),
data={})

Expand All @@ -411,7 +461,7 @@ def test_action_from_producer_to_forwarder(self):

setup.add_complex_event(
event_def=BoboComplexEvent(
name=NAME_DEF_A,
name=NAME_NFA_A,
pattern=stub_pattern_4
))
setup.config_receiver(StrDictValidator())
Expand All @@ -426,7 +476,7 @@ def test_action_from_producer_to_forwarder(self):
a_event = NoAction().execute(
CompositeEvent(
timestamp=EpochNSClock.generate_timestamp(),
name=NAME_DEF_A,
name=NAME_NFA_A,
history=BoboHistory(),
data={}))

Expand Down

0 comments on commit ecb4b7b

Please sign in to comment.