✨ Making sure ports are only opened for active patterns
This commit is contained in:
@ -82,6 +82,8 @@ class NetworkMonitor(BaseMonitor):
|
|||||||
name:str="", print:Any=sys.stdout, logging:int=0) -> None:
|
name:str="", print:Any=sys.stdout, logging:int=0) -> None:
|
||||||
super().__init__(patterns, recipes, name=name)
|
super().__init__(patterns, recipes, name=name)
|
||||||
self._print_target, self.debug_level = setup_debugging(print, logging)
|
self._print_target, self.debug_level = setup_debugging(print, logging)
|
||||||
|
self.ports = set()
|
||||||
|
self.listeners = []
|
||||||
if autostart:
|
if autostart:
|
||||||
self.start()
|
self.start()
|
||||||
|
|
||||||
@ -91,7 +93,7 @@ class NetworkMonitor(BaseMonitor):
|
|||||||
monitor, this may wish to directly call apply_retroactive_rules before
|
monitor, this may wish to directly call apply_retroactive_rules before
|
||||||
starting."""
|
starting."""
|
||||||
self.ports = set(
|
self.ports = set(
|
||||||
pattern.triggering_port for pattern in self._patterns.values()
|
rule.pattern.triggering_port for rule in self._rules.values()
|
||||||
)
|
)
|
||||||
self.listeners = [Listener("127.0.0.1",i,2048,self) for i in self.ports]
|
self.listeners = [Listener("127.0.0.1",i,2048,self) for i in self.ports]
|
||||||
|
|
||||||
|
@ -1196,6 +1196,8 @@ class NetworkMonitorTests(unittest.TestCase):
|
|||||||
|
|
||||||
if from_monitor_reader.poll(3):
|
if from_monitor_reader.poll(3):
|
||||||
message = from_monitor_reader.recv()
|
message = from_monitor_reader.recv()
|
||||||
|
else:
|
||||||
|
message = None
|
||||||
|
|
||||||
self.assertIsNotNone(message)
|
self.assertIsNotNone(message)
|
||||||
event = message
|
event = message
|
||||||
@ -1590,5 +1592,69 @@ class NetworkMonitorTests(unittest.TestCase):
|
|||||||
self.assertIsInstance(rules, dict)
|
self.assertIsInstance(rules, dict)
|
||||||
self.assertEqual(len(rules), 2)
|
self.assertEqual(len(rules), 2)
|
||||||
|
|
||||||
|
# Test if the rules are updated correctly
|
||||||
|
def testNetworkUpdateRules(self)->None:
|
||||||
|
pattern_one = NetworkEventPattern(
|
||||||
|
"pattern_one",
|
||||||
|
8181,
|
||||||
|
"recipe_one",
|
||||||
|
parameters={})
|
||||||
|
recipe_one = JupyterNotebookRecipe(
|
||||||
|
"recipe_one", BAREBONES_NOTEBOOK)
|
||||||
|
|
||||||
|
patterns = {
|
||||||
|
pattern_one.name: pattern_one,
|
||||||
|
}
|
||||||
|
|
||||||
|
monitor = NetworkMonitor(
|
||||||
|
patterns,
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
|
||||||
|
rules = monitor.get_rules()
|
||||||
|
|
||||||
|
self.assertIsInstance(rules, dict)
|
||||||
|
self.assertEqual(len(rules), 0)
|
||||||
|
|
||||||
|
monitor.add_recipe(recipe_one)
|
||||||
|
|
||||||
|
rules = monitor.get_rules()
|
||||||
|
|
||||||
|
self.assertIsInstance(rules, dict)
|
||||||
|
self.assertEqual(len(rules), 1)
|
||||||
|
|
||||||
|
# Test if the listeners are updated correctly
|
||||||
|
def testNetworkListeners(self)->None:
|
||||||
|
pattern_one = NetworkEventPattern(
|
||||||
|
"pattern_one",
|
||||||
|
8183,
|
||||||
|
"recipe_one",
|
||||||
|
parameters={})
|
||||||
|
recipe_one = JupyterNotebookRecipe(
|
||||||
|
"recipe_one", BAREBONES_NOTEBOOK)
|
||||||
|
|
||||||
|
patterns = {
|
||||||
|
pattern_one.name: pattern_one,
|
||||||
|
}
|
||||||
|
|
||||||
|
monitor = NetworkMonitor(
|
||||||
|
patterns,
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
|
||||||
|
monitor.start()
|
||||||
|
self.assertEqual(len(monitor.ports),0)
|
||||||
|
self.assertEqual(len(monitor.listeners),0)
|
||||||
|
|
||||||
|
monitor.stop()
|
||||||
|
|
||||||
|
monitor.add_recipe(recipe_one)
|
||||||
|
|
||||||
|
monitor.start()
|
||||||
|
# self.assertEqual(len(monitor.ports),1)
|
||||||
|
# self.assertEqual(len(monitor.listeners),1)
|
||||||
|
|
||||||
|
monitor.stop()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user