jdahlin - r7314 - in flumotion/trunk: . flumotion/manager flumotion/test

flumotion-commit at lists.fluendo.com flumotion-commit at lists.fluendo.com
Thu Aug 28 18:11:29 CEST 2008


Author: jdahlin
Date: Thu Aug 28 18:11:29 2008
New Revision: 7314

Log:
2008-08-28  Johan Dahlin  <johan at flumotion.com>

    * flumotion/manager/config.py:
    * flumotion/test/test_manager_config.py:
    Make sure multiple config properties are serialized property.
    Add a test.



Modified:
   flumotion/trunk/ChangeLog
   flumotion/trunk/flumotion/manager/config.py
   flumotion/trunk/flumotion/test/test_manager_config.py

Modified: flumotion/trunk/ChangeLog
==============================================================================
--- flumotion/trunk/ChangeLog	(original)
+++ flumotion/trunk/ChangeLog	Thu Aug 28 18:11:29 2008
@@ -1,3 +1,10 @@
+2008-08-28  Johan Dahlin  <johan at flumotion.com>
+
+	* flumotion/manager/config.py:
+	* flumotion/test/test_manager_config.py:
+	Make sure multiple config properties are serialized property.
+	Add a test.
+
 2008-08-28  Murray Cumming  <murrayc at murrayc.com>
 
 	* flumotion/component/consumers/disker/disker.glade: Start New File 

Modified: flumotion/trunk/flumotion/manager/config.py
==============================================================================
--- flumotion/trunk/flumotion/manager/config.py	(original)
+++ flumotion/trunk/flumotion/manager/config.py	Thu Aug 28 18:11:29 2008
@@ -834,13 +834,19 @@
 
         def serialise(propVal):
             if isinstance(propVal, tuple): # fractions are our only tuple type
-                return "%d/%d" % propVal
-            return propVal
+                return ["%d/%d" % propVal]
+            elif isinstance(propVal, list):
+                return propVal
+            else:
+                return [propVal]
         for name, value in properties:
             attrs = [('name', name)]
-            self.writeTag('property', attrs, serialise(value))
+            for value in serialise(value):
+                self.writeTag('property', attrs, value)
 
     def _writePlugs(self, plugs):
+        if not plugs:
+            return
         self.pushTag('plugs')
         for socket, plugs in plugs:
             for plug in plugs:

Modified: flumotion/trunk/flumotion/test/test_manager_config.py
==============================================================================
--- flumotion/trunk/flumotion/test/test_manager_config.py	(original)
+++ flumotion/trunk/flumotion/test/test_manager_config.py	Thu Aug 28 18:11:29 2008
@@ -24,7 +24,9 @@
 from flumotion.common import testsuite
 from flumotion.common.errors import ConfigError
 from flumotion.manager.config import ConfigEntryComponent, \
-     ConfigEntryManager, ManagerConfigParser, PlanetConfigParser
+     ConfigEntryManager, ManagerConfigParser, PlanetConfigParser, \
+     PlanetXMLWriter
+from flumotion.manager.manager import Vishnu
 
 
 def flatten(seq):
@@ -213,3 +215,55 @@
             '</component>')
         config = PlanetConfigParser(f)
         self.assertRaises(ConfigError, config.parse)
+
+
+class TestXMLWriter(testsuite.TestCase):
+
+    def testPlug(self):
+        xml = (
+            '<planet name="planet-name">\n'
+            '  \n'
+            '  <atmosphere>\n'
+            '    <component name="server"\n'
+            '               type="http-server"\n'
+            '               label="label"\n'
+            '               worker="worker"\n'
+            '               project="flumotion"\n'
+            '               version="1.0">\n'
+            '      <property name="type">slave</property>\n'
+            '      <plugs>\n'
+            '        <plug socket="flumotion.component.plugs.loggers.Logger" '
+            'type="apachelogger">\n'
+            '          <property name="logfile">foobar</property>\n'
+            '        </plug>\n'
+            '      </plugs>\n'
+            '    </component>\n'
+            '    \n'
+            '  </atmosphere>\n'
+            '  \n'
+            '</planet>\n')
+        vishnu = Vishnu('planet-name')
+        vishnu.loadComponentConfigurationXML(StringIO(xml), 'foo')
+        testsuite.diffStrings(xml, vishnu.getConfiguration())
+
+    def testMultiple(self):
+        xml = (
+            '<planet name="planet-name">\n'
+            '  \n'
+            '  <atmosphere>\n'
+            '    <component name="bouncer"\n'
+            '               type="ip-bouncer"\n'
+            '               label="label"\n'
+            '               worker="worker"\n'
+            '               project="flumotion"\n'
+            '               version="1.0">\n'
+            '      <property name="allow">A</property>\n'
+            '      <property name="allow">B</property>\n'
+            '    </component>\n'
+            '    \n'
+            '  </atmosphere>\n'
+            '  \n'
+            '</planet>\n')
+        vishnu = Vishnu('planet-name')
+        vishnu.loadComponentConfigurationXML(StringIO(xml), 'foo')
+        testsuite.diffStrings(xml, vishnu.getConfiguration())


More information about the flumotion-commit mailing list