1 # Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
19 from nose.tools import eq_, ok_
21 from ryu.services.protocols.bgp.utils import validation
24 LOG = logging.getLogger(__name__)
27 class Test_Utils_Validation(unittest.TestCase):
29 Test case for ryu.services.protocols.bgp.utils.validation
32 def test_is_valid_mac(self):
33 ok_(validation.is_valid_mac('aa:bb:cc:dd:ee:ff'))
35 def test_is_valid_mac_hyphenation(self):
36 ok_(validation.is_valid_mac('aa-bb-cc-dd-ee-ff'))
38 def test_is_valid_mac_short(self):
39 eq_(False, validation.is_valid_mac('aa:bb:cc:dd:ee'))
41 def test_is_valid_ip_prefix(self):
42 ok_(validation.is_valid_ip_prefix(24, 32))
44 def test_is_valid_ip_prefix_str(self):
45 ok_(validation.is_valid_ip_prefix('24', 32))
47 def test_is_valid_ip_prefix_not_digit(self):
48 eq_(False, validation.is_valid_ip_prefix('foo', 32))
50 def test_is_valid_ip_prefix_over(self):
51 eq_(False, validation.is_valid_ip_prefix(100, 32))
53 def test_is_valid_ipv4(self):
54 ok_(validation.is_valid_ipv4('10.0.0.1'))
56 def test_is_valid_ipv4_not_dot(self):
57 eq_(False, validation.is_valid_ipv4('192:168:0:1'))
59 def test_is_valid_ipv4_prefix(self):
60 ok_(validation.is_valid_ipv4_prefix('10.0.0.1/24'))
62 def test_is_valid_ipv4_prefix_not_str(self):
63 eq_(False, validation.is_valid_ipv4_prefix(1234))
65 def test_is_valid_ipv4_prefix_without_prefix(self):
66 eq_(False, validation.is_valid_ipv4_prefix('10.0.0.1'))
68 def test_is_valid_ipv4_prefix_invalid_addr(self):
69 eq_(False, validation.is_valid_ipv4_prefix('xxx.xxx.xxx.xxx/24'))
71 def test_is_valid_ipv6(self):
72 ok_(validation.is_valid_ipv6('fe80::0011:aabb:ccdd:eeff'))
74 def test_is_valid_ipv6_not_colon(self):
75 eq_(False, validation.is_valid_ipv6('fe80--0011-aabb-ccdd-eeff'))
77 def test_is_valid_ipv6_prefix(self):
78 ok_(validation.is_valid_ipv6_prefix('fe80::0011:aabb:ccdd:eeff/64'))
80 def test_is_valid_ipv6_prefix_not_str(self):
81 eq_(False, validation.is_valid_ipv6_prefix(1234))
83 def test_is_valid_ipv6_prefix_without_prefix(self):
85 validation.is_valid_ipv6_prefix('fe80::0011:aabb:ccdd:eeff'))
87 def test_is_valid_ipv6_prefix_invalid_addr(self):
88 eq_(False, validation.is_valid_ipv6_prefix('xxxx::xxxx/64'))
90 def test_is_valid_old_asn(self):
91 ok_(validation.is_valid_old_asn(65000))
93 def test_is_valid_old_asn_negative(self):
94 eq_(False, validation.is_valid_old_asn(-1))
96 def test_is_valid_old_asn_over(self):
97 eq_(False, validation.is_valid_old_asn(0xffff + 1))
99 def test_is_valid_asn(self):
100 ok_(validation.is_valid_asn(6553800))
102 def test_is_valid_asn_old(self):
103 ok_(validation.is_valid_asn(65000))
105 def test_is_valid_asn_negative(self):
106 eq_(False, validation.is_valid_asn(-1))
108 def test_is_valid_asn_over(self):
109 eq_(False, validation.is_valid_asn(0xffffffff + 1))
111 def test_is_valid_vpnv4_prefix(self):
112 ok_(validation.is_valid_vpnv4_prefix('100:200:10.0.0.1/24'))
114 def test_is_valid_vpnv4_prefix_not_str(self):
115 eq_(False, validation.is_valid_vpnv4_prefix(1234))
117 def test_is_valid_vpnv4_prefix_short_rd(self):
118 eq_(False, validation.is_valid_vpnv4_prefix('100:10.0.0.1/24'))
120 def test_is_valid_vpnv4_prefix_invalid_rd(self):
121 eq_(False, validation.is_valid_vpnv4_prefix('foo:bar:10.0.0.1/24'))
123 def test_is_valid_vpnv6_prefix(self):
124 ok_(validation.is_valid_vpnv6_prefix(
125 '100:200:fe80::0011:aabb:ccdd:eeff/64'))
127 def test_is_valid_vpnv6_prefix_not_str(self):
128 eq_(False, validation.is_valid_vpnv6_prefix(1234))
130 def test_is_valid_vpnv6_prefix_short_rd(self):
131 eq_(False, validation.is_valid_vpnv6_prefix('100:eeff/64'))
133 def test_is_valid_vpnv6_prefix_invalid_rd(self):
134 eq_(False, validation.is_valid_vpnv6_prefix('foo:bar:10.0.0.1/24'))
136 def test_is_valid_med(self):
137 ok_(validation.is_valid_med(100))
139 def test_is_valid_med_not_num(self):
140 eq_(False, validation.is_valid_med('foo'))
142 def test_is_valid_med_negative(self):
143 eq_(False, validation.is_valid_med(-1))
145 def test_is_valid_med_over(self):
146 eq_(False, validation.is_valid_med(0xffffffff + 1))
148 def test_is_valid_mpls_label(self):
149 ok_(validation.is_valid_mpls_label(100))
151 def test_is_valid_mpls_label_reserved(self):
152 eq_(False, validation.is_valid_mpls_label(4))
154 def test_is_valid_mpls_label_not_num(self):
155 eq_(False, validation.is_valid_mpls_label('foo'))
157 def test_is_valid_mpls_label_negative(self):
158 eq_(False, validation.is_valid_mpls_label(-1))
160 def test_is_valid_mpls_label_over(self):
161 eq_(False, validation.is_valid_mpls_label(0x100000 + 1))
163 def test_is_valid_mpls_labels(self):
164 ok_(validation.is_valid_mpls_labels([100, 200]))
166 def test_is_valid_mpls_labels_not_list(self):
167 eq_(False, validation.is_valid_mpls_labels(100))
169 def test_is_valid_mpls_labels_with_invalid_label(self):
170 eq_(False, validation.is_valid_mpls_labels(['foo', 200]))
172 def test_is_valid_route_dist(self):
173 ok_(validation.is_valid_route_dist('65000:222'))
175 def test_is_valid_route_dist_ipv4_based(self):
176 ok_(validation.is_valid_route_dist('10.0.0.1:333'))
178 def test_is_valid_route_not_str(self):
179 eq_(False, validation.is_valid_route_dist(65000))
181 def test_is_valid_route_dist_short(self):
182 eq_(False, validation.is_valid_route_dist('65000'))
184 def test_is_valid_route_dist_invalid_ipv4_addr(self):
185 eq_(False, validation.is_valid_route_dist('xxx.xxx.xxx.xxx:333'))
187 def test_is_valid_esi(self):
188 ok_(validation.is_valid_esi(100))
190 def test_is_valid_esi_not_int(self):
191 eq_(False, validation.is_valid_esi('foo'))
193 def test_is_valid_ethernet_tag_id(self):
194 ok_(validation.is_valid_ethernet_tag_id(100))
196 def test_is_valid_ethernet_tag_id_not_int(self):
197 eq_(False, validation.is_valid_ethernet_tag_id('foo'))
199 def test_is_valid_ethernet_tag_id_negative(self):
200 eq_(False, validation.is_valid_ethernet_tag_id(-1))
202 def test_is_valid_ethernet_tag_id_over(self):
203 eq_(False, validation.is_valid_ethernet_tag_id(0xffffffff + 1))
205 def test_is_valid_vni(self):
206 ok_(validation.is_valid_vni(100))
208 def test_is_valid_vni_not_int(self):
209 eq_(False, validation.is_valid_vni('foo'))
211 def test_is_valid_vni_negative(self):
212 eq_(False, validation.is_valid_vni(-1))
214 def test_is_valid_vni_over(self):
215 eq_(False, validation.is_valid_vni(0xffffff + 1))