|
@@ -2,7 +2,7 @@ import unittest
|
|
import mock
|
|
import mock
|
|
|
|
|
|
from kalliope.core.Models.Resources import Resources
|
|
from kalliope.core.Models.Resources import Resources
|
|
-from kalliope.core.NeuronLauncher import NeuronLauncher
|
|
|
|
|
|
+from kalliope.core.NeuronLauncher import NeuronLauncher, NeuronParameterNotAvailable
|
|
from kalliope.core.ConfigurationManager import SettingLoader
|
|
from kalliope.core.ConfigurationManager import SettingLoader
|
|
|
|
|
|
from kalliope.core.Models.Neuron import Neuron
|
|
from kalliope.core.Models.Neuron import Neuron
|
|
@@ -41,38 +41,29 @@ class TestNeuronLauncher(unittest.TestCase):
|
|
"""
|
|
"""
|
|
|
|
|
|
with mock.patch("kalliope.core.NeuronLauncher.launch_neuron") as mock_launch_neuron_method:
|
|
with mock.patch("kalliope.core.NeuronLauncher.launch_neuron") as mock_launch_neuron_method:
|
|
- # Assert to the neuron is launched
|
|
|
|
|
|
+ # Assert to the neuron is launched with not parameter from order
|
|
neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'})
|
|
neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'})
|
|
- params = {
|
|
|
|
- 'param1':'parval1'
|
|
|
|
- }
|
|
|
|
- NeuronLauncher.start_neuron(neuron=neuron1,
|
|
|
|
- parameters_dict=params)
|
|
|
|
|
|
+
|
|
|
|
+ NeuronLauncher.start_neuron(neuron=neuron1)
|
|
mock_launch_neuron_method.assert_called_with(neuron1)
|
|
mock_launch_neuron_method.assert_called_with(neuron1)
|
|
mock_launch_neuron_method.reset_mock()
|
|
mock_launch_neuron_method.reset_mock()
|
|
|
|
|
|
# Assert the params are well passed to the neuron
|
|
# Assert the params are well passed to the neuron
|
|
- neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2', 'args': ['arg1', 'arg2']})
|
|
|
|
|
|
+ neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2', 'var3': "{{ var3 }}"})
|
|
params = {
|
|
params = {
|
|
- 'arg1':'argval1',
|
|
|
|
- 'arg2':'argval2'
|
|
|
|
|
|
+ 'var3': 'value3'
|
|
}
|
|
}
|
|
NeuronLauncher.start_neuron(neuron=neuron2,
|
|
NeuronLauncher.start_neuron(neuron=neuron2,
|
|
parameters_dict=params)
|
|
parameters_dict=params)
|
|
- neuron2_params = Neuron(name='neurone2',
|
|
|
|
- parameters={'var2': 'val2',
|
|
|
|
- 'args': ['arg1', 'arg2'],
|
|
|
|
- 'arg1':'argval1',
|
|
|
|
- 'arg2':'argval2'}
|
|
|
|
- )
|
|
|
|
|
|
+ neuron2_params = Neuron(name='neurone2', parameters={'var2': 'val2', 'var3': 'value3'})
|
|
|
|
+
|
|
mock_launch_neuron_method.assert_called_with(neuron2_params)
|
|
mock_launch_neuron_method.assert_called_with(neuron2_params)
|
|
mock_launch_neuron_method.reset_mock()
|
|
mock_launch_neuron_method.reset_mock()
|
|
|
|
|
|
# Assert the Neuron is not started when missing args
|
|
# Assert the Neuron is not started when missing args
|
|
- neuron3 = Neuron(name='neurone3', parameters={'var3': 'val3', 'args': ['arg3', 'arg4']})
|
|
|
|
|
|
+ neuron3 = Neuron(name='neurone3', parameters={'var3': 'val3', 'var4': '{{val4}}'})
|
|
params = {
|
|
params = {
|
|
- 'arg1': 'argval1',
|
|
|
|
- 'arg2': 'argval2'
|
|
|
|
|
|
+ 'not_exist': 'test'
|
|
}
|
|
}
|
|
NeuronLauncher.start_neuron(neuron=neuron3,
|
|
NeuronLauncher.start_neuron(neuron=neuron3,
|
|
parameters_dict=params)
|
|
parameters_dict=params)
|
|
@@ -80,11 +71,121 @@ class TestNeuronLauncher(unittest.TestCase):
|
|
mock_launch_neuron_method.reset_mock()
|
|
mock_launch_neuron_method.reset_mock()
|
|
|
|
|
|
# Assert no neuron is launched when waiting for args and none are given
|
|
# Assert no neuron is launched when waiting for args and none are given
|
|
- neuron4 = Neuron(name='neurone4', parameters={'var4': 'val4', 'args': ['arg5', 'arg6']})
|
|
|
|
- params = {}
|
|
|
|
- NeuronLauncher.start_neuron(neuron=neuron4,
|
|
|
|
- parameters_dict=params)
|
|
|
|
|
|
+ neuron4 = Neuron(name='neurone4', parameters={'var5': 'val5', 'var6': '{{val6}}'})
|
|
|
|
+
|
|
|
|
+ NeuronLauncher.start_neuron(neuron=neuron4)
|
|
mock_launch_neuron_method.assert_not_called()
|
|
mock_launch_neuron_method.assert_not_called()
|
|
mock_launch_neuron_method.reset_mock()
|
|
mock_launch_neuron_method.reset_mock()
|
|
|
|
|
|
|
|
+ def test_replace_brackets_by_loaded_parameter(self):
|
|
|
|
+ # -------------------
|
|
|
|
+ # test with string
|
|
|
|
+ # -------------------
|
|
|
|
+ # the target value to replace is present in the loaded parameter dict
|
|
|
|
+ neuron_parameters = {
|
|
|
|
+ "param1": "this is a value {{ replaced }}"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ loaded_parameters = {
|
|
|
|
+ "replaced": "replaced successfully"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ expected_result = {
|
|
|
|
+ "param1": "this is a value replaced successfully"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ self.assertEqual(expected_result, NeuronLauncher._replace_brackets_by_loaded_parameter(neuron_parameters,
|
|
|
|
+ loaded_parameters))
|
|
|
|
+
|
|
|
|
+ # the target value to replace is NOT present in the loaded parameter dict
|
|
|
|
+ neuron_parameters = {
|
|
|
|
+ "param1": "this is a value {{ replaced }}"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ loaded_parameters = {
|
|
|
|
+ "not_exist": "replaced successfully"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ with self.assertRaises(NeuronParameterNotAvailable):
|
|
|
|
+ NeuronLauncher._replace_brackets_by_loaded_parameter(neuron_parameters, loaded_parameters)
|
|
|
|
+
|
|
|
|
+ # one parameter doesn't contains bracket, the other one do
|
|
|
|
+ neuron_parameters = {
|
|
|
|
+ "param1": "this is a value {{ replaced }}",
|
|
|
|
+ "param2": "value"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ loaded_parameters = {
|
|
|
|
+ "replaced": "replaced successfully"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ expected_result = {
|
|
|
|
+ "param1": "this is a value replaced successfully",
|
|
|
|
+ "param2": "value"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ self.assertEqual(expected_result, NeuronLauncher._replace_brackets_by_loaded_parameter(neuron_parameters,
|
|
|
|
+ loaded_parameters))
|
|
|
|
+
|
|
|
|
+ # parameters are integer or boolean
|
|
|
|
+ neuron_parameters = {
|
|
|
|
+ "param1": 1,
|
|
|
|
+ "param2": True
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ loaded_parameters = {
|
|
|
|
+ "replaced": "replaced successfully"
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ expected_result = {
|
|
|
|
+ "param1": 1,
|
|
|
|
+ "param2": True
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ self.assertEqual(expected_result, NeuronLauncher._replace_brackets_by_loaded_parameter(neuron_parameters,
|
|
|
|
+ loaded_parameters))
|
|
|
|
+
|
|
|
|
+ def test_parameters_are_available_in_loaded_parameters(self):
|
|
|
|
+ # the parameter in bracket is available in the dict
|
|
|
|
+ string_parameters = "this is a {{ parameter1 }}"
|
|
|
|
+ loaded_parameters = {"parameter1": "value"}
|
|
|
|
+
|
|
|
|
+ self.assertTrue(NeuronLauncher._neuron_parameters_are_available_in_loaded_parameters(string_parameters,
|
|
|
|
+ loaded_parameters))
|
|
|
|
+
|
|
|
|
+ # the parameter in bracket is NOT available in the dict
|
|
|
|
+ string_parameters = "this is a {{ parameter1 }}"
|
|
|
|
+ loaded_parameters = {"parameter2": "value"}
|
|
|
|
+
|
|
|
|
+ self.assertFalse(NeuronLauncher._neuron_parameters_are_available_in_loaded_parameters(string_parameters,
|
|
|
|
+ loaded_parameters))
|
|
|
|
+
|
|
|
|
+ # the string_parameters doesn't contains bracket in bracket is available in the dict
|
|
|
|
+ string_parameters = "this is a {{ parameter1 }}"
|
|
|
|
+ loaded_parameters = {"parameter1": "value"}
|
|
|
|
+
|
|
|
|
+ self.assertTrue(NeuronLauncher._neuron_parameters_are_available_in_loaded_parameters(string_parameters,
|
|
|
|
+ loaded_parameters))
|
|
|
|
+
|
|
|
|
+ # the string_parameters contains 2 parameters available in the dict
|
|
|
|
+ string_parameters = "this is a {{ parameter1 }} and this is {{ parameter2 }}"
|
|
|
|
+ loaded_parameters = {"parameter1": "value", "parameter2": "other value"}
|
|
|
|
+
|
|
|
|
+ self.assertTrue(NeuronLauncher._neuron_parameters_are_available_in_loaded_parameters(string_parameters,
|
|
|
|
+ loaded_parameters))
|
|
|
|
+
|
|
|
|
+ # the string_parameters contains 2 parameters and one of them is not available in the dict
|
|
|
|
+ string_parameters = "this is a {{ parameter1 }} and this is {{ parameter2 }}"
|
|
|
|
+ loaded_parameters = {"parameter1": "value", "parameter3": "other value"}
|
|
|
|
+
|
|
|
|
+ self.assertFalse(NeuronLauncher._neuron_parameters_are_available_in_loaded_parameters(string_parameters,
|
|
|
|
+ loaded_parameters))
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+if __name__ == '__main__':
|
|
|
|
+ unittest.main()
|
|
|
|
|
|
|
|
+ # suite = unittest.TestSuite()
|
|
|
|
+ # suite.addTest(TestNeuronLauncher("test_start_neuron"))
|
|
|
|
+ # runner = unittest.TextTestRunner()
|
|
|
|
+ # runner.run(suite)
|