test_dhcp.py
author Tero Marttila <terom@fixme.fi>
Thu, 02 Apr 2009 20:19:18 +0300
changeset 1 2223ade4f259
parent 0 257003279747
child 2 e66102ab7048
permissions -rwxr-xr-x
continue the overengineering effort, we are now able to generate dhcpd.conf files
1
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
     1
#!/usr/bin/env python2.5
0
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
"""
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
    Test conf_dhcp
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
"""
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
1
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
     6
import dhcp_conf as dhcpc, conf, addr
0
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
import unittest
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
from cStringIO import StringIO
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
class TestConfDHCP (unittest.TestCase) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    def assert_stmt (self, stmt, line) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
        """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
            Formats the given Statement, and compares the output against the given line
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
        """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
        
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
        self.assertEqual(stmt._fmt_data(), line)
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
    
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
    def test_statement (self) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
        self.assert_stmt(dhcpc.Statement("stmt0"),                           "stmt0")
1
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    21
        self.assert_stmt(dhcpc.Statement("stmt1", [ "this", "that" ]),       "stmt1 this, that")
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    22
        self.assert_stmt(dhcpc.Statement("stmt2", dhcpc.Literal("...")),     "stmt2 ...")
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    23
        self.assert_stmt(dhcpc.Statement("stmt3", u"quux"),                  "stmt3 quux")
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    24
        self.assert_stmt(dhcpc.Statement("stmt4", "bar"),                    "stmt4 bar")
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    25
        self.assert_stmt(dhcpc.Statement("stmt5", 1),                        "stmt5 1")
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    26
        self.assert_stmt(dhcpc.Statement("stmt6", 1, None, 2),               "stmt6 1 2")
0
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
 
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
    def assert_obj (self, obj, lines) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
        """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
            Formats the given conf.Object and compares the output against the given lines
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
        """
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
        self.assertEqual(list(obj.fmt_lines()), lines)
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
    
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
    def test_literal (self) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
        self.assert_obj(dhcpc.Literal("///"),                               [ "///" ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    def test_parameter (self) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
        self.assert_obj(dhcpc.Parameter("param0", "this", 13, "that"),      [ "param0 this 13 that;" ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
    
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
    def test_declaration (self) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
        self.assert_obj(dhcpc.Declaration("decl0", ["arg0", "arg1"], [
1
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    43
            dhcpc.Parameter("param0"),
2223ade4f259 continue the overengineering effort, we are now able to generate dhcpd.conf files
Tero Marttila <terom@fixme.fi>
parents: 0
diff changeset
    44
            None
0
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
        ], [
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
            dhcpc.Declaration("decl0.0", params=[
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
                dhcpc.Parameter("param0.0.1", "value")
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
            ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
        ]),  [
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
            
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
            "decl0 arg0 arg1 {",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
            "\tparam0;",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
            "\tdecl0.0 {",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
            "\t\tparam0.0.1 value;",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
            "\t}",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
            "}",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
        ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
    
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
    def test_shared_network (self) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
        self.assert_obj(dhcpc.SharedNetwork("net0", params=[
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
            dhcpc.Parameter("param0")
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
        ]), [
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
            "shared-network net0 {",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
            "\tparam0;",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
            "}"
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
        ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
    def test_subnet (self) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
        self.assert_obj(dhcpc.Subnet(addr.Network("194.197.235.0/24"), params=[
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
            dhcpc.Parameter("param0")
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
        ]), [
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
            "subnet 194.197.235.0 netmask 255.255.255.0 {",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
            "\tparam0;",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
            "}"
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
        ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
    def test_group (self) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
        self.assert_obj(dhcpc.Group(decls=[
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
            dhcpc.Declaration("decl0.0", params=[
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
                dhcpc.Parameter("param0.0.1", "value")
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
            ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
        ]), [
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
            "group {",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
            "\tdecl0.0 {",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
            "\t\tparam0.0.1 value;",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
            "\t}",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
            "}"
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
        ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
    
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
    def test_host (self) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
        self.assert_obj(dhcpc.Host("test-hostname", params=[
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
            dhcpc.Parameter("param0")
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
        ]), [
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
            "host test-hostname {",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
            "\tparam0;",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
            "}"
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
        ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
    def test_option (self) :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
        self.assert_obj(dhcpc.Option("foo", "example.com"), [
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
            "option foo example.com;",
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
        ])
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
    
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
if __name__ == '__main__' :
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
    unittest.main()
257003279747 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106