Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > dca483b59ba61f3fa092de932ddd570e > files > 965

nuface-2.0.14-2mdv2009.1.i586.rpm

#!/usr/bin/python
# -*- coding: utf8 -*-

from unittest import TestCase
from checkdesc.gen_desc import IpAddrParser, removeLocalAddresses, RouteParser
from checkdesc.parser import Address
from StringIO import StringIO

IPADDR_ETH0_LO = \
"""1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,10000> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:15:c5:aa:35:38 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.2/24 brd 192.168.0.255 scope global eth0
    inet 192.168.1.10/26 scope global eth0
    inet6 fe80::215:c5ff:feaa:3538/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:18:de:1e:c0:06 brd ff:ff:ff:ff:ff:ff"""

ROUTES_ETH0_LO = \
"""Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
192.168.33.128  0.0.0.0         255.255.255.128 U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
0.0.0.0         192.168.33.129  0.0.0.0         UG    0      0        0 eth0
"""

IPADDR_VENET0 = \
"""1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
3: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,10000> mtu 1500 qdisc noqueue
    link/void
    inet 127.0.0.1/32 scope host venet0
    inet 192.168.33.243/32 scope global venet0:0"""

MULTIPLE_ROUTES = \
"""
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
212.176.255.16  0.0.0.0         255.255.255.240 U     0      0        0 eth2
192.168.210.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.51.0.0       10.1.200.2      255.255.0.0     UG    0      0        0 eth0
10.1.0.0        0.0.0.0         255.255.0.0     U     0      0        0 eth0
10.6.0.0        10.1.200.253    255.255.0.0     UG    0      0        0 eth0
0.0.0.0         212.176.255.18  0.0.0.0         UG    0      0        0 eth2
"""

class IpAddr(TestCase):
    def testETH0(self):
        eth0 = {
            'name': "eth0",
            'addr': [Address('192.168.0.2/24', scope='global'), Address('192.168.1.10/26', scope='global')],
            'link': 'ether',
        }
        lo = {
            'name': "lo",
            'addr': [Address("127.0.0.1/8", scope='host')],
            'link': 'loopback',
        }

        parser = IpAddrParser(StringIO(IPADDR_ETH0_LO))
        interfaces = parser.interfaces
        self.assertEqual(interfaces, [lo, eth0])

        interfaces = self.filterInterfaces(parser.interfaces)
        self.assertEqual(interfaces, [eth0])

    def filterInterfaces(self, parser_interfaces):
        interfaces = []
        for interface in parser_interfaces:
            removeLocalAddresses(interface)
            if not interface['addr']:
                continue
            interfaces.append(interface)
        return interfaces

    def testVENET0(self):
        lo = {
            'name': "lo",
            'addr': [Address('127.0.0.1/8', scope='host')],
            'link': 'loopback',
        }
        venet0 = {
            'name': 'venet0',
            'addr': [
                Address('127.0.0.1/32', scope='host'),
                Address('192.168.33.243/32', scope='global')],
            'link': 'void',
        }
        venet0_skip = {
            'name': 'venet0',
             'addr': [Address('192.168.33.243/32', scope='global')],
            'link': 'void',
        }

        parser = IpAddrParser(StringIO(IPADDR_VENET0))
        interfaces = parser.interfaces
        self.assertEqual(interfaces, [lo, venet0])

        interfaces = self.filterInterfaces(parser.interfaces)
        self.assertEqual(interfaces, [venet0_skip])


class Route(TestCase):
    def testRouteParser(self):
        parser = RouteParser(StringIO(ROUTES_ETH0_LO))
        self.assertEqual(parser.routes, [
            {'dest': '192.168.33.128', 'genmask': '255.255.255.128', 'interface': 'eth0', 'gateway': '0.0.0.0'},
            {'dest': '169.254.0.0', 'genmask': '255.255.0.0', 'interface': 'eth0', 'gateway': '0.0.0.0'},
            {'dest': '0.0.0.0', 'genmask': '0.0.0.0', 'interface': 'eth0', 'gateway': '192.168.33.129'},
        ])

    def testMultiples(self):
        parser = RouteParser(StringIO(MULTIPLE_ROUTES))
        self.assertEqual(parser.routes, [
            {'dest': '212.176.255.16', 'genmask': '255.255.255.240', 'interface': 'eth2', 'gateway': '0.0.0.0'},
            {'dest': '192.168.210.0', 'genmask': '255.255.255.0', 'interface': 'eth1', 'gateway': '0.0.0.0'},
            {'dest': '10.51.0.0', 'genmask': '255.255.0.0', 'interface': 'eth0', 'gateway': '10.1.200.2'},
            {'dest': '10.1.0.0', 'genmask': '255.255.0.0', 'interface': 'eth0', 'gateway': '0.0.0.0'},
            {'dest': '10.6.0.0', 'genmask': '255.255.0.0', 'interface': 'eth0', 'gateway': '10.1.200.253'},
            {'dest': '0.0.0.0', 'genmask': '0.0.0.0', 'interface': 'eth2', 'gateway': '212.176.255.18'},
        ])

if __name__ == "__main__":
    from unittest import main
    main()