test_launchers.py 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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. r = Resources(neuron_folder="/var/tmp/test/resources")
  56. sl.settings.resources = r
  57. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  58. # Success
  59. SynapseLauncher.start_synapse("Synapse1", brain=br)
  60. calls = [mock.call(package_name="neurons",
  61. module_name=neuron1.name,
  62. parameters=neuron1.parameters,
  63. resources_dir='/var/tmp/test/resources'),
  64. mock.call(package_name="neurons",
  65. module_name=neuron2.name,
  66. parameters=neuron2.parameters,
  67. resources_dir='/var/tmp/test/resources')]
  68. mock_get_class_instantiation.assert_has_calls(calls=calls)
  69. mock_get_class_instantiation.reset_mock()
  70. # Fail
  71. with self.assertRaises(SynapseNameNotFound):
  72. SynapseLauncher.start_synapse("Synapse4", brain=br)
  73. def test_run_synapse(self):
  74. """
  75. Test to run a Synapse
  76. """
  77. neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'})
  78. neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2'})
  79. signal1 = Order(sentence="this is the sentence")
  80. synapse1 = Synapse(name="Synapse1", neurons=[neuron1, neuron2], signals=[signal1])
  81. synapse_empty = Synapse(name="Synapse_empty", neurons=[], signals=[signal1])
  82. sl = SettingLoader()
  83. resources = Resources(neuron_folder='/var/tmp/test/resources')
  84. sl.settings.resources = resources
  85. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  86. SynapseLauncher._run_synapse(synapse=synapse1)
  87. calls = [mock.call(package_name="neurons",
  88. module_name=neuron1.name,
  89. parameters=neuron1.parameters,
  90. resources_dir="/var/tmp/test/resources"),
  91. mock.call(package_name="neurons",
  92. module_name=neuron2.name,
  93. parameters=neuron2.parameters,
  94. resources_dir="/var/tmp/test/resources")]
  95. mock_get_class_instantiation.assert_has_calls(calls=calls)
  96. mock_get_class_instantiation.reset_mock()
  97. # Do not any Neurons
  98. SynapseLauncher._run_synapse(synapse=synapse_empty)
  99. mock_get_class_instantiation.assert_not_called()
  100. mock_get_class_instantiation.reset_mock()
  101. ####
  102. # Neurons Launcher
  103. def test_start_neuron(self):
  104. """
  105. Test the Neuron Launcher trying to start a Neuron
  106. """
  107. neuron = Neuron(name='neurone1', parameters={'var1': 'val1'})
  108. sl = SettingLoader()
  109. resources = Resources(neuron_folder='/var/tmp/test/resources')
  110. sl.settings.resources = resources
  111. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  112. NeuronLauncher.start_neuron(neuron=neuron)
  113. mock_get_class_instantiation.assert_called_once_with(package_name="neurons",
  114. module_name=neuron.name,
  115. parameters=neuron.parameters,
  116. resources_dir=sl.settings.resources.neuron_folder)
  117. mock_get_class_instantiation.reset_mock()