test_neuron_launcher.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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.ConfigurationManager import SettingLoader
  6. from kalliope.core.Models.Neuron import Neuron
  7. class TestNeuronLauncher(unittest.TestCase):
  8. """
  9. Class to test Launchers Classes (TriggerLauncher, SynapseLauncher, NeuronLauncher) and methods
  10. """
  11. def setUp(self):
  12. pass
  13. ####
  14. # Neurons Launcher
  15. def test_launch_neuron(self):
  16. """
  17. Test the Neuron Launcher trying to start a Neuron
  18. """
  19. neuron = Neuron(name='neurone1', parameters={'var1': 'val1'})
  20. sl = SettingLoader()
  21. resources = Resources(neuron_folder='/var/tmp/test/resources')
  22. sl.settings.resources = resources
  23. with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation") as mock_get_class_instantiation:
  24. NeuronLauncher.launch_neuron(neuron=neuron)
  25. mock_get_class_instantiation.assert_called_once_with(package_name="neurons",
  26. module_name=neuron.name,
  27. parameters=neuron.parameters,
  28. resources_dir=sl.settings.resources.neuron_folder)
  29. mock_get_class_instantiation.reset_mock()
  30. def test_start_neuron(self):
  31. """
  32. Testing params association and starting a Neuron
  33. """
  34. with mock.patch("kalliope.core.NeuronLauncher.launch_neuron") as mock_launch_neuron_method:
  35. # Assert to the neuron is launched
  36. neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'})
  37. params = {
  38. 'param1':'parval1'
  39. }
  40. NeuronLauncher.start_neuron(neuron=neuron1,
  41. parameters_dict=params)
  42. mock_launch_neuron_method.assert_called_with(neuron1)
  43. mock_launch_neuron_method.reset_mock()
  44. # Assert the params are well passed to the neuron
  45. neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2', 'args': ['arg1', 'arg2']})
  46. params = {
  47. 'arg1':'argval1',
  48. 'arg2':'argval2'
  49. }
  50. NeuronLauncher.start_neuron(neuron=neuron2,
  51. parameters_dict=params)
  52. neuron2_params = Neuron(name='neurone2',
  53. parameters={'var2': 'val2',
  54. 'args': ['arg1', 'arg2'],
  55. 'arg1':'argval1',
  56. 'arg2':'argval2'}
  57. )
  58. mock_launch_neuron_method.assert_called_with(neuron2_params)
  59. mock_launch_neuron_method.reset_mock()
  60. # Assert the Neuron is not started when missing args
  61. neuron3 = Neuron(name='neurone3', parameters={'var3': 'val3', 'args': ['arg3', 'arg4']})
  62. params = {
  63. 'arg1': 'argval1',
  64. 'arg2': 'argval2'
  65. }
  66. NeuronLauncher.start_neuron(neuron=neuron3,
  67. parameters_dict=params)
  68. mock_launch_neuron_method.assert_not_called()
  69. mock_launch_neuron_method.reset_mock()
  70. # Assert no neuron is launched when waiting for args and none are given
  71. neuron4 = Neuron(name='neurone4', parameters={'var4': 'val4', 'args': ['arg5', 'arg6']})
  72. params = {}
  73. NeuronLauncher.start_neuron(neuron=neuron4,
  74. parameters_dict=params)
  75. mock_launch_neuron_method.assert_not_called()
  76. mock_launch_neuron_method.reset_mock()