From 247f908ac833309c546c3c45bfdad2b72128386b Mon Sep 17 00:00:00 2001
From: Kenny Sharma <kenny.sharma@tum.de>
Date: Tue, 28 Mar 2017 13:04:28 +0200
Subject: [PATCH] [NRRPLT-4884] Load brain file for frontend.

The CLE no longer loads the brain module in terms of PyNN, but it
still needs to load the brain file source for the frontend to display.

Change-Id: I3cd7833387f6e542a05a29e651b38cf2031b6c54
---
 .../cle/MUSICPyNNControlAdapter.py                |  6 ++++++
 .../tests/cle/test_control_adapter.py             | 15 ++++++++++++---
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/hbp_nrp_music_interface/hbp_nrp_music_interface/cle/MUSICPyNNControlAdapter.py b/hbp_nrp_music_interface/hbp_nrp_music_interface/cle/MUSICPyNNControlAdapter.py
index ded51a7..ca649d6 100644
--- a/hbp_nrp_music_interface/hbp_nrp_music_interface/cle/MUSICPyNNControlAdapter.py
+++ b/hbp_nrp_music_interface/hbp_nrp_music_interface/cle/MUSICPyNNControlAdapter.py
@@ -28,6 +28,12 @@ class MUSICPyNNControlAdapter(PyNNControlAdapter):
         """
         self.__load_music_brain_proxies(**populations)
 
+        # load the brain source for the frontend to display, copied from parent class
+        logger.info("Saving brain source")
+        import hbp_nrp_cle.tf_framework.config as tf_config
+        with open(network_file) as source:
+            tf_config.brain_source = source.read()
+
     @staticmethod
     def __load_music_brain_proxies(**populations):
         """
diff --git a/hbp_nrp_music_interface/hbp_nrp_music_interface/tests/cle/test_control_adapter.py b/hbp_nrp_music_interface/hbp_nrp_music_interface/tests/cle/test_control_adapter.py
index 16c5a8a..098ef3f 100644
--- a/hbp_nrp_music_interface/hbp_nrp_music_interface/tests/cle/test_control_adapter.py
+++ b/hbp_nrp_music_interface/hbp_nrp_music_interface/tests/cle/test_control_adapter.py
@@ -1,8 +1,9 @@
 import unittest
 
 from hbp_nrp_music_interface.cle.MUSICPyNNControlAdapter import MUSICPyNNControlAdapter
+import hbp_nrp_cle.tf_framework.config as tf_config
 
-from mock import Mock, patch
+from mock import Mock, patch, mock_open
 import os
 
 
@@ -22,9 +23,17 @@ class TestControlAdapter(unittest.TestCase):
       @patch('os.environ.get', return_value='')
       @patch('hbp_nrp_music_interface.cle.MUSICBrainLoader.load_proxies_from_xml')
       def test_valid_xml(self, mocked_setup, mocked_environ, mocked_load):
-          mc = MUSICPyNNControlAdapter()
-          mc.load_brain('foo.xml')
+        
+          m = mock_open()
+          m.return_value.read.return_value = 'mock brain source'
+
+          with patch('__builtin__.open', m, create=True):
+              mc = MUSICPyNNControlAdapter()
+              mc.load_brain('foo.xml')
+
           mocked_environ.assert_called_once_with('NRP_MUSIC_DIRECTORY')
+          m.assert_called_once_with('foo.xml')
+          self.assertEquals(tf_config.brain_source, 'mock brain source')
 
 if __name__ == "__main__":
     unittest.main()
-- 
GitLab