pvl/hosts/tests.py
changeset 739 5149c39f3dfc
parent 733 45bedeba92e5
child 740 74352351d6f5
--- a/pvl/hosts/tests.py	Mon Mar 09 23:31:13 2015 +0200
+++ b/pvl/hosts/tests.py	Tue Mar 10 00:11:43 2015 +0200
@@ -21,11 +21,23 @@
                 hosts_include_trace = None,
         )
 
+    def assertHostExtensionEquals(self, host, extension, value):
+        host_extension = host.extensions.get(extension)
+
+        self.assertIsNotNone(host_extension, (host, extension))
+
+        for attr, value in value.iteritems():
+            self.assertEquals(getattr(host_extension, attr), value, (host, extension, value))
+
     def assertHostEqual(self, host, host_str, attrs):
         self.assertEquals(str(host), host_str)
 
         for attr, value in attrs.iteritems():
-            self.assertEquals(getattr(host, attr), value)
+            if attr == 'extensions':
+                for extension, value in value.iteritems():
+                    self.assertHostExtensionEquals(host, extension, value)
+            else:
+                self.assertEquals(getattr(host, attr), value)
 
     def assertHostsEqual(self, hosts, expected):
         hosts = list(hosts)
@@ -75,18 +87,28 @@
  
 
     def testApplyHostConfigExtensions(self):
+        @pvl.hosts.host.register_extension
+        class HostLinkTest(pvl.hosts.host.HostExtension):
+            EXTENSION = 'link'
+
+            @classmethod
+            def build(cls, uplink, downlink):
+                obj = cls()
+                obj.uplink = uplink
+                obj.downlink = downlink
+
+                return obj
+
         host = config.apply_host('foo', 'test', {
-            'link:50':          'foo@test',
+            'link:downlink.50': 'foo@test',
             'link:uplink.49':   'bar@test',
         })
 
         self.assertHostEqual(host, 'foo@test', dict(
-                extensions = {
-                    'link': {
-                        '50': 'foo@test',
+                extensions = dict(link={
+                        'downlink': { '50': 'foo@test' },
                         'uplink': { '49': 'bar@test' },
-                    },
-                },
+                }),
         ))
    
     def testApplyHostFqdn(self):
@@ -155,7 +177,9 @@
                 ('foo@test', dict(
                     ip4         = ipaddr.IPAddress('192.0.2.1'),
                     ethernet    = { 'eth0': '00:11:22:33:44:55' },
-                    boot        = { 'next-server': 'boot.lan', 'filename': '/pxelinux.0' },
+                    extensions  = dict(
+                        dhcp        = { 'next_server': 'boot.lan', 'filename': '/pxelinux.0' }
+                    ),
                 )),
         ])