python 3.5 support
[tiramisu.git] / test / test_config_ip.py
1 from .autopath import do_autopath
2 do_autopath()
3
4 import warnings
5 from py.test import raises
6 from tiramisu.config import Config
7 from tiramisu.option import IPOption, NetworkOption, NetmaskOption, \
8     PortOption, BroadcastOption, OptionDescription
9 from tiramisu.error import ValueWarning
10
11
12 def test_ip():
13     a = IPOption('a', '')
14     b = IPOption('b', '', private_only=True)
15     d = IPOption('d', '', warnings_only=True, private_only=True)
16     warnings.simplefilter("always", ValueWarning)
17     od = OptionDescription('od', '', [a, b, d])
18     c = Config(od)
19     c.a = '192.168.1.1'
20     c.a = '192.168.1.0'
21     c.a = '88.88.88.88'
22     c.a = '0.0.0.0'
23     raises(ValueError, "c.a = '255.255.255.0'")
24     c.b = '192.168.1.1'
25     c.b = '192.168.1.0'
26     raises(ValueError, "c.b = '88.88.88.88'")
27     c.b = '0.0.0.0'
28     raises(ValueError, "c.b = '255.255.255.0'")
29     raises(ValueError, "c.a = '333.0.1.20'")
30
31     raises(ValueError, "IPOption('a', 'ip', default='192.000.023.01')")
32     with warnings.catch_warnings(record=True) as w:
33         c.d = '88.88.88.88'
34     assert len(w) == 1
35
36
37 def test_ip_default():
38     a = IPOption('a', '', '88.88.88.88')
39     od = OptionDescription('od', '', [a])
40     c = Config(od)
41     c.a == '88.88.88.88'
42
43
44 def test_ip_reserved():
45     a = IPOption('a', '')
46     b = IPOption('b', '', allow_reserved=True)
47     c = IPOption('c', '', warnings_only=True)
48     od = OptionDescription('od', '', [a, b, c])
49     warnings.simplefilter("always", ValueWarning)
50     cfg = Config(od)
51     raises(ValueError, "cfg.a = '226.94.1.1'")
52     cfg.b = '226.94.1.1'
53     with warnings.catch_warnings(record=True) as w:
54         cfg.c = '226.94.1.1'
55     assert len(w) == 1
56
57
58 def test_network():
59     a = NetworkOption('a', '')
60     b = NetworkOption('b', '', warnings_only=True)
61     od = OptionDescription('od', '', [a, b])
62     warnings.simplefilter("always", ValueWarning)
63     c = Config(od)
64     c.a = '192.168.1.1'
65     c.a = '192.168.1.0'
66     c.a = '88.88.88.88'
67     c.a = '0.0.0.0'
68     raises(ValueError, "c.a = 1")
69     raises(ValueError, "c.a = '1.1.1.1.1'")
70     raises(ValueError, "c.a = '255.255.255.0'")
71     raises(ValueError, "c.a = '192.168.001.0'")
72     raises(ValueError, "c.a = '333.168.1.1'")
73     with warnings.catch_warnings(record=True) as w:
74         c.b = '255.255.255.0'
75     assert len(w) == 1
76
77
78 def test_network_invalid():
79     raises(ValueError, "NetworkOption('a', '', default='toto')")
80
81
82 def test_netmask():
83     a = NetmaskOption('a', '')
84     od = OptionDescription('od', '', [a])
85     c = Config(od)
86     raises(ValueError, "c.a = '192.168.1.1.1'")
87     raises(ValueError, "c.a = '192.168.1.1'")
88     raises(ValueError, "c.a = '192.168.1.0'")
89     raises(ValueError, "c.a = '88.88.88.88'")
90     raises(ValueError, "c.a = '255.255.255.000'")
91     raises(ValueError, "c.a = 2")
92     c.a = '0.0.0.0'
93     c.a = '255.255.255.0'
94
95
96 def test_broadcast():
97     a = BroadcastOption('a', '')
98     od = OptionDescription('od', '', [a])
99     c = Config(od)
100     raises(ValueError, "c.a = '192.168.1.255.1'")
101     raises(ValueError, "c.a = '192.168.001.255'")
102     raises(ValueError, "c.a = '192.168.0.300'")
103     raises(ValueError, "c.a = 1")
104     raises(ValueError, "c.a = 2")
105     c.a = '0.0.0.0'
106     c.a = '255.255.255.0'
107
108
109 def test_port():
110     a = PortOption('a', '')
111     b = PortOption('b', '', allow_zero=True)
112     c = PortOption('c', '', allow_zero=True, allow_registred=False)
113     d = PortOption('d', '', allow_zero=True, allow_wellknown=False, allow_registred=False)
114     e = PortOption('e', '', allow_zero=True, allow_private=True)
115     f = PortOption('f', '', allow_private=True)
116     od = OptionDescription('od', '', [a, b, c, d, e, f])
117     c = Config(od)
118     raises(ValueError, "c.a = 0")
119     c.a = 1
120     c.a = 1023
121     c.a = 1024
122     c.a = 49151
123     raises(ValueError, "c.a = 49152")
124     raises(ValueError, "c.a = 65535")
125     raises(ValueError, "c.a = 65536")
126
127     c.b = 0
128     c.b = 1
129     c.b = 1023
130     c.b = 1024
131     c.b = 49151
132     raises(ValueError, "c.b = 49152")
133     raises(ValueError, "c.b = 65535")
134     raises(ValueError, "c.b = 65536")
135
136     c.c = 0
137     c.c = 1
138     c.c = 1023
139     raises(ValueError, "c.c = 1024")
140     raises(ValueError, "c.c = 49151")
141     raises(ValueError, "c.c = 49152")
142     raises(ValueError, "c.c = 65535")
143     raises(ValueError, "c.c = 65536")
144
145     c.d = 0
146     raises(ValueError, "c.d = 1")
147     raises(ValueError, "c.d = 1023")
148     raises(ValueError, "c.d = 1024")
149     raises(ValueError, "c.d = 49151")
150     raises(ValueError, "c.d = 49152")
151     raises(ValueError, "c.d = 65535")
152     raises(ValueError, "c.d = 65536")
153
154     c.e = 0
155     c.e = 1
156     c.e = 1023
157     c.e = 1024
158     c.e = 49151
159     c.e = 49152
160     c.e = 65535
161
162     raises(ValueError, "c.f = 0")
163     c.f = 1
164     c.f = 1023
165     c.f = 1024
166     c.f = 49151
167     c.f = 49152
168     c.f = 65535
169     raises(ValueError, "c.f = 65536")
170
171
172 def test_port_range():
173     a = PortOption('a', '', allow_range=True)
174     b = PortOption('b', '', allow_range=True, allow_zero=True)
175     c = PortOption('c', '', allow_range=True, allow_zero=True, allow_registred=False)
176     d = PortOption('d', '', allow_range=True, allow_zero=True, allow_wellknown=False, allow_registred=False)
177     e = PortOption('e', '', allow_range=True, allow_zero=True, allow_private=True)
178     f = PortOption('f', '', allow_range=True, allow_private=True)
179     od = OptionDescription('od', '', [a, b, c, d, e, f])
180     c = Config(od)
181     raises(ValueError, "c.a = 0")
182     c.a = 1
183     c.a = 1023
184     c.a = 1024
185     c.a = 49151
186     raises(ValueError, "c.a = 49152")
187     raises(ValueError, "c.a = 65535")
188     raises(ValueError, "c.a = 65536")
189     c.a = '1:49151'
190     raises(ValueError, "c.a = '0:49151'")
191     raises(ValueError, "c.a = '1:49152'")
192
193     c.b = 0
194     c.b = 1
195     c.b = 1023
196     c.b = 1024
197     c.b = 49151
198     raises(ValueError, "c.b = 49152")
199     raises(ValueError, "c.b = 65535")
200     raises(ValueError, "c.b = 65536")
201     c.b = '0:49151'
202     raises(ValueError, "c.b = '0:49152'")
203
204     c.c = 0
205     c.c = 1
206     c.c = 1023
207     raises(ValueError, "c.c = 1024")
208     raises(ValueError, "c.c = 49151")
209     raises(ValueError, "c.c = 49152")
210     raises(ValueError, "c.c = 65535")
211     raises(ValueError, "c.c = 65536")
212     c.c = '0:1023'
213     raises(ValueError, "c.c = '0:1024'")
214
215     c.d = 0
216     raises(ValueError, "c.d = 1")
217     raises(ValueError, "c.d = 1023")
218     raises(ValueError, "c.d = 1024")
219     raises(ValueError, "c.d = 49151")
220     raises(ValueError, "c.d = 49152")
221     raises(ValueError, "c.d = 65535")
222     raises(ValueError, "c.d = 65536")
223     raises(ValueError, "c.d = '0:0'")
224     raises(ValueError, "c.d = '0:1'")
225
226     c.e = 0
227     c.e = 1
228     c.e = 1023
229     c.e = 1024
230     c.e = 49151
231     c.e = 49152
232     c.e = 65535
233     c.e = '0:65535'
234     raises(ValueError, "c.e = '0:65536'")
235
236     raises(ValueError, "c.f = 0")
237     c.f = 1
238     c.f = 1023
239     c.f = 1024
240     c.f = 49151
241     c.f = 49152
242     c.f = 65535
243     raises(ValueError, "c.f = 65536")
244     c.f = '1:65535'
245     c.f = '3:4'
246     raises(ValueError, "c.f = '0:65535'")
247     raises(ValueError, "c.f = '4:3'")