test_launchers.py 6.2 KB

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