test_launchers.py 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. import unittest
  2. import mock
  3. from kalliope.core.Models.Resources import Resources
  4. from kalliope.core.NeuronLauncher import NeuronLauncher
  5. from kalliope.core.SynapseLauncher import SynapseLauncher, SynapseNameNotFound
  6. from kalliope.core.TriggerLauncher import TriggerLauncher
  7. from kalliope.core.ConfigurationManager import SettingLoader
  8. from kalliope.core.Models.Trigger import Trigger
  9. from kalliope.core.Models.Neuron import Neuron
  10. from kalliope.core.Models.Order import Order
  11. from kalliope.core.Models.Brain import Brain
  12. from kalliope.core.Models.Synapse import Synapse
  13. class TestLaunchers(unittest.TestCase):
  14. """
  15. Class to test Launchers Classes (TriggerLauncher, SynapseLauncher, NeuronLauncher) and methods
  16. """
  17. def setUp(self):
  18. pass
  19. ####
  20. # Trigger Launcher
  21. def test_get_trigger(self):
  22. """
  23. Test the Trigger Launcher trying to run the trigger
  24. """
  25. trigger = Trigger("Trigger", {})
  26. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  27. TriggerLauncher.get_trigger(trigger=trigger,
  28. callback=None)
  29. mock_get_class_instantiation.assert_called_once_with(package_name="trigger",
  30. module_name=trigger.name,
  31. parameters=trigger.parameters)
  32. mock_get_class_instantiation.reset_mock()
  33. ####
  34. # Synapse Launcher
  35. def test_start_synapse(self):
  36. """
  37. Test the Synapse launcher trying to start synapse
  38. """
  39. # Init
  40. neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'})
  41. neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2'})
  42. neuron3 = Neuron(name='neurone3', parameters={'var3': 'val3'})
  43. neuron4 = Neuron(name='neurone4', parameters={'var4': 'val4'})
  44. signal1 = Order(sentence="this is the sentence")
  45. signal2 = Order(sentence="this is the second sentence")
  46. signal3 = Order(sentence="that is part of the third sentence")
  47. synapse1 = Synapse(name="Synapse1", neurons=[neuron1, neuron2], signals=[signal1])
  48. synapse2 = Synapse(name="Synapse2", neurons=[neuron3, neuron4], signals=[signal2])
  49. synapse3 = Synapse(name="Synapse3", neurons=[neuron2, neuron4], signals=[signal3])
  50. all_synapse_list = [synapse1,
  51. synapse2,
  52. synapse3]
  53. br = Brain(synapses=all_synapse_list)
  54. sl = SettingLoader()
  55. sl.settings.resource_dir = '/var/tmp/test/resources'
  56. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  57. # Success
  58. SynapseLauncher.start_synapse("Synapse1", brain=br)
  59. calls = [mock.call(package_name="neurons",
  60. module_name=neuron1.name,
  61. parameters=neuron1.parameters,
  62. resources_dir='/var/tmp/test/resources'),
  63. mock.call(package_name="neurons",
  64. module_name=neuron2.name,
  65. parameters=neuron2.parameters,
  66. resources_dir='/var/tmp/test/resources')]
  67. mock_get_class_instantiation.assert_has_calls(calls=calls)
  68. mock_get_class_instantiation.reset_mock()
  69. # Fail
  70. with self.assertRaises(SynapseNameNotFound):
  71. SynapseLauncher.start_synapse("Synapse4", brain=br)
  72. def test_run_synapse(self):
  73. """
  74. Test to run a Synapse
  75. """
  76. neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'})
  77. neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2'})
  78. signal1 = Order(sentence="this is the sentence")
  79. synapse1 = Synapse(name="Synapse1", neurons=[neuron1, neuron2], signals=[signal1])
  80. synapse_empty = Synapse(name="Synapse_empty", neurons=[], signals=[signal1])
  81. sl = SettingLoader()
  82. resources = Resources(neuron_folder='/var/tmp/test/resources')
  83. sl.settings.resources = resources
  84. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  85. SynapseLauncher._run_synapse(synapse=synapse1)
  86. calls = [mock.call(package_name="neurons",
  87. module_name=neuron1.name,
  88. parameters=neuron1.parameters,
  89. resources_dir="/var/tmp/test/resources"),
  90. mock.call(package_name="neurons",
  91. module_name=neuron2.name,
  92. parameters=neuron2.parameters,
  93. resources_dir="/var/tmp/test/resources")]
  94. mock_get_class_instantiation.assert_has_calls(calls=calls)
  95. mock_get_class_instantiation.reset_mock()
  96. # Do not any Neurons
  97. SynapseLauncher._run_synapse(synapse=synapse_empty)
  98. mock_get_class_instantiation.assert_not_called()
  99. mock_get_class_instantiation.reset_mock()
  100. ####
  101. # Neurons Launcher
  102. def test_start_neuron(self):
  103. """
  104. Test the Neuron Launcher trying to start a Neuron
  105. """
  106. neuron = Neuron(name='neurone1', parameters={'var1': 'val1'})
  107. sl = SettingLoader()
  108. resources = Resources(neuron_folder='/var/tmp/test/resources')
  109. sl.settings.resources = resources
  110. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  111. NeuronLauncher.start_neuron(neuron=neuron)
  112. mock_get_class_instantiation.assert_called_once_with(package_name="neurons",
  113. module_name=neuron.name,
  114. parameters=neuron.parameters,
  115. resources_dir=sl.settings.resources.neuron_folder)
  116. mock_get_class_instantiation.reset_mock()