test_launchers.py 6.0 KB

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