def test_start_synapse(self): """ Test the Synapse launcher trying to start synapse """ # Init neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'}) neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2'}) neuron3 = Neuron(name='neurone3', parameters={'var3': 'val3'}) neuron4 = Neuron(name='neurone4', parameters={'var4': 'val4'}) signal1 = Order(sentence="this is the sentence") signal2 = Order(sentence="this is the second sentence") signal3 = Order(sentence="that is part of the third sentence") synapse1 = Synapse(name="Synapse1", neurons=[neuron1, neuron2], signals=[signal1]) synapse2 = Synapse(name="Synapse2", neurons=[neuron3, neuron4], signals=[signal2]) synapse3 = Synapse(name="Synapse3", neurons=[neuron2, neuron4], signals=[signal3]) all_synapse_list = [synapse1, synapse2, synapse3] br = Brain(synapses=all_synapse_list) sl = SettingLoader() r = Resources(neuron_folder="/var/tmp/test/resources") sl.settings.resources = r with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation" ) as mock_get_class_instantiation: # Success SynapseLauncher.start_synapse("Synapse1", brain=br) calls = [ mock.call(package_name="neurons", module_name=neuron1.name, parameters=neuron1.parameters, resources_dir='/var/tmp/test/resources'), mock.call(package_name="neurons", module_name=neuron2.name, parameters=neuron2.parameters, resources_dir='/var/tmp/test/resources') ] mock_get_class_instantiation.assert_has_calls(calls=calls) mock_get_class_instantiation.reset_mock() # Fail with self.assertRaises(SynapseNameNotFound): SynapseLauncher.start_synapse("Synapse4", brain=br)
def test_start_neuron(self): """ Test the Neuron Launcher trying to start a Neuron """ neuron = Neuron(name='neurone1', parameters={'var1': 'val1'}) sl = SettingLoader() resources = Resources(neuron_folder='/var/tmp/test/resources') sl.settings.resources = resources with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation" ) as mock_get_class_instantiation: NeuronLauncher.start_neuron(neuron=neuron) mock_get_class_instantiation.assert_called_once_with( package_name="neurons", module_name=neuron.name, parameters=neuron.parameters, resources_dir=sl.settings.resources.neuron_folder) mock_get_class_instantiation.reset_mock()
def test_run_synapse(self): """ Test to run a Synapse """ neuron1 = Neuron(name='neurone1', parameters={'var1': 'val1'}) neuron2 = Neuron(name='neurone2', parameters={'var2': 'val2'}) signal1 = Order(sentence="this is the sentence") synapse1 = Synapse(name="Synapse1", neurons=[neuron1, neuron2], signals=[signal1]) synapse_empty = Synapse(name="Synapse_empty", neurons=[], signals=[signal1]) sl = SettingLoader() resources = Resources(neuron_folder='/var/tmp/test/resources') sl.settings.resources = resources with mock.patch("kalliope.core.Utils.get_dynamic_class_instantiation" ) as mock_get_class_instantiation: SynapseLauncher._run_synapse(synapse=synapse1) calls = [ mock.call(package_name="neurons", module_name=neuron1.name, parameters=neuron1.parameters, resources_dir="/var/tmp/test/resources"), mock.call(package_name="neurons", module_name=neuron2.name, parameters=neuron2.parameters, resources_dir="/var/tmp/test/resources") ] mock_get_class_instantiation.assert_has_calls(calls=calls) mock_get_class_instantiation.reset_mock() # Do not any Neurons SynapseLauncher._run_synapse(synapse=synapse_empty) mock_get_class_instantiation.assert_not_called() mock_get_class_instantiation.reset_mock()
def _get_resources(settings): """ Return a resources object that contains path of third party modules :param settings: The YAML settings file :type settings: dict :return: the resource object :rtype: Resources :Example: resource_directory = cls._get_resource_dir(settings) .. seealso:: .. raises:: SettingNotFound, NullSettingException, SettingInvalidException .. warnings:: Class Method and Private """ try: resource_dir = settings["resource_directory"] logger.debug("Resource directory synapse: %s" % resource_dir) neuron_folder = None stt_folder = None tts_folder = None trigger_folder = None if "neuron" in resource_dir: neuron_folder = resource_dir["neuron"] if not os.path.exists(neuron_folder): raise SettingInvalidException( "The path %s does not exist on the system" % neuron_folder) if "stt" in resource_dir: stt_folder = resource_dir["stt"] if not os.path.exists(stt_folder): raise SettingInvalidException( "The path %s does not exist on the system" % stt_folder) if "tts" in resource_dir: tts_folder = resource_dir["tts"] if not os.path.exists(tts_folder): raise SettingInvalidException( "The path %s does not exist on the system" % tts_folder) if "trigger" in resource_dir: trigger_folder = resource_dir["trigger"] if not os.path.exists(trigger_folder): raise SettingInvalidException( "The path %s does not exist on the system" % trigger_folder) if neuron_folder is None \ and stt_folder is None \ and tts_folder is None \ and trigger_folder is None: raise SettingInvalidException( "No required folder has been provided in the setting resource_directory. " "Define : \'neuron\' or/and \'stt\' or/and \'tts\' or/and \'trigger\'" ) resource_object = Resources(neuron_folder=neuron_folder, stt_folder=stt_folder, tts_folder=tts_folder, trigger_folder=trigger_folder) except KeyError: logger.debug("Resource directory not found in settings") resource_object = None return resource_object