blob: 724453f5aa7174008a55ee47a14cf3af51c77b30 [file] [log] [blame]
A R Karthicke237aee2016-12-01 17:46:43 -08001#
A R Karthick07608ef2016-08-23 16:51:19 -07002# Copyright 2016-present Ciena Corporation
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
A R Karthicke237aee2016-12-01 17:46:43 -08007#
A R Karthick07608ef2016-08-23 16:51:19 -07008# http://www.apache.org/licenses/LICENSE-2.0
A R Karthicke237aee2016-12-01 17:46:43 -08009#
A R Karthick07608ef2016-08-23 16:51:19 -070010# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
A R Karthickb7e80902016-05-17 09:38:31 -070016import unittest
17from nose.tools import *
18from nose.twistedtools import reactor, deferred
19from twisted.internet import defer
A.R Karthick401a1ed2017-05-18 11:08:27 -070020from scapy.all import IP
A R Karthickb7e80902016-05-17 09:38:31 -070021import time, monotonic
22import os, sys
23import tempfile
24import random
25import threading
26import json
A R Karthick65c4d722016-07-18 14:20:17 -070027import requests
A R Karthickb7e80902016-05-17 09:38:31 -070028from Stats import Stats
29from OnosCtrl import OnosCtrl
30from DHCP import DHCPTest
31from EapTLS import TLSAuthTest
32from Channels import Channels, IgmpChannel
33from subscriberDb import SubscriberDB
34from threadPool import ThreadPool
A.R Karthick95d044e2016-06-10 18:44:36 -070035from portmaps import g_subscriber_port_map
A R Karthickb7e80902016-05-17 09:38:31 -070036from OltConfig import *
A R Karthicka013a272016-08-16 16:40:19 -070037from CordTestServer import cord_test_onos_restart, cord_test_shell
A R Karthick76a497a2017-04-12 10:59:39 -070038from CordTestUtils import log_test
A R Karthick9313b762016-11-07 13:14:35 -080039from CordLogger import CordLogger
A R Karthickb7e80902016-05-17 09:38:31 -070040
A R Karthick76a497a2017-04-12 10:59:39 -070041log_test.setLevel('INFO')
A R Karthickb7e80902016-05-17 09:38:31 -070042
43class Subscriber(Channels):
44 PORT_TX_DEFAULT = 2
45 PORT_RX_DEFAULT = 1
46 INTF_TX_DEFAULT = 'veth2'
47 INTF_RX_DEFAULT = 'veth0'
48 STATS_RX = 0
49 STATS_TX = 1
50 STATS_JOIN = 2
51 STATS_LEAVE = 3
52 SUBSCRIBER_SERVICES = 'DHCP IGMP TLS'
53 def __init__(self, name = 'sub', service = SUBSCRIBER_SERVICES, port_map = None,
54 num = 1, channel_start = 0,
55 tx_port = PORT_TX_DEFAULT, rx_port = PORT_RX_DEFAULT,
56 iface = INTF_RX_DEFAULT, iface_mcast = INTF_TX_DEFAULT,
57 mcast_cb = None, loginType = 'wireless'):
58 self.tx_port = tx_port
59 self.rx_port = rx_port
60 self.port_map = port_map or g_subscriber_port_map
61 try:
62 self.tx_intf = self.port_map[tx_port]
63 self.rx_intf = self.port_map[rx_port]
64 except:
65 self.tx_intf = self.port_map[self.PORT_TX_DEFAULT]
66 self.rx_intf = self.port_map[self.PORT_RX_DEFAULT]
67
A R Karthick76a497a2017-04-12 10:59:39 -070068 log_test.info('Subscriber %s, rx interface %s, uplink interface %s' %(name, self.rx_intf, self.tx_intf))
A.R Karthick95d044e2016-06-10 18:44:36 -070069 Channels.__init__(self, num, channel_start = channel_start,
A R Karthickb7e80902016-05-17 09:38:31 -070070 iface = self.rx_intf, iface_mcast = self.tx_intf, mcast_cb = mcast_cb)
71 self.name = name
72 self.service = service
73 self.service_map = {}
74 services = self.service.strip().split(' ')
75 for s in services:
76 self.service_map[s] = True
77 self.loginType = loginType
78 ##start streaming channels
79 self.join_map = {}
80 ##accumulated join recv stats
81 self.join_rx_stats = Stats()
A R Karthick338268f2016-06-21 17:12:13 -070082 self.recv_timeout = False
A R Karthickb7e80902016-05-17 09:38:31 -070083
84 def has_service(self, service):
85 if self.service_map.has_key(service):
86 return self.service_map[service]
87 if self.service_map.has_key(service.upper()):
88 return self.service_map[service.upper()]
89 return False
90
91 def channel_join_update(self, chan, join_time):
92 self.join_map[chan] = ( Stats(), Stats(), Stats(), Stats() )
93 self.channel_update(chan, self.STATS_JOIN, 1, t = join_time)
94
95 def channel_join(self, chan = 0, delay = 2):
96 '''Join a channel and create a send/recv stats map'''
97 if self.join_map.has_key(chan):
98 del self.join_map[chan]
99 self.delay = delay
100 chan, join_time = self.join(chan)
101 self.channel_join_update(chan, join_time)
102 return chan
103
A.R Karthick517f7812017-05-18 11:22:46 -0700104 def channel_join_next(self, delay = 2, leave_flag = True):
A R Karthickb7e80902016-05-17 09:38:31 -0700105 '''Joins the next channel leaving the last channel'''
106 if self.last_chan:
107 if self.join_map.has_key(self.last_chan):
108 del self.join_map[self.last_chan]
109 self.delay = delay
A.R Karthick517f7812017-05-18 11:22:46 -0700110 chan, join_time = self.join_next(leave_flag = leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700111 self.channel_join_update(chan, join_time)
112 return chan
113
114 def channel_jump(self, delay = 2):
115 '''Jumps randomly to the next channel leaving the last channel'''
116 if self.last_chan is not None:
117 if self.join_map.has_key(self.last_chan):
118 del self.join_map[self.last_chan]
119 self.delay = delay
120 chan, join_time = self.jump()
121 self.channel_join_update(chan, join_time)
122 return chan
123
124 def channel_leave(self, chan = 0):
125 if self.join_map.has_key(chan):
126 del self.join_map[chan]
127 self.leave(chan)
128
129 def channel_update(self, chan, stats_type, packets, t=0):
130 if type(chan) == type(0):
131 chan_list = (chan,)
132 else:
133 chan_list = chan
A.R Karthick95d044e2016-06-10 18:44:36 -0700134 for c in chan_list:
A R Karthickb7e80902016-05-17 09:38:31 -0700135 if self.join_map.has_key(c):
136 self.join_map[c][stats_type].update(packets = packets, t = t)
137
A R Karthick338268f2016-06-21 17:12:13 -0700138 def channel_receive(self, chan, cb = None, count = 1, timeout = 5):
A R Karthick76a497a2017-04-12 10:59:39 -0700139 log_test.info('Subscriber %s on port %s receiving from group %s, channel %d' %
A R Karthick338268f2016-06-21 17:12:13 -0700140 (self.name, self.rx_intf, self.gaddr(chan), chan))
141 r = self.recv(chan, cb = cb, count = count, timeout = timeout)
A R Karthicka013a272016-08-16 16:40:19 -0700142 if len(r) == 0:
A R Karthick76a497a2017-04-12 10:59:39 -0700143 log_test.info('Subscriber %s on port %s timed out' %(self.name, self.rx_intf))
A R Karthicka013a272016-08-16 16:40:19 -0700144 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700145 log_test.info('Subscriber %s on port %s received %d packets' %(self.name, self.rx_intf, len(r)))
A R Karthick338268f2016-06-21 17:12:13 -0700146 if self.recv_timeout:
147 ##Negative test case is disabled for now
148 assert_equal(len(r), 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700149
150 def recv_channel_cb(self, pkt):
151 ##First verify that we have received the packet for the joined instance
A R Karthick76a497a2017-04-12 10:59:39 -0700152 log_test.info('Packet received for group %s, subscriber %s, port %s' %
A R Karthick338268f2016-06-21 17:12:13 -0700153 (pkt[IP].dst, self.name, self.rx_intf))
154 if self.recv_timeout:
155 return
A R Karthickb7e80902016-05-17 09:38:31 -0700156 chan = self.caddr(pkt[IP].dst)
157 assert_equal(chan in self.join_map.keys(), True)
158 recv_time = monotonic.monotonic() * 1000000
159 join_time = self.join_map[chan][self.STATS_JOIN].start
160 delta = recv_time - join_time
161 self.join_rx_stats.update(packets=1, t = delta, usecs = True)
162 self.channel_update(chan, self.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700163 log_test.debug('Packet received in %.3f usecs for group %s after join' %(delta, pkt[IP].dst))
A R Karthickb7e80902016-05-17 09:38:31 -0700164
165class subscriber_pool:
166
167 def __init__(self, subscriber, test_cbs):
168 self.subscriber = subscriber
169 self.test_cbs = test_cbs
170
171 def pool_cb(self):
172 for cb in self.test_cbs:
173 if cb:
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700174 self.test_status = cb(self.subscriber)
175 if self.test_status is not True:
176 ## This is chaning for other sub status has to check again
177 self.test_status = True
A R Karthick76a497a2017-04-12 10:59:39 -0700178 log_test.info('This service is failed and other services will not run for this subscriber')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700179 break
A R Karthick76a497a2017-04-12 10:59:39 -0700180 log_test.info('This Subscriber is tested for multiple service eligibility ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700181 self.test_status = True
182
A.R Karthick95d044e2016-06-10 18:44:36 -0700183
A R Karthick9313b762016-11-07 13:14:35 -0800184class subscriber_exchange(CordLogger):
A R Karthickb7e80902016-05-17 09:38:31 -0700185
A.R Karthick95d044e2016-06-10 18:44:36 -0700186 apps = ('org.opencord.aaa', 'org.onosproject.dhcp')
187 olt_apps = () #'org.opencord.cordmcast')
A R Karthicka013a272016-08-16 16:40:19 -0700188 vtn_app = 'org.opencord.vtn'
A R Karthickb7e80902016-05-17 09:38:31 -0700189 table_app = 'org.ciena.cordigmp'
190 dhcp_server_config = {
191 "ip": "10.1.11.50",
192 "mac": "ca:fe:ca:fe:ca:fe",
193 "subnet": "255.255.252.0",
194 "broadcast": "10.1.11.255",
195 "router": "10.1.8.1",
196 "domain": "8.8.8.8",
197 "ttl": "63",
198 "delay": "2",
199 "startip": "10.1.11.51",
200 "endip": "10.1.11.100"
201 }
202
203 aaa_loaded = False
204 test_path = os.path.dirname(os.path.realpath(__file__))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700205 table_app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-multitable-2.0-SNAPSHOT.oar')
206 app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-2.0-SNAPSHOT.oar')
A R Karthickb7e80902016-05-17 09:38:31 -0700207 onos_config_path = os.path.join(test_path, '..', 'setup/onos-config')
A.R Karthick5968e0d2017-05-16 14:50:46 -0700208 olt_conf_file = os.getenv('OLT_CONFIG_FILE', os.path.join(test_path, '..', 'setup/olt_config.json'))
A R Karthickb7e80902016-05-17 09:38:31 -0700209 cpqd_path = os.path.join(test_path, '..', 'setup')
210 ovs_path = cpqd_path
A R Karthick65c4d722016-07-18 14:20:17 -0700211 test_services = ('IGMP', 'TRAFFIC')
A R Karthick338268f2016-06-21 17:12:13 -0700212 num_joins = 0
213 num_subscribers = 0
A.R Karthick517f7812017-05-18 11:22:46 -0700214 leave_flag = True
A R Karthick338268f2016-06-21 17:12:13 -0700215 num_channels = 0
216 recv_timeout = False
A R Karthick4e0c0912016-08-17 16:57:42 -0700217 onos_restartable = bool(int(os.getenv('ONOS_RESTART', 0)))
A R Karthickb7e80902016-05-17 09:38:31 -0700218
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700219 INTF_TX_DEFAULT = 'veth2'
220 INTF_RX_DEFAULT = 'veth0'
221 SUBSCRIBER_TIMEOUT = 300
222
223 CLIENT_CERT = """-----BEGIN CERTIFICATE-----
224MIICuDCCAiGgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
225CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
226IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
227RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwNjA2MjExMjI3WhcN
228MTcwNjAxMjExMjI3WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
229BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
230hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
231gYEAwvXiSzb9LZ6c7uNziUfKvoHO7wu/uiFC5YUpXbmVGuGZizbVrny0xnR85Dfe
232+9R4diansfDhIhzOUl1XjN3YDeSS9OeF5YWNNE8XDhlz2d3rVzaN6hIhdotBkUjg
233rUewjTg5OFR31QEyG3v8xR3CLgiE9xQELjZbSA07pD79zuUCAwEAAaNPME0wEwYD
234VR0lBAwwCgYIKwYBBQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5l
235eGFtcGxlLmNvbS9leGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOBgQDAjkrY
2366tDChmKbvr8w6Du/t8vHjTCoCIocHTN0qzWOeb1YsAGX89+TrWIuO1dFyYd+Z0KC
237PDKB5j/ygml9Na+AklSYAVJIjvlzXKZrOaPmhZqDufi+rXWti/utVqY4VMW2+HKC
238nXp37qWeuFLGyR1519Y1d6F/5XzqmvbwURuEug==
239-----END CERTIFICATE-----"""
240
241 CLIENT_CERT_INVALID = '''-----BEGIN CERTIFICATE-----
242MIIDvTCCAqWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
243CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
244IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
245RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwMzExMTg1MzM2WhcN
246MTcwMzA2MTg1MzM2WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
247BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
248hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
249AQoCggEBAOxemcBsPn9tZsCa5o2JA6sQDC7A6JgCNXXl2VFzKLNNvB9PS6D7ZBsQ
2505An0zEDMNzi51q7lnrYg1XyiE4S8FzMGAFr94RlGMQJUbRD9V/oqszMX4k++iAOK
251tIA1gr3x7Zi+0tkjVSVzXTmgNnhChAamdMsjYUG5+CY9WAicXyy+VEV3zTphZZDR
252OjcjEp4m/TSXVPYPgYDXI40YZKX5BdvqykWtT/tIgZb48RS1NPyN/XkCYzl3bv21
253qx7Mc0fcEbsJBIIRYTUkfxnsilcnmLxSYO+p+DZ9uBLBzcQt+4Rd5pLSfi21WM39
2542Z2oOi3vs/OYAPAqgmi2JWOv3mePa/8CAwEAAaNPME0wEwYDVR0lBAwwCgYIKwYB
255BQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5leGFtcGxlLmNvbS9l
256eGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOCAQEALBzMPDTIB6sLyPl0T6JV
257MjOkyldAVhXWiQsTjaGQGJUUe1cmUJyZbUZEc13MygXMPOM4x7z6VpXGuq1c/Vxn
258VzQ2fNnbJcIAHi/7G8W5/SQfPesIVDsHTEc4ZspPi5jlS/MVX3HOC+BDbOjdbwqP
259RX0JEr+uOyhjO+lRxG8ilMRACoBUbw1eDuVDoEBgErSUC44pq5ioDw2xelc+Y6hQ
260dmtYwfY0DbvwxHtA495frLyPcastDiT/zre7NL51MyUDPjjYjghNQEwvu66IKbQ3
261T1tJBrgI7/WI+dqhKBFolKGKTDWIHsZXQvZ1snGu/FRYzg1l+R/jT8cRB9BDwhUt
262yg==
263-----END CERTIFICATE-----'''
264
A R Karthickb7e80902016-05-17 09:38:31 -0700265 @classmethod
A R Karthickd44cea12016-07-20 12:16:41 -0700266 def load_device_id(cls):
A R Karthickb03cecd2016-07-27 10:27:55 -0700267 '''Configure the device id'''
268 did = OnosCtrl.get_device_id()
A R Karthickd44cea12016-07-20 12:16:41 -0700269 #Set the default config
270 cls.device_id = did
271 cls.device_dict = { "devices" : {
272 "{}".format(did) : {
273 "basic" : {
274 "driver" : "pmc-olt"
275 }
276 }
277 },
278 }
279 return did
280
281 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700282 def setUpClass(cls):
283 '''Load the OLT config and activate relevant apps'''
A R Karthick0f6b6842016-12-06 17:17:44 -0800284 dids = OnosCtrl.get_device_ids()
285 device_map = {}
286 for did in dids:
287 device_map[did] = { 'basic' : { 'driver' : 'pmc-olt' } }
288 network_cfg = {}
289 network_cfg = { 'devices' : device_map }
A R Karthick4b72d4b2016-06-15 11:09:17 -0700290 ## Restart ONOS with cpqd driver config for OVS
291 cls.start_onos(network_cfg = network_cfg)
A R Karthickb7e80902016-05-17 09:38:31 -0700292 cls.install_app_table()
A R Karthickb7e80902016-05-17 09:38:31 -0700293 cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
A R Karthick0f6b6842016-12-06 17:17:44 -0800294 OnosCtrl.cord_olt_config(cls.olt)
A R Karthickb03cecd2016-07-27 10:27:55 -0700295 cls.port_map, cls.port_list = cls.olt.olt_port_map()
A R Karthick0f6b6842016-12-06 17:17:44 -0800296 cls.switches = cls.port_map['switches']
297 cls.num_ports = cls.port_map['num_ports']
298 if cls.num_ports > 1:
299 cls.num_ports -= 1 ##account for the tx port
A R Karthickb7e80902016-05-17 09:38:31 -0700300 cls.activate_apps(cls.apps + cls.olt_apps)
301
302 @classmethod
303 def tearDownClass(cls):
304 '''Deactivate the olt apps and restart OVS back'''
305 apps = cls.olt_apps + ( cls.table_app,)
306 for app in apps:
307 onos_ctrl = OnosCtrl(app)
308 onos_ctrl.deactivate()
A R Karthicke0f33fa2016-06-22 13:36:02 -0700309 cls.start_onos(network_cfg = {})
A R Karthicke5939f02016-11-16 12:08:07 -0800310 cls.install_app_igmp()
A R Karthickb7e80902016-05-17 09:38:31 -0700311
312 @classmethod
313 def activate_apps(cls, apps):
314 for app in apps:
315 onos_ctrl = OnosCtrl(app)
316 status, _ = onos_ctrl.activate()
317 assert_equal(status, True)
318 time.sleep(2)
319
320 @classmethod
321 def install_app_table(cls):
322 ##Uninstall the existing app if any
323 OnosCtrl.uninstall_app(cls.table_app)
324 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700325 log_test.info('Installing the multi table app %s for subscriber test' %(cls.table_app_file))
A R Karthickb7e80902016-05-17 09:38:31 -0700326 OnosCtrl.install_app(cls.table_app_file)
327 time.sleep(3)
A R Karthickedab01c2016-09-08 14:05:44 -0700328 #onos_ctrl = OnosCtrl(cls.vtn_app)
329 #onos_ctrl.deactivate()
A R Karthickb7e80902016-05-17 09:38:31 -0700330
331 @classmethod
A R Karthicke5939f02016-11-16 12:08:07 -0800332 def install_app_igmp(cls):
A R Karthickb7e80902016-05-17 09:38:31 -0700333 ##Uninstall the table app on class exit
334 OnosCtrl.uninstall_app(cls.table_app)
335 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700336 log_test.info('Installing back the cord igmp app %s for subscriber test on exit' %(cls.app_file))
A R Karthickb7e80902016-05-17 09:38:31 -0700337 OnosCtrl.install_app(cls.app_file)
A R Karthickedab01c2016-09-08 14:05:44 -0700338 #onos_ctrl = OnosCtrl(cls.vtn_app)
339 #onos_ctrl.activate()
A R Karthickb7e80902016-05-17 09:38:31 -0700340
341 @classmethod
342 def start_onos(cls, network_cfg = None):
A R Karthicka478df42016-07-27 16:51:08 -0700343 if cls.onos_restartable is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700344 log_test.info('ONOS restart is disabled. Skipping ONOS restart')
A R Karthick65c4d722016-07-18 14:20:17 -0700345 return
A R Karthickb7e80902016-05-17 09:38:31 -0700346 if network_cfg is None:
A R Karthick4b72d4b2016-06-15 11:09:17 -0700347 network_cfg = cls.device_dict
A R Karthickb7e80902016-05-17 09:38:31 -0700348
349 if type(network_cfg) is tuple:
350 res = []
351 for v in network_cfg:
352 res += v.items()
353 config = dict(res)
354 else:
355 config = network_cfg
A R Karthick76a497a2017-04-12 10:59:39 -0700356 log_test.info('Restarting ONOS with new network configuration')
A R Karthick338268f2016-06-21 17:12:13 -0700357 return cord_test_onos_restart(config = config)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700358
359 @classmethod
360 def remove_onos_config(cls):
361 try:
362 os.unlink('{}/network-cfg.json'.format(cls.onos_config_path))
363 except: pass
A R Karthickb7e80902016-05-17 09:38:31 -0700364
365 @classmethod
366 def start_cpqd(cls, mac = '00:11:22:33:44:55'):
367 dpid = mac.replace(':', '')
368 cpqd_file = os.sep.join( (cls.cpqd_path, 'cpqd.sh') )
369 cpqd_cmd = '{} {}'.format(cpqd_file, dpid)
370 ret = os.system(cpqd_cmd)
371 assert_equal(ret, 0)
372 time.sleep(10)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700373 device_id = 'of:{}{}'.format('0'*4, dpid)
374 return device_id
A R Karthickb7e80902016-05-17 09:38:31 -0700375
376 @classmethod
377 def start_ovs(cls):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700378 ovs_file = os.sep.join( (cls.ovs_path, 'of-bridge.sh') )
A R Karthickb7e80902016-05-17 09:38:31 -0700379 ret = os.system(ovs_file)
380 assert_equal(ret, 0)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700381 time.sleep(30)
A R Karthickb7e80902016-05-17 09:38:31 -0700382
A R Karthicka013a272016-08-16 16:40:19 -0700383 @classmethod
384 def ovs_cleanup(cls):
385 ##For every test case, delete all the OVS groups
386 cmd = 'ovs-ofctl del-groups br-int -OOpenFlow11 >/dev/null 2>&1'
A R Karthicka013a272016-08-16 16:40:19 -0700387 try:
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700388 cord_test_shell(cmd)
389 ##Since olt config is used for this test, we just fire a careless local cmd as well
A R Karthicka013a272016-08-16 16:40:19 -0700390 os.system(cmd)
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700391 finally:
392 return
A R Karthicka013a272016-08-16 16:40:19 -0700393
A R Karthickb7e80902016-05-17 09:38:31 -0700394 def onos_aaa_load(self):
395 if self.aaa_loaded:
396 return
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700397 aaa_dict = {'apps' : { 'org.opencord.aaa' : { 'AAA' : { 'radiusSecret': 'radius_password',
398 'radiusIp': '172.17.0.2' } } } }
A R Karthickb7e80902016-05-17 09:38:31 -0700399 radius_ip = os.getenv('ONOS_AAA_IP') or '172.17.0.2'
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700400 aaa_dict['apps']['org.opencord.aaa']['AAA']['radiusIp'] = radius_ip
401 self.onos_load_config('org.opencord.aaa', aaa_dict)
A R Karthickb7e80902016-05-17 09:38:31 -0700402 self.aaa_loaded = True
403
404 def onos_dhcp_table_load(self, config = None):
405 dhcp_dict = {'apps' : { 'org.onosproject.dhcp' : { 'dhcp' : copy.copy(self.dhcp_server_config) } } }
406 dhcp_config = dhcp_dict['apps']['org.onosproject.dhcp']['dhcp']
407 if config:
408 for k in config.keys():
409 if dhcp_config.has_key(k):
410 dhcp_config[k] = config[k]
411 self.onos_load_config('org.onosproject.dhcp', dhcp_dict)
412
413 def onos_load_config(self, app, config):
414 status, code = OnosCtrl.config(config)
415 if status is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700416 log_test.info('JSON config request for app %s returned status %d' %(app, code))
A R Karthickb7e80902016-05-17 09:38:31 -0700417 assert_equal(status, True)
418 time.sleep(2)
419
420 def dhcp_sndrcv(self, dhcp, update_seed = False):
421 cip, sip = dhcp.discover(update_seed = update_seed)
422 assert_not_equal(cip, None)
423 assert_not_equal(sip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700424 log_test.info('Got dhcp client IP %s from server %s for mac %s' %
A R Karthickb7e80902016-05-17 09:38:31 -0700425 (cip, sip, dhcp.get_mac(cip)[0]))
426 return cip,sip
427
428 def dhcp_request(self, subscriber, seed_ip = '10.10.10.1', update_seed = False):
429 config = {'startip':'10.10.10.20', 'endip':'10.10.10.200',
430 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
431 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
432 self.onos_dhcp_table_load(config)
433 dhcp = DHCPTest(seed_ip = seed_ip, iface = subscriber.iface)
434 cip, sip = self.dhcp_sndrcv(dhcp, update_seed = update_seed)
435 return cip, sip
436
437 def recv_channel_cb(self, pkt):
438 ##First verify that we have received the packet for the joined instance
439 chan = self.subscriber.caddr(pkt[IP].dst)
440 assert_equal(chan in self.subscriber.join_map.keys(), True)
441 recv_time = monotonic.monotonic() * 1000000
442 join_time = self.subscriber.join_map[chan][self.subscriber.STATS_JOIN].start
443 delta = recv_time - join_time
444 self.subscriber.join_rx_stats.update(packets=1, t = delta, usecs = True)
445 self.subscriber.channel_update(chan, self.subscriber.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700446 log_test.debug('Packet received in %.3f usecs for group %s after join' %(delta, pkt[IP].dst))
A R Karthickb7e80902016-05-17 09:38:31 -0700447 self.test_status = True
448
A R Karthick65c4d722016-07-18 14:20:17 -0700449 def traffic_verify(self, subscriber):
450 if subscriber.has_service('TRAFFIC'):
451 url = 'http://www.google.com'
452 resp = requests.get(url)
453 self.test_status = resp.ok
454 if resp.ok == False:
A R Karthick76a497a2017-04-12 10:59:39 -0700455 log_test.info('Subscriber %s failed get from url %s with status code %d'
A R Karthick65c4d722016-07-18 14:20:17 -0700456 %(subscriber.name, url, resp.status_code))
457 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700458 log_test.info('GET request from %s succeeded for subscriber %s'
A R Karthick65c4d722016-07-18 14:20:17 -0700459 %(url, subscriber.name))
A R Karthicka013a272016-08-16 16:40:19 -0700460 return self.test_status
A R Karthick65c4d722016-07-18 14:20:17 -0700461
A R Karthickb7e80902016-05-17 09:38:31 -0700462 def tls_verify(self, subscriber):
463 if subscriber.has_service('TLS'):
464 time.sleep(2)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700465 tls = TLSAuthTest(intf = subscriber.rx_intf)
A R Karthick76a497a2017-04-12 10:59:39 -0700466 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700467 tls.runTest()
468 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700469 return self.test_status
470 else:
471 self.test_status = True
472 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700473
474 def dhcp_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700475 if subscriber.has_service('DHCP'):
476 cip, sip = self.dhcp_request(subscriber, update_seed = True)
A R Karthick76a497a2017-04-12 10:59:39 -0700477 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700478 subscriber.src_list = [cip]
479 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700480 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700481 else:
482 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
483 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700484 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700485
486 def dhcp_jump_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700487 if subscriber.has_service('DHCP'):
488 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.200.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700489 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700490 subscriber.src_list = [cip]
491 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700492 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700493 else:
494 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
495 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700496 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700497
498 def dhcp_next_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700499 if subscriber.has_service('DHCP'):
500 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.150.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700501 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700502 subscriber.src_list = [cip]
503 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700504 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700505 else:
506 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
507 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700508 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700509
510 def igmp_verify(self, subscriber):
511 chan = 0
512 if subscriber.has_service('IGMP'):
A R Karthick338268f2016-06-21 17:12:13 -0700513 ##We wait for all the subscribers to join before triggering leaves
514 if subscriber.rx_port > 1:
515 time.sleep(5)
516 subscriber.channel_join(chan, delay = 0)
517 self.num_joins += 1
518 while self.num_joins < self.num_subscribers:
519 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700520 log_test.info('All subscribers have joined the channel')
A R Karthick338268f2016-06-21 17:12:13 -0700521 for i in range(10):
522 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
A R Karthick76a497a2017-04-12 10:59:39 -0700523 log_test.info('Leaving channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700524 subscriber.channel_leave(chan)
A R Karthick338268f2016-06-21 17:12:13 -0700525 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700526 log_test.info('Interface %s Join RX stats for subscriber %s, %s' %(subscriber.iface, subscriber.name,subscriber.join_rx_stats))
A R Karthick338268f2016-06-21 17:12:13 -0700527 #Should not receive packets for this subscriber
528 self.recv_timeout = True
529 subscriber.recv_timeout = True
530 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
531 subscriber.recv_timeout = False
532 self.recv_timeout = False
A R Karthick76a497a2017-04-12 10:59:39 -0700533 log_test.info('Joining channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthick338268f2016-06-21 17:12:13 -0700534 subscriber.channel_join(chan, delay = 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700535 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700536 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700537
538 def igmp_jump_verify(self, subscriber):
539 if subscriber.has_service('IGMP'):
540 for i in xrange(subscriber.num):
A R Karthick76a497a2017-04-12 10:59:39 -0700541 log_test.info('Subscriber %s jumping channel' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700542 chan = subscriber.channel_jump(delay=0)
543 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 1)
A R Karthick76a497a2017-04-12 10:59:39 -0700544 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700545 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700546 log_test.info('Interface %s Jump RX stats for subscriber %s, %s' %(subscriber.iface, subscriber.name, subscriber.join_rx_stats))
A R Karthickb7e80902016-05-17 09:38:31 -0700547 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700548 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700549
550 def igmp_next_verify(self, subscriber):
551 if subscriber.has_service('IGMP'):
552 for i in xrange(subscriber.num):
553 if i:
A.R Karthick517f7812017-05-18 11:22:46 -0700554 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700555 else:
556 chan = subscriber.channel_join(i, delay=0)
A R Karthick76a497a2017-04-12 10:59:39 -0700557 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700558 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
A R Karthick76a497a2017-04-12 10:59:39 -0700559 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700560 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700561 log_test.info('Interface %s Join Next RX stats for subscriber %s, %s' %(subscriber.iface, subscriber.name, subscriber.join_rx_stats))
A R Karthickb7e80902016-05-17 09:38:31 -0700562 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700563 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700564
A R Karthick31f1f342017-05-19 13:55:10 -0700565 def igmp_leave_verify(self, subscriber):
566 if subscriber.has_service('IGMP'):
567 for chan in xrange(subscriber.num):
568 subscriber.channel_leave(chan)
569 time.sleep(2)
570 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
571 #self.recv_timeout = True
572 #subscriber.recv_timeout = True
573 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
574 #self.recv_timeout = False
575 #subscriber.recv_timeout = False
576 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
577 #time.sleep(1)
578
579 self.test_status = True
580 return self.test_status
581
A R Karthickb7e80902016-05-17 09:38:31 -0700582 def generate_port_list(self, subscribers, channels):
583 return self.port_list[:subscribers]
584
585 def subscriber_load(self, create = True, num = 10, num_channels = 1, channel_start = 0, port_list = []):
586 '''Load the subscriber from the database'''
A R Karthick4b72d4b2016-06-15 11:09:17 -0700587 self.subscriber_db = SubscriberDB(create = create, services = self.test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700588 if create is True:
589 self.subscriber_db.generate(num)
590 self.subscriber_info = self.subscriber_db.read(num)
591 self.subscriber_list = []
592 if not port_list:
593 port_list = self.generate_port_list(num, num_channels)
594
595 index = 0
596 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700597 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700598 service=info['Service'],
599 port_map = self.port_map,
600 num=num_channels,
601 channel_start = channel_start,
602 tx_port = port_list[index][0],
603 rx_port = port_list[index][1]))
604 if num_channels > 1:
605 channel_start += num_channels
606 index += 1
607
608 #load the ssm list for all subscriber channels
609 igmpChannel = IgmpChannel()
610 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
611 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
612 igmpChannel.igmp_load_ssm_config(ssm_list)
613
A.R Karthick95d044e2016-06-10 18:44:36 -0700614 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700615 channel_start = 0, cbs = None, port_list = [], negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700616 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700617 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700618 subscribers_count = num_subscribers
619 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700620 self.subscriber_load(create = True, num = num_subscribers,
621 num_channels = num_channels, channel_start = channel_start, port_list = port_list)
622 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700623 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
624
A R Karthick338268f2016-06-21 17:12:13 -0700625 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800626 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700627 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700628 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700629 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700630 for subscriber in self.subscriber_list:
631 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700632 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
633 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
634 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
635 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
636 else:
637 cbs = cbs_negative
638 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700639 pool_object = subscriber_pool(subscriber, cbs)
640 self.thread_pool.addTask(pool_object.pool_cb)
641 self.thread_pool.cleanUpThreads()
642 for subscriber in self.subscriber_list:
643 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700644 if chan_leave is True:
645 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700646 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700647 return self.test_status
648
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700649 def tls_invalid_cert(self, subscriber):
650 if subscriber.has_service('TLS'):
651 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700652 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700653 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
654 tls.runTest()
655 if tls.failTest == True:
656 self.test_status = False
657 return self.test_status
658 else:
659 self.test_status = True
660 return self.test_status
661
662 def tls_no_cert(self, subscriber):
663 if subscriber.has_service('TLS'):
664 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700665 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700666 tls = TLSAuthTest(client_cert = '')
667 tls.runTest()
668 if tls.failTest == True:
669 self.test_status = False
670 return self.test_status
671 else:
672 self.test_status = True
673 return self.test_status
674
675 def tls_self_signed_cert(self, subscriber):
676 if subscriber.has_service('TLS'):
677 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700678 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700679 tls = TLSAuthTest(client_cert = self.CLIENT_CERT)
680 tls.runTest()
681 if tls.failTest == False:
682 self.test_status = True
683 return self.test_status
684 else:
685 self.test_status = True
686 return self.test_status
687
688 def tls_non_ca_authrized_cert(self, subscriber):
689 if subscriber.has_service('TLS'):
690 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700691 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700692 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
693 tls.runTest()
694 if tls.failTest == False:
695 self.test_status = True
696 return self.test_status
697 else:
698 self.test_status = True
699 return self.test_status
700
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700701 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
702 if subscriber.has_service('TLS'):
703 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700704 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700705 num_users = 3
706 for i in xrange(num_users):
707 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
708 tls.runTest()
709 if tls.failTest == False:
710 self.test_status = True
711 return self.test_status
712 else:
713 self.test_status = True
714 return self.test_status
715
716 def dhcp_discover_scenario(self, subscriber):
717 if subscriber.has_service('DHCP'):
718 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700719 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700720 t1 = self.subscriber_dhcp_1release()
721 self.test_status = True
722 return self.test_status
723 else:
724 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
725 self.test_status = True
726 return self.test_status
727
728 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700729 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
730 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
731 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
732 self.onos_dhcp_table_load(config)
733 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
734 cip, sip = self.send_recv()
735 log_test.info('Releasing ip %s to server %s' %(cip, sip))
736 assert_equal(self.dhcp.release(cip), True)
737 log_test.info('Triggering DHCP discover again after release')
738 cip2, sip2 = self.send_recv(update_seed = True)
739 log_test.info('Verifying released IP was given back on rediscover')
740 assert_equal(cip, cip2)
741 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
742 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700743
744 def dhcp_client_reboot_scenario(self, subscriber):
745 if subscriber.has_service('DHCP'):
746 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700747 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700748 tl = self.subscriber_dhcp_client_request_after_reboot()
749 self.test_status = True
750 return self.test_status
751 else:
752 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
753 self.test_status = True
754 return self.test_status
755
756 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
757 #''' Client sends DHCP Request after reboot.'''
758
759 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
760 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
761 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
762 self.onos_dhcp_table_load(config)
763 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
764 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700765 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700766 (cip, sip, mac) )
767
A R Karthick76a497a2017-04-12 10:59:39 -0700768 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet. Those should not be none, which is expected.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700769
770 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700771 log_test.info("Verified that Client 's IP and mac in DHCP Offer packet are none, which is not expected behavior.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700772 assert_not_equal(cip, None)
773
774 else:
775 new_cip, new_sip = self.dhcp.only_request(cip, mac)
776 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700777 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700778 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700779 log_test.info('Client goes down.')
780 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700781
782 time.sleep(5)
783
784 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700785 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700786
787 new_cip, new_sip = self.dhcp.only_request(cip, mac)
788 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700789 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700790 assert_not_equal(new_cip, None)
791 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700792 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700793
794 def dhcp_client_renew_scenario(self, subscriber):
795 if subscriber.has_service('DHCP'):
796 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700797 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700798 tl = self.subscriber_dhcp_client_renew_time()
799 self.test_status = True
800 return self.test_status
801 else:
802 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
803 self.test_status = True
804 return self.test_status
805
806 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
807 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
808 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
809 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
810 self.onos_dhcp_table_load(config)
811 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
812 cip, sip, mac , lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700813 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700814 (cip, sip, mac) )
815
A R Karthick76a497a2017-04-12 10:59:39 -0700816 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet. Those should not be none, which is expected.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700817 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700818 log_test.info("Verified that Client 's IP and mac in DHCP Offer packet are none, which is not expected behavior.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700819 assert_not_equal(cip, None)
820 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700821 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700822 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
823 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700824 log_test.info("Client 's Renewal time is :%s",lval)
825 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700826 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700827 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700828 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
829 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700830 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700831 (latest_cip, mac, latest_sip) )
832
833 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700834 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700835 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700836 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700837
838 def dhcp_server_reboot_scenario(self, subscriber):
839 if subscriber.has_service('DHCP'):
840 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700841 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700842 tl = self.subscriber_dhcp_server_after_reboot()
843 self.test_status = True
844 return self.test_status
845 else:
846 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
847 self.test_status = True
848 return self.test_status
849
850 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
851 ''' DHCP server goes down.'''
852 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
853 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
854 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
855 self.onos_dhcp_table_load(config)
856 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
857 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700858 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700859 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700860 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet. Those should not be none, which is expected.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700861 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700862 log_test.info("Verified that Client 's IP and mac in DHCP Offer packet are none, which is not expected behavior.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700863 assert_not_equal(cip, None)
864 else:
865 new_cip, new_sip = self.dhcp.only_request(cip, mac)
866 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700867 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700868 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700869 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700870 onos_ctrl = OnosCtrl(self.dhcp_app)
871 onos_ctrl.deactivate()
872 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700873 log_test.info("Sending DHCP Request.")
874 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700875 new_cip, new_sip = self.dhcp.only_request(cip, mac)
876 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700877 log_test.info('')
878 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700879 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700880 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700881 assert_equal(new_cip,None) #Neagtive Test Case
A R Karthick76a497a2017-04-12 10:59:39 -0700882 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700883# self.activate_apps(self.dhcp_app)
884 onos_ctrl = OnosCtrl(self.dhcp_app)
885 status, _ = onos_ctrl.activate()
886 assert_equal(status, True)
887 time.sleep(3)
888 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700889 log_test.info("Sending DHCP Request after DHCP server is up.")
890 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700891 new_cip, new_sip = self.dhcp.only_request(cip, mac)
892 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700893 log_test.info('')
894 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700895 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700896 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700897 assert_equal(new_cip,None) #Neagtive Test Case
898
899 def dhcp_client_rebind_scenario(self, subscriber):
900 if subscriber.has_service('DHCP'):
901 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700902 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700903 tl = self.subscriber_dhcp_client_rebind_time()
904 self.test_status = True
905 return self.test_status
906 else:
907 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
908 self.test_status = True
909 return self.test_status
910
911 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
912 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
913 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
914 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
915 self.onos_dhcp_table_load(config)
916 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
917 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700918 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700919 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700920 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet. Those should not be none, which is expected.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700921 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700922 log_test.info("Verified that Client 's IP and mac in DHCP Offer packet are none, which is not expected behavior.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700923 assert_not_equal(cip, None)
924 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700925 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700926 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
927 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700928 log_test.info("Client 's Rebind time is :%s",lval)
929 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700930 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700931 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700932 self.dhcp.after_T2 = True
933 for i in range(0,4):
934 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
935 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700936 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700937 (latest_cip, mac, latest_sip) )
938 break
939 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700940 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700941 assert_not_equal(latest_cip, None)
942 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700943 log_test.info("Got DHCP NAK.Lease not Renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700944
945 def dhcp_starvation_scenario(self, subscriber):
946 if subscriber.has_service('DHCP'):
947 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700948 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700949 tl = self.subscriber_dhcp_starvation()
950 self.test_status = True
951 return self.test_status
952 else:
953 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
954 self.test_status = True
955 return self.test_status
956
957 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
958 '''DHCP starve'''
959 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
960 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
961 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
962 self.onos_dhcp_table_load(config)
963 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -0700964 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700965 for x in xrange(50):
966 mac = RandMAC()._fix()
967 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -0700968 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700969 cip, sip = self.send_recv(update_seed = True, validate = False)
970 assert_equal(cip, None)
971 assert_equal(sip, None)
972
973 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
974 if subscriber.has_service('DHCP'):
975 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700976 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700977 tl = self.subscriber_dhcp_same_client_multiple_discover()
978 self.test_status = True
979 return self.test_status
980 else:
981 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
982 self.test_status = True
983 return self.test_status
984
985 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
986 ''' DHCP Client sending multiple discover . '''
987 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
988 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
989 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
990 self.onos_dhcp_table_load(config)
991 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
992 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700993 log_test.info('Got dhcp client IP %s from server %s for mac %s . Not going to send DHCPREQUEST.' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700994 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700995 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700996 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
997 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -0700998 log_test.info('Got same ip for 2nd DHCP discover for client IP %s from server %s for mac %s. Triggering DHCP Request. '
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700999 % (new_cip, new_sip, new_mac) )
1000 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001001 log_test.info('Ip after 1st discover %s' %cip)
1002 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001003 assert_equal(cip, new_cip)
1004
1005 def dhcp_same_client_multi_request_scenario(self, subscriber):
1006 if subscriber.has_service('DHCP'):
1007 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001008 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001009 tl = self.subscriber_dhcp_same_client_multiple_request()
1010 self.test_status = True
1011 return self.test_status
1012 else:
1013 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1014 self.test_status = True
1015 return self.test_status
1016
1017 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1018 ''' DHCP Client sending multiple repeat DHCP requests. '''
1019 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1020 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1021 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1022 self.onos_dhcp_table_load(config)
1023 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001024 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001025 cip, sip = self.send_recv()
1026 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001027 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001028 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1029 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001030 log_test.info('Got same ip for 2nd DHCP Request for client IP %s from server %s for mac %s.'
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001031 % (new_cip, new_sip, mac) )
1032 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001033 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001034 assert_equal(new_cip, None)
1035 assert_equal(new_sip, None)
1036 else:
1037 print "Something went wrong."
1038
1039 def dhcp_client_desired_ip_scenario(self, subscriber):
1040 if subscriber.has_service('DHCP'):
1041 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001042 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001043 tl = self.subscriber_dhcp_client_desired_address()
1044 self.test_status = True
1045 return self.test_status
1046 else:
1047 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1048 self.test_status = True
1049 return self.test_status
1050
1051 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1052 '''DHCP Client asking for desired IP address.'''
1053 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1054 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1055 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1056 self.onos_dhcp_table_load(config)
1057 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1058 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001059 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001060 (cip, sip, mac) )
1061 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001062 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001063 (cip, sip, mac) )
1064 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001065 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001066 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001067 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001068 assert_equal(cip, self.dhcp.seed_ip)
1069
1070 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1071 if subscriber.has_service('DHCP'):
1072 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001073 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001074 tl = self.subscriber_dhcp_server_nak_packet()
1075 self.test_status = True
1076 return self.test_status
1077 else:
1078 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1079 self.test_status = True
1080 return self.test_status
1081
1082 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1083 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1084 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1085 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1086 self.onos_dhcp_table_load(config)
1087 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1088 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001089 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001090 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001091 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet. Those should not be none, which is expected.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001092 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001093 log_test.info("Verified that Client 's IP and mac in DHCP Offer packet are none, which is not expected behavior.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001094 assert_not_equal(cip, None)
1095 else:
1096 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1097 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001098 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001099 assert_equal(new_cip, None) #Negative Test Case
1100
1101 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1102 if subscriber.has_service('DHCP'):
1103 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001104 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001105 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1106 self.test_status = True
1107 return self.test_status
1108 else:
1109 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1110 self.test_status = True
1111 return self.test_status
1112
1113 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1114 '''DHCP Client asking for desired IP address from out of pool.'''
1115 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1116 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1117 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1118 self.onos_dhcp_table_load(config)
1119 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1120 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001121 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001122 (cip, sip, mac) )
1123 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001124 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001125 (cip, sip, mac) )
1126 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1127
1128 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001129 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001130 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001131 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001132 assert_not_equal(cip, self.dhcp.seed_ip)
1133
1134 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001135 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001136
1137 def dhcp_client_specific_lease_scenario(self, subscriber):
1138 if subscriber.has_service('DHCP'):
1139 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001140 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001141 tl = self.subscriber_dhcp_specific_lease_packet()
1142 self.test_status = True
1143 return self.test_status
1144 else:
1145 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1146 self.test_status = True
1147 return self.test_status
1148
1149 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1150 ''' Client sends DHCP Discover packet for particular lease time.'''
1151 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1152 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1153 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1154 self.onos_dhcp_table_load(config)
1155 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001156 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001157 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1158
A R Karthick76a497a2017-04-12 10:59:39 -07001159 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001160 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001161 log_test.info("Verified that Client 's IP and mac in DHCP Offer packet are none, which is not expected behavior.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001162 assert_not_equal(cip, None)
1163 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001164 log_test.info('Getting dhcp client IP %s from server %s for mac %s with lease time %s. That is not 700.' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001165 (cip, sip, mac, lval) )
1166 assert_not_equal(lval, 700)
1167
1168 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001169 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001170 self.num_subscribers = 5
1171 self.num_channels = 1
A R Karthicka478df42016-07-27 16:51:08 -07001172 test_status = True
1173 ##Run this test only if ONOS can be restarted as it incurs a network-cfg change
1174 if self.onos_restartable is True:
1175 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1176 num_channels = self.num_channels,
1177 port_list = self.generate_port_list(self.num_subscribers,
1178 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001179 assert_equal(test_status, True)
1180
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001181 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001182 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001183 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001184 self.num_channels = 10
1185 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1186 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001187 cbs = (self.tls_verify, self.dhcp_jump_verify,
1188 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001189 port_list = self.generate_port_list(self.num_subscribers,
1190 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001191 assert_equal(test_status, True)
1192
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001193 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001194 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001195 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001196 self.num_channels = 10
1197 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1198 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001199 cbs = (self.tls_verify, self.dhcp_next_verify,
1200 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001201 port_list = self.generate_port_list(self.num_subscribers,
1202 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001203 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001204
A.R Karthick517f7812017-05-18 11:22:46 -07001205 def test_cord_subscriber_join_next_without_leave(self):
1206 """Test subscriber join next for channel surfing"""
1207 self.num_subscribers = self.num_ports * len(self.switches)
1208 self.num_channels = 5
1209 self.leave_flag = False
1210 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1211 num_channels = self.num_channels,
1212 cbs = (self.tls_verify, self.dhcp_next_verify,
1213 self.igmp_next_verify, self.traffic_verify),
1214 port_list = self.generate_port_list(self.num_subscribers,
1215 self.num_channels))
1216 self.leave_flag = True
1217 assert_equal(test_status, True)
1218
A R Karthick31f1f342017-05-19 13:55:10 -07001219 def test_cord_subscriber_leave(self):
1220 """Test subscriber leaves for all the join nexts before"""
1221 self.num_subscribers = self.num_ports * len(self.switches)
1222 self.num_channels = 5
1223 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1224 num_channels = self.num_channels,
1225 cbs = (self.tls_verify, self.dhcp_next_verify,
1226 self.igmp_leave_verify, self.traffic_verify),
1227 port_list = self.generate_port_list(self.num_subscribers,
1228 self.num_channels))
1229 assert_equal(test_status, True)
1230
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001231 #@deferred(SUBSCRIBER_TIMEOUT)
1232 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1233 ### """Test subscriber to auth with invalidCertification and join channel"""
1234 num_subscribers = 1
1235 num_channels = 1
1236 df = defer.Deferred()
1237 def sub_auth_invalid_cert(df):
1238 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1239 num_channels = num_channels,
1240 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1241 self.igmp_verify, self.traffic_verify),
1242 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1243 assert_equal(test_status, False)
1244 df.callback(0)
1245 reactor.callLater(0, sub_auth_invalid_cert, df)
1246 return df
1247
1248 #@deferred(SUBSCRIBER_TIMEOUT)
1249 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1250 ### """Test subscriber to auth with No Certification and join channel"""
1251 num_subscribers = 1
1252 num_channels = 1
1253 df = defer.Deferred()
1254 def sub_auth_no_cert(df):
1255 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1256 num_channels = num_channels,
1257 cbs = (self.tls_no_cert, self.dhcp_verify,
1258 self.igmp_verify, self.traffic_verify),
1259 port_list = self.generate_port_list(num_subscribers, num_channels),
1260 negative_subscriber_auth = 'all')
1261 assert_equal(test_status, False)
1262 df.callback(0)
1263 reactor.callLater(0, sub_auth_no_cert, df)
1264 return df
1265 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1266 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1267 num_subscribers = 1
1268 num_channels = 1
1269 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1270 num_channels = num_channels,
1271 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1272 self.igmp_verify, self.traffic_verify),
1273 port_list = self.generate_port_list(num_subscribers, num_channels),
1274 negative_subscriber_auth = 'all')
1275 assert_equal(test_status, True)
1276
1277 @deferred(SUBSCRIBER_TIMEOUT)
1278 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1279 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1280 num_subscribers = 2
1281 num_channels = 1
1282 df = defer.Deferred()
1283 def sub_auth_invalid_cert(df):
1284 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1285 num_channels = num_channels,
1286 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1287 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1288 assert_equal(test_status, True)
1289 df.callback(0)
1290 reactor.callLater(0, sub_auth_invalid_cert, df)
1291 return df
1292
1293 @deferred(SUBSCRIBER_TIMEOUT)
1294 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1295 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1296 num_subscribers = 2
1297 num_channels = 1
1298 df = defer.Deferred()
1299 def sub_auth_no_cert(df):
1300 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1301 num_channels = num_channels,
1302 cbs = (self.tls_no_cert, self.dhcp_verify,
1303 self.igmp_verify, self.traffic_verify),
1304 port_list = self.generate_port_list(num_subscribers, num_channels),
1305 negative_subscriber_auth = 'half')
1306 assert_equal(test_status, True)
1307 df.callback(0)
1308 reactor.callLater(0, sub_auth_no_cert, df)
1309 return df
1310
1311 @deferred(SUBSCRIBER_TIMEOUT)
1312 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1313 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1314 num_subscribers = 2
1315 num_channels = 1
1316 df = defer.Deferred()
1317 def sub_auth_no_cert(df):
1318 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1319 num_channels = num_channels,
1320 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1321 self.igmp_verify, self.traffic_verify),
1322 port_list = self.generate_port_list(num_subscribers, num_channels),
1323 negative_subscriber_auth = 'half')
1324 assert_equal(test_status, True)
1325 df.callback(0)
1326 reactor.callLater(0, sub_auth_no_cert, df)
1327 return df
1328
1329 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1330 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1331 num_subscribers = 1
1332 num_channels = 1
1333 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1334 num_channels = num_channels,
1335 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1336 self.igmp_verify, self.traffic_verify),
1337 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1338 assert_equal(test_status, True)
1339
1340 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1341 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1342 num_subscribers = 1
1343 num_channels = 1
1344 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1345 num_channels = num_channels,
1346 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1347 self.igmp_verify, self.traffic_verify),
1348 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1349 assert_equal(test_status, True)
1350
1351 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1352 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1353 num_subscribers = 1
1354 num_channels = 1
1355 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1356 num_channels = num_channels,
1357 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1358 self.igmp_verify, self.traffic_verify),
1359 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1360 assert_equal(test_status, True)
1361
1362 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1363 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1364 num_subscribers = 1
1365 num_channels = 1
1366 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1367 num_channels = num_channels,
1368 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1369 self.igmp_verify, self.traffic_verify),
1370 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1371 assert_equal(test_status, True)
1372
1373
1374 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1375 ### """Test subscriber auth , DHCP starvation and join channel"""
1376 num_subscribers = 1
1377 num_channels = 1
1378 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1379 num_channels = num_channels,
1380 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1381 self.igmp_verify, self.traffic_verify),
1382 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1383 assert_equal(test_status, True)
1384
1385 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1386 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1387 num_subscribers = 1
1388 num_channels = 1
1389 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1390 num_channels = num_channels,
1391 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1392 self.igmp_verify, self.traffic_verify),
1393 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1394 assert_equal(test_status, True)
1395
1396 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1397 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1398 num_subscribers = 1
1399 num_channels = 1
1400 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1401 num_channels = num_channels,
1402 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1403 self.igmp_verify, self.traffic_verify),
1404 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1405 assert_equal(test_status, True)
1406
1407 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1408 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1409 num_subscribers = 1
1410 num_channels = 1
1411 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1412 num_channels = num_channels,
1413 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1414 self.igmp_verify, self.traffic_verify),
1415 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1416 assert_equal(test_status, True)
1417
1418 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1419 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1420 num_subscribers = 1
1421 num_channels = 1
1422 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1423 num_channels = num_channels,
1424 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1425 self.igmp_verify, self.traffic_verify),
1426 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1427 assert_equal(test_status, True)
1428
1429 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1430 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1431 num_subscribers = 1
1432 num_channels = 1
1433 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1434 num_channels = num_channels,
1435 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1436 self.igmp_verify, self.traffic_verify),
1437 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1438 assert_equal(test_status, True)
1439
1440
1441 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1442 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1443 num_subscribers = 1
1444 num_channels = 1
1445 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1446 num_channels = num_channels,
1447 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1448 self.igmp_verify, self.traffic_verify),
1449 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1450 assert_equal(test_status, True)
1451
1452 #@deferred(SUBSCRIBER_TIMEOUT)
1453 @nottest
1454 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1455 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1456 num_subscribers = 1000
1457 num_channels = 1
1458 df = defer.Deferred()
1459 def sub_auth_invalid_cert(df):
1460 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1461 num_channels = num_channels,
1462 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1463 self.igmp_verify, self.traffic_verify),
1464 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1465 assert_equal(test_status, True)
1466 df.callback(0)
1467 reactor.callLater(0, sub_auth_invalid_cert, df)
1468 return df
1469
1470 @nottest
1471 @deferred(SUBSCRIBER_TIMEOUT)
1472 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1473 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1474 num_subscribers = 1000
1475 num_channels = 1
1476 df = defer.Deferred()
1477 def sub_auth_no_cert(df):
1478 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1479 num_channels = num_channels,
1480 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1481 port_list = self.generate_port_list(num_subscribers, num_channels),
1482 negative_subscriber_auth = 'half')
1483 assert_equal(test_status, True)
1484 df.callback(0)
1485 reactor.callLater(0, sub_auth_no_cert, df)
1486 return df
1487
1488 #@deferred(SUBSCRIBER_TIMEOUT)
1489 @nottest
1490 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1491 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1492 num_subscribers = 1000
1493 num_channels = 1
1494 df = defer.Deferred()
1495 def sub_auth_no_cert(df):
1496 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1497 num_channels = num_channels,
1498 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1499 port_list = self.generate_port_list(num_subscribers, num_channels),
1500 negative_subscriber_auth = 'half')
1501 assert_equal(test_status, True)
1502 df.callback(0)
1503 reactor.callLater(0, sub_auth_no_cert, df)
1504 return df
1505
1506 #@deferred(SUBSCRIBER_TIMEOUT)
1507 @nottest
1508 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1509 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1510 num_subscribers = 5000
1511 num_channels = 1
1512 df = defer.Deferred()
1513 def sub_auth_invalid_cert(df):
1514 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1515 num_channels = num_channels,
1516 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1517 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1518 assert_equal(test_status, True)
1519 df.callback(0)
1520 reactor.callLater(0, sub_auth_invalid_cert, df)
1521 return df
1522
1523 #@deferred(SUBSCRIBER_TIMEOUT)
1524 @nottest
1525 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1526 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1527 num_subscribers = 5000
1528 num_channels = 1
1529 df = defer.Deferred()
1530 def sub_auth_no_cert(df):
1531 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1532 num_channels = num_channels,
1533 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1534 port_list = self.generate_port_list(num_subscribers, num_channels),
1535 negative_subscriber_auth = 'half')
1536 assert_equal(test_status, True)
1537 df.callback(0)
1538 reactor.callLater(0, sub_auth_no_cert, df)
1539 return df
1540
1541 #@deferred(SUBSCRIBER_TIMEOUT)
1542 @nottest
1543 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1544 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1545 num_subscribers = 5000
1546 num_channels = 1
1547 df = defer.Deferred()
1548 def sub_auth_no_cert(df):
1549 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1550 num_channels = num_channels,
1551 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1552 port_list = self.generate_port_list(num_subscribers, num_channels),
1553 negative_subscriber_auth = 'half')
1554 assert_equal(test_status, True)
1555 df.callback(0)
1556 reactor.callLater(0, sub_auth_no_cert, df)
1557 return df
1558
1559 #@deferred(SUBSCRIBER_TIMEOUT)
1560 @nottest
1561 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1562 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1563 num_subscribers = 10000
1564 num_channels = 1
1565 df = defer.Deferred()
1566 def sub_auth_invalid_cert(df):
1567 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1568 num_channels = num_channels,
1569 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1570 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1571 assert_equal(test_status, True)
1572 df.callback(0)
1573 reactor.callLater(0, sub_auth_invalid_cert, df)
1574 return df
1575
1576 #@deferred(SUBSCRIBER_TIMEOUT)
1577 @nottest
1578 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1579 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1580 num_subscribers = 10000
1581 num_channels = 1
1582 df = defer.Deferred()
1583 def sub_auth_no_cert(df):
1584 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1585 num_channels = num_channels,
1586 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1587 port_list = self.generate_port_list(num_subscribers, num_channels),
1588 negative_subscriber_auth = 'onethird')
1589 assert_equal(test_status, True)
1590 df.callback(0)
1591 reactor.callLater(0, sub_auth_no_cert, df)
1592 return df
1593
1594 #@deferred(SUBSCRIBER_TIMEOUT)
1595 @nottest
1596 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1597 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1598 num_subscribers = 10000
1599 num_channels = 1
1600 df = defer.Deferred()
1601 def sub_auth_no_cert(df):
1602 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1603 num_channels = num_channels,
1604 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1605 port_list = self.generate_port_list(num_subscribers, num_channels),
1606 negative_subscriber_auth = 'onethird')
1607 assert_equal(test_status, False)
1608 assert_equal(test_status, True)
1609 df.callback(0)
1610 reactor.callLater(0, sub_auth_no_cert, df)
1611 return df
1612
1613 @nottest
1614 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1615 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1616 num_subscribers = 1000
1617 num_channels = 1
1618 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1619 num_channels = num_channels,
1620 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1621 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1622 assert_equal(test_status, True)
1623
1624 @nottest
1625 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1626 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1627 num_subscribers = 1000
1628 num_channels = 1
1629 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1630 num_channels = num_channels,
1631 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1632 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1633 assert_equal(test_status, True)
1634
1635 @nottest
1636 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1637 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1638 num_subscribers = 1000
1639 num_channels = 1
1640 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1641 num_channels = num_channels,
1642 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1643 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1644 assert_equal(test_status, True)
1645
1646 @nottest
1647 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1648 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1649 num_subscribers = 1000
1650 num_channels = 1
1651 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1652 num_channels = num_channels,
1653 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1654 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1655 assert_equal(test_status, True)
1656
1657 @nottest
1658 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1659 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1660 num_subscribers = 1000
1661 num_channels = 1
1662 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1663 num_channels = num_channels,
1664 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1665 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1666 assert_equal(test_status, True)
1667
1668 @nottest
1669 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1670 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1671 num_subscribers = 1000
1672 num_channels = 1
1673 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1674 num_channels = num_channels,
1675 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1676 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1677 assert_equal(test_status, True)
1678
1679 @nottest
1680 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1681 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1682 num_subscribers = 1000
1683 num_channels = 1
1684 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1685 num_channels = num_channels,
1686 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1687 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1688 assert_equal(test_status, True)
1689
1690 def test_4_cord_subscribers_join_recv_5channel(self):
1691 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1692 num_subscribers = 4
1693 num_channels = 5
1694 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1695 num_channels = num_channels,
1696 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1697 port_list = self.generate_port_list(num_subscribers, num_channels),
1698 negative_subscriber_auth = 'all')
1699 assert_equal(test_status, True)
1700
1701 def test_4_cord_subscribers_join_jump_5channel(self):
1702 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1703 num_subscribers = 4
1704 num_channels = 5
1705 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1706 num_channels = num_channels,
1707 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1708 port_list = self.generate_port_list(num_subscribers, num_channels),
1709 negative_subscriber_auth = 'all')
1710 assert_equal(test_status, True)
1711
1712 def test_4_cord_subscribers_join_next_5channel(self):
1713 ###"""Test 4 subscribers join next for 5 channels"""
1714 num_subscribers = 4
1715 num_channels = 5
1716 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1717 num_channels = num_channels,
1718 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1719 port_list = self.generate_port_list(num_subscribers, num_channels),
1720 negative_subscriber_auth = 'all')
1721 assert_equal(test_status, True)
1722
1723 def test_10_cord_subscribers_join_recv_5channel(self):
1724 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1725 num_subscribers = 10
1726 num_channels = 5
1727 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1728 num_channels = num_channels,
1729 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1730 port_list = self.generate_port_list(num_subscribers, num_channels),
1731 negative_subscriber_auth = 'all')
1732 assert_equal(test_status, True)
1733
1734 def test_10_cord_subscribers_join_jump_5channel(self):
1735 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1736 num_subscribers = 10
1737 num_channels = 5
1738 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1739 num_channels = num_channels,
1740 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1741 port_list = self.generate_port_list(num_subscribers, num_channels),
1742 negative_subscriber_auth = 'all')
1743 assert_equal(test_status, True)
1744
1745
1746 def test_10_cord_subscribers_join_next_5channel(self):
1747 ###"""Test 10 subscribers join next for 5 channels"""
1748 num_subscribers = 10
1749 num_channels = 5
1750 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1751 num_channels = num_channels,
1752 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1753 port_list = self.generate_port_list(num_subscribers, num_channels),
1754 negative_subscriber_auth = 'all')
1755 assert_equal(test_status, True)
1756
1757
1758
1759 def test_cord_subscriber_join_recv_100channels(self):
1760 num_subscribers = 1
1761 num_channels = 100
1762 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1763 num_channels = num_channels,
1764 cbs = (self.tls_verify, self.dhcp_verify,
1765 self.igmp_verify, self.traffic_verify),
1766 port_list = self.generate_port_list(num_subscribers, num_channels),
1767 negative_subscriber_auth = 'all')
1768 assert_equal(test_status, True)
1769
1770 def test_cord_subscriber_join_recv_400channels(self):
1771 num_subscribers = 1
1772 num_channels = 400
1773 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1774 num_channels = num_channels,
1775 cbs = (self.tls_verify, self.dhcp_verify,
1776 self.igmp_verify, self.traffic_verify),
1777 port_list = self.generate_port_list(num_subscribers, num_channels),
1778 negative_subscriber_auth = 'all')
1779 assert_equal(test_status, True)
1780
1781 def test_cord_subscriber_join_recv_800channels(self):
1782 num_subscribers = 1
1783 num_channels = 800
1784 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1785 num_channels = num_channels,
1786 cbs = (self.tls_verify, self.dhcp_verify,
1787 self.igmp_verify, self.traffic_verify),
1788 port_list = self.generate_port_list(num_subscribers, num_channels),
1789 negative_subscriber_auth = 'all')
1790 assert_equal(test_status, True)
1791
1792 def test_cord_subscriber_join_recv_1200channels(self):
1793 num_subscribers = 1
1794 num_channels = 1200
1795 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1796 num_channels = num_channels,
1797 cbs = (self.tls_verify, self.dhcp_verify,
1798 self.igmp_verify, self.traffic_verify),
1799 port_list = self.generate_port_list(num_subscribers, num_channels),
1800 negative_subscriber_auth = 'all')
1801 assert_equal(test_status, True)
1802
1803 def test_cord_subscriber_join_recv_1500channels(self):
1804 num_subscribers = 1
1805 num_channels = 1500
1806 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1807 num_channels = num_channels,
1808 cbs = (self.tls_verify, self.dhcp_verify,
1809 self.igmp_verify, self.traffic_verify),
1810 port_list = self.generate_port_list(num_subscribers, num_channels),
1811 negative_subscriber_auth = 'all')
1812 assert_equal(test_status, True)
1813
1814 def test_cord_subscriber_join_jump_100channels(self):
1815 num_subscribers = 1
1816 num_channels = 100
1817 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1818 num_channels = num_channels,
1819 cbs = (self.tls_verify, self.dhcp_jump_verify,
1820 self.igmp_jump_verify, self.traffic_verify),
1821 port_list = self.generate_port_list(num_subscribers, num_channels),
1822 negative_subscriber_auth = 'all')
1823 assert_equal(test_status, True)
1824 def test_cord_subscriber_join_jump_400channels(self):
1825 num_subscribers = 1
1826 num_channels = 400
1827 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1828 num_channels = num_channels,
1829 cbs = (self.tls_verify, self.dhcp_jump_verify,
1830 self.igmp_jump_verify, self.traffic_verify),
1831 port_list = self.generate_port_list(num_subscribers, num_channels),
1832 negative_subscriber_auth = 'all')
1833 assert_equal(test_status, True)
1834
1835 def test_cord_subscriber_join_jump_800channels(self):
1836 num_subscribers = 1
1837 num_channels = 800
1838 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1839 num_channels = num_channels,
1840 cbs = (self.tls_verify, self.dhcp_jump_verify,
1841 self.igmp_jump_verify, self.traffic_verify),
1842 port_list = self.generate_port_list(num_subscribers, num_channels),
1843 negative_subscriber_auth = 'all')
1844 assert_equal(test_status, True)
1845 def test_cord_subscriber_join_jump_1200channel(sself):
1846 num_subscribers = 1
1847 num_channels = 1200
1848 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1849 num_channels = num_channels,
1850 cbs = (self.tls_verify, self.dhcp_jump_verify,
1851 self.igmp_jump_verify, self.traffic_verify),
1852 port_list = self.generate_port_list(num_subscribers, num_channels),
1853 negative_subscriber_auth = 'all')
1854 assert_equal(test_status, True)
1855 def test_cord_subscriber_join_jump_1500channels(self):
1856 num_subscribers = 1
1857 num_channels = 1500
1858 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1859 num_channels = num_channels,
1860 cbs = (self.tls_verify, self.dhcp_jump_verify,
1861 self.igmp_jump_verify, self.traffic_verify),
1862 port_list = self.generate_port_list(num_subscribers, num_channels),
1863 negative_subscriber_auth = 'all')
1864 assert_equal(test_status, True)
1865
1866 def test_cord_subscriber_join_next_100channels(self):
1867 num_subscribers = 1
1868 num_channels = 100
1869 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1870 num_channels = num_channels,
1871 cbs = (self.tls_verify, self.dhcp_next_verify,
1872 self.igmp_next_verify, self.traffic_verify),
1873 port_list = self.generate_port_list(num_subscribers, num_channels),
1874 negative_subscriber_auth = 'all')
1875 assert_equal(test_status, True)
1876
1877 def test_cord_subscriber_join_next_400channels(self):
1878 num_subscribers = 1
1879 num_channels = 400
1880 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1881 num_channels = num_channels,
1882 cbs = (self.tls_verify, self.dhcp_next_verify,
1883 self.igmp_next_verify, self.traffic_verify),
1884 port_list = self.generate_port_list(num_subscribers, num_channels),
1885 negative_subscriber_auth = 'all')
1886 assert_equal(test_status, True)
1887
1888 def test_cord_subscriber_join_next_800channels(self):
1889 num_subscribers = 1
1890 num_channels = 800
1891 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1892 num_channels = num_channels,
1893 cbs = (self.tls_verify, self.dhcp_next_verify,
1894 self.igmp_next_verify, self.traffic_verify),
1895 port_list = self.generate_port_list(num_subscribers, num_channels),
1896 negative_subscriber_auth = 'all')
1897 assert_equal(test_status, True)
1898
1899
1900 def test_cord_subscriber_join_next_1200channels(self):
1901 num_subscribers = 1
1902 num_channels = 1200
1903 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1904 num_channels = num_channels,
1905 cbs = (self.tls_verify, self.dhcp_next_verify,
1906 self.igmp_next_verify, self.traffic_verify),
1907 port_list = self.generate_port_list(num_subscribers, num_channels),
1908 negative_subscriber_auth = 'all')
1909 assert_equal(test_status, True)
1910
1911 def test_cord_subscriber_join_next_1500channels(self):
1912 num_subscribers = 1
1913 num_channels = 1500
1914 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1915 num_channels = num_channels,
1916 cbs = (self.tls_verify, self.dhcp_next_verify,
1917 self.igmp_next_verify, self.traffic_verify),
1918 port_list = self.generate_port_list(num_subscribers, num_channels),
1919 negative_subscriber_auth = 'all')
1920 assert_equal(test_status, True)
1921
1922 @nottest
1923 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1924 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1925 num_subscribers = 1000
1926 num_channels = 1
1927 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1928 num_channels = num_channels,
1929 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
1930 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1931 assert_equal(test_status, True)
1932
1933 @nottest
1934 def test_1k_cord_subscribers_join_recv_100channel(self):
1935 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
1936 num_subscribers = 1000
1937 num_channels = 100
1938 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1939 num_channels = num_channels,
1940 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1941 port_list = self.generate_port_list(num_subscribers, num_channels),
1942 negative_subscriber_auth = 'all')
1943 assert_equal(test_status, True)
1944
1945 @nottest
1946 def test_1k_cord_subscribers_join_jump_100channel(self):
1947 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
1948 num_subscribers = 1000
1949 num_channels = 100
1950 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1951 num_channels = num_channels,
1952 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1953 port_list = self.generate_port_list(num_subscribers, num_channels),
1954 negative_subscriber_auth = 'all')
1955 assert_equal(test_status, True)
1956
1957 @nottest
1958 def test_1k_cord_subscribers_join_next_100channel(self):
1959 ###"""Test 1k subscribers join next for 100 channels"""
1960 num_subscribers = 1000
1961 num_channels = 100
1962 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1963 num_channels = num_channels,
1964 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1965 port_list = self.generate_port_list(num_subscribers, num_channels),
1966 negative_subscriber_auth = 'all')
1967 assert_equal(test_status, True)
1968
1969 @nottest
1970 def test_1k_cord_subscribers_join_recv_400channel(self):
1971 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
1972 num_subscribers = 1000
1973 num_channels = 400
1974 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1975 num_channels = num_channels,
1976 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1977 port_list = self.generate_port_list(num_subscribers, num_channels),
1978 negative_subscriber_auth = 'all')
1979 assert_equal(test_status, True)
1980
1981 @nottest
1982 def test_1k_cord_subscribers_join_jump_400channel(self):
1983 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
1984 num_subscribers = 1000
1985 num_channels = 400
1986 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1987 num_channels = num_channels,
1988 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1989 port_list = self.generate_port_list(num_subscribers, num_channels),
1990 negative_subscriber_auth = 'all')
1991 assert_equal(test_status, True)
1992
1993 @nottest
1994 def test_1k_cord_subscribers_join_next_400channel(self):
1995 ###"""Test 1k subscribers join next for 400 channels"""
1996 num_subscribers = 1000
1997 num_channels = 400
1998 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1999 num_channels = num_channels,
2000 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2001 port_list = self.generate_port_list(num_subscribers, num_channels),
2002 negative_subscriber_auth = 'all')
2003 assert_equal(test_status, True)
2004
2005 @nottest
2006 def test_1k_cord_subscribers_join_recv_800channel(self):
2007 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2008 num_subscribers = 1000
2009 num_channels = 800
2010 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2011 num_channels = num_channels,
2012 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2013 port_list = self.generate_port_list(num_subscribers, num_channels),
2014 negative_subscriber_auth = 'all')
2015 assert_equal(test_status, True)
2016
2017 @nottest
2018 def test_1k_cord_subscribers_join_jump_800channel(self):
2019 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2020 num_subscribers = 1000
2021 num_channels = 800
2022 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2023 num_channels = num_channels,
2024 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2025 port_list = self.generate_port_list(num_subscribers, num_channels),
2026 negative_subscriber_auth = 'all')
2027 assert_equal(test_status, True)
2028
2029 @nottest
2030 def test_1k_cord_subscribers_join_next_800channel(self):
2031 ###"""Test 1k subscribers join next for 800 channels"""
2032 num_subscribers = 1000
2033 num_channels = 800
2034 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2035 num_channels = num_channels,
2036 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2037 port_list = self.generate_port_list(num_subscribers, num_channels),
2038 negative_subscriber_auth = 'all')
2039 assert_equal(test_status, True)
2040
2041 @nottest
2042 def test_1k_cord_subscribers_join_recv_1200channel(self):
2043 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2044 num_subscribers = 1000
2045 num_channels = 1200
2046 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2047 num_channels = num_channels,
2048 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2049 port_list = self.generate_port_list(num_subscribers, num_channels),
2050 negative_subscriber_auth = 'all')
2051 assert_equal(test_status, True)
2052
2053 @nottest
2054 def test_1k_cord_subscribers_join_jump_1200channel(self):
2055 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2056 num_subscribers = 1000
2057 num_channels = 1200
2058 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2059 num_channels = num_channels,
2060 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2061 port_list = self.generate_port_list(num_subscribers, num_channels),
2062 negative_subscriber_auth = 'all')
2063 assert_equal(test_status, True)
2064
2065 @nottest
2066 def test_1k_cord_subscribers_join_next_1200channel(self):
2067 ###"""Test 1k subscribers join next for 1200 channels"""
2068 num_subscribers = 1000
2069 num_channels = 1200
2070 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2071 num_channels = num_channels,
2072 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2073 port_list = self.generate_port_list(num_subscribers, num_channels),
2074 negative_subscriber_auth = 'all')
2075 assert_equal(test_status, True)
2076
2077 @nottest
2078 def test_1k_cord_subscribers_join_recv_1500channel(self):
2079 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2080 num_subscribers = 1000
2081 num_channels = 1500
2082 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2083 num_channels = num_channels,
2084 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2085 port_list = self.generate_port_list(num_subscribers, num_channels),
2086 negative_subscriber_auth = 'all')
2087 assert_equal(test_status, True)
2088
2089 @nottest
2090 def test_1k_cord_subscribers_join_jump_1500channel(self):
2091 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2092 num_subscribers = 1000
2093 num_channels = 1500
2094 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2095 num_channels = num_channels,
2096 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2097 port_list = self.generate_port_list(num_subscribers, num_channels),
2098 negative_subscriber_auth = 'all')
2099 assert_equal(test_status, True)
2100
2101 @nottest
2102 def test_1k_cord_subscribers_join_next_1500channel(self):
2103 ###"""Test 1k subscribers join next for 1500 channels"""
2104 num_subscribers = 1000
2105 num_channels = 1500
2106 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2107 num_channels = num_channels,
2108 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2109 port_list = self.generate_port_list(num_subscribers, num_channels),
2110 negative_subscriber_auth = 'all')
2111 assert_equal(test_status, True)
2112
2113 @nottest
2114 def test_5k_cord_subscribers_join_recv_100channel(self):
2115 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2116 num_subscribers = 5000
2117 num_channels = 100
2118 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2119 num_channels = num_channels,
2120 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2121 port_list = self.generate_port_list(num_subscribers, num_channels),
2122 negative_subscriber_auth = 'all')
2123 assert_equal(test_status, True)
2124
2125 @nottest
2126 def test_5k_cord_subscribers_join_jump_100channel(self):
2127 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2128 num_subscribers = 5000
2129 num_channels = 100
2130 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2131 num_channels = num_channels,
2132 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2133 port_list = self.generate_port_list(num_subscribers, num_channels),
2134 negative_subscriber_auth = 'all')
2135 assert_equal(test_status, True)
2136
2137 @nottest
2138 def test_5k_cord_subscribers_join_next_100channel(self):
2139 ###"""Test 5k subscribers join next for 100 channels"""
2140 num_subscribers = 5000
2141 num_channels = 100
2142 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2143 num_channels = num_channels,
2144 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2145 port_list = self.generate_port_list(num_subscribers, num_channels),
2146 negative_subscriber_auth = 'all')
2147 assert_equal(test_status, True)
2148
2149 @nottest
2150 def test_5k_cord_subscribers_join_recv_400channel(self):
2151 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2152 num_subscribers = 5000
2153 num_channels = 400
2154 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2155 num_channels = num_channels,
2156 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2157 port_list = self.generate_port_list(num_subscribers, num_channels),
2158 negative_subscriber_auth = 'all')
2159 assert_equal(test_status, True)
2160
2161 @nottest
2162 def test_5k_cord_subscribers_join_jump_400channel(self):
2163 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2164 num_subscribers = 5000
2165 num_channels = 400
2166 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2167 num_channels = num_channels,
2168 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2169 port_list = self.generate_port_list(num_subscribers, num_channels),
2170 negative_subscriber_auth = 'all')
2171 assert_equal(test_status, True)
2172
2173 @nottest
2174 def test_5k_cord_subscribers_join_next_400channel(self):
2175 ###"""Test 5k subscribers join next for 400 channels"""
2176 num_subscribers = 5000
2177 num_channels = 400
2178 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2179 num_channels = num_channels,
2180 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2181 port_list = self.generate_port_list(num_subscribers, num_channels),
2182 negative_subscriber_auth = 'all')
2183 assert_equal(test_status, True)
2184
2185 @nottest
2186 def test_5k_cord_subscribers_join_recv_800channel(self):
2187 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2188 num_subscribers = 5000
2189 num_channels = 800
2190 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2191 num_channels = num_channels,
2192 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2193 port_list = self.generate_port_list(num_subscribers, num_channels),
2194 negative_subscriber_auth = 'all')
2195 assert_equal(test_status, True)
2196
2197 @nottest
2198 def test_5k_cord_subscribers_join_jump_800channel(self):
2199 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2200 num_subscribers = 5000
2201 num_channels = 800
2202 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2203 num_channels = num_channels,
2204 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2205 port_list = self.generate_port_list(num_subscribers, num_channels),
2206 negative_subscriber_auth = 'all')
2207 assert_equal(test_status, True)
2208
2209 @nottest
2210 def test_5k_cord_subscribers_join_next_800channel(self):
2211 ###"""Test 5k subscribers join next for 800 channels"""
2212 num_subscribers = 5000
2213 num_channels = 800
2214 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2215 num_channels = num_channels,
2216 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2217 port_list = self.generate_port_list(num_subscribers, num_channels),
2218 negative_subscriber_auth = 'all')
2219 assert_equal(test_status, True)
2220
2221 @nottest
2222 def test_5k_cord_subscribers_join_recv_1200channel(self):
2223 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2224 num_subscribers = 5000
2225 num_channels = 1200
2226 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2227 num_channels = num_channels,
2228 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2229 port_list = self.generate_port_list(num_subscribers, num_channels),
2230 negative_subscriber_auth = 'all')
2231 assert_equal(test_status, True)
2232
2233 @nottest
2234 def test_5k_cord_subscribers_join_jump_1200channel(self):
2235 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2236 num_subscribers = 5000
2237 num_channels = 1200
2238 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2239 num_channels = num_channels,
2240 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2241 port_list = self.generate_port_list(num_subscribers, num_channels),
2242 negative_subscriber_auth = 'all')
2243 assert_equal(test_status, True)
2244
2245 @nottest
2246 def test_5k_cord_subscribers_join_next_1200channel(self):
2247 ###"""Test 5k subscribers join next for 1200 channels"""
2248 num_subscribers = 5000
2249 num_channels = 1200
2250 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2251 num_channels = num_channels,
2252 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2253 port_list = self.generate_port_list(num_subscribers, num_channels),
2254 negative_subscriber_auth = 'all')
2255 assert_equal(test_status, True)
2256
2257 @nottest
2258 def test_5k_cord_subscribers_join_recv_1500channel(self):
2259 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2260 num_subscribers = 5000
2261 num_channels = 1500
2262 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2263 num_channels = num_channels,
2264 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2265 port_list = self.generate_port_list(num_subscribers, num_channels),
2266 negative_subscriber_auth = 'all')
2267 assert_equal(test_status, True)
2268
2269 @nottest
2270 def test_5k_cord_subscribers_join_jump_1500channel(self):
2271 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2272 num_subscribers = 5000
2273 num_channels = 1500
2274 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2275 num_channels = num_channels,
2276 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2277 port_list = self.generate_port_list(num_subscribers, num_channels),
2278 negative_subscriber_auth = 'all')
2279 assert_equal(test_status, True)
2280
2281 @nottest
2282 def test_5k_cord_subscribers_join_next_1500channel(self):
2283 ###"""Test 5k subscribers join next for 1500 channels"""
2284 num_subscribers = 5000
2285 num_channels = 1500
2286 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2287 num_channels = num_channels,
2288 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2289 port_list = self.generate_port_list(num_subscribers, num_channels),
2290 negative_subscriber_auth = 'all')
2291 assert_equal(test_status, True)
2292
2293 @nottest
2294 def test_10k_cord_subscribers_join_recv_100channel(self):
2295 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2296 num_subscribers = 10000
2297 num_channels = 100
2298 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2299 num_channels = num_channels,
2300 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2301 port_list = self.generate_port_list(num_subscribers, num_channels),
2302 negative_subscriber_auth = 'all')
2303 assert_equal(test_status, True)
2304
2305 @nottest
2306 def test_10k_cord_subscribers_join_jump_100channel(self):
2307 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2308 num_subscribers = 10000
2309 num_channels = 100
2310 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2311 num_channels = num_channels,
2312 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2313 port_list = self.generate_port_list(num_subscribers, num_channels),
2314 negative_subscriber_auth = 'all')
2315 assert_equal(test_status, True)
2316
2317 @nottest
2318 def test_10k_cord_subscribers_join_next_100channel(self):
2319 ###"""Test 10k subscribers join next for 100 channels"""
2320 num_subscribers = 10000
2321 num_channels = 100
2322 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2323 num_channels = num_channels,
2324 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2325 port_list = self.generate_port_list(num_subscribers, num_channels),
2326 negative_subscriber_auth = 'all')
2327 assert_equal(test_status, True)
2328
2329 @nottest
2330 def test_100k_cord_subscribers_join_recv_100channel(self):
2331 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2332 num_subscribers = 100000
2333 num_channels = 100
2334 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2335 num_channels = num_channels,
2336 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2337 port_list = self.generate_port_list(num_subscribers, num_channels),
2338 negative_subscriber_auth = 'all')
2339 assert_equal(test_status, True)
2340
2341 @nottest
2342 def test_100k_cord_subscribers_join_jump_100channel(self):
2343 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2344 num_subscribers = 100000
2345 num_channels = 100
2346 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2347 num_channels = num_channels,
2348 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2349 port_list = self.generate_port_list(num_subscribers, num_channels),
2350 negative_subscriber_auth = 'all')
2351 assert_equal(test_status, True)
2352
2353 @nottest
2354 def test_100k_cord_subscribers_join_next_100channel(self):
2355 ###"""Test 100k subscribers join next for 100 channels"""
2356 num_subscribers = 100000
2357 num_channels = 100
2358 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2359 num_channels = num_channels,
2360 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2361 port_list = self.generate_port_list(num_subscribers, num_channels),
2362 negative_subscriber_auth = 'all')
2363 assert_equal(test_status, True)
2364
2365 @nottest
2366 def test_10k_cord_subscribers_join_recv_400channel(self):
2367 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2368 num_subscribers = 10000
2369 num_channels = 400
2370 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2371 num_channels = num_channels,
2372 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2373 port_list = self.generate_port_list(num_subscribers, num_channels),
2374 negative_subscriber_auth = 'all')
2375 assert_equal(test_status, True)
2376
2377 @nottest
2378 def test_10k_cord_subscribers_join_jump_400channel(self):
2379 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2380 num_subscribers = 10000
2381 num_channels = 400
2382 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2383 num_channels = num_channels,
2384 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2385 port_list = self.generate_port_list(num_subscribers, num_channels),
2386 negative_subscriber_auth = 'all')
2387 assert_equal(test_status, True)
2388
2389 @nottest
2390 def test_10k_cord_subscribers_join_next_400channel(self):
2391 ###"""Test 10k subscribers join next for 400 channels"""
2392 num_subscribers = 10000
2393 num_channels = 400
2394 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2395 num_channels = num_channels,
2396 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2397 port_list = self.generate_port_list(num_subscribers, num_channels),
2398 negative_subscriber_auth = 'all')
2399 assert_equal(test_status, True)
2400
2401 @nottest
2402 def test_10k_cord_subscribers_join_recv_800channel(self):
2403 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2404 num_subscribers = 10000
2405 num_channels = 800
2406 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2407 num_channels = num_channels,
2408 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2409 port_list = self.generate_port_list(num_subscribers, num_channels),
2410 negative_subscriber_auth = 'all')
2411 assert_equal(test_status, True)
2412
2413 @nottest
2414 def test_10k_cord_subscribers_join_jump_800channel(self):
2415 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2416 num_subscribers = 10000
2417 num_channels = 800
2418 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2419 num_channels = num_channels,
2420 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2421 port_list = self.generate_port_list(num_subscribers, num_channels),
2422 negative_subscriber_auth = 'all')
2423 assert_equal(test_status, True)
2424
2425 @nottest
2426 def test_10k_cord_subscribers_join_next_800channel(self):
2427 ###"""Test 10k subscribers join next for 800 channels"""
2428 num_subscribers = 10000
2429 num_channels = 800
2430 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2431 num_channels = num_channels,
2432 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2433 port_list = self.generate_port_list(num_subscribers, num_channels),
2434 negative_subscriber_auth = 'all')
2435 assert_equal(test_status, True)
2436
2437 @nottest
2438 def test_10k_cord_subscribers_join_recv_1200channel(self):
2439 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2440 num_subscribers = 10000
2441 num_channels = 1200
2442 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2443 num_channels = num_channels,
2444 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2445 port_list = self.generate_port_list(num_subscribers, num_channels),
2446 negative_subscriber_auth = 'all')
2447 assert_equal(test_status, True)
2448
2449 @nottest
2450 def test_10k_cord_subscribers_join_jump_1200channel(self):
2451 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2452 num_subscribers = 10000
2453 num_channels = 1200
2454 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2455 num_channels = num_channels,
2456 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2457 port_list = self.generate_port_list(num_subscribers, num_channels),
2458 negative_subscriber_auth = 'all')
2459 assert_equal(test_status, True)
2460
2461 @nottest
2462 def test_10k_cord_subscribers_join_next_1200channel(self):
2463 ###"""Test 10k subscribers join next for 1200 channels"""
2464 num_subscribers = 10000
2465 num_channels = 1200
2466 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2467 num_channels = num_channels,
2468 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2469 port_list = self.generate_port_list(num_subscribers, num_channels),
2470 negative_subscriber_auth = 'all')
2471 assert_equal(test_status, True)
2472
2473 @nottest
2474 def test_10k_cord_subscribers_join_recv_1500channel(self):
2475 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2476 num_subscribers = 10000
2477 num_channels = 1500
2478 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2479 num_channels = num_channels,
2480 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2481 port_list = self.generate_port_list(num_subscribers, num_channels),
2482 negative_subscriber_auth = 'all')
2483 assert_equal(test_status, True)
2484
2485 @nottest
2486 def test_10k_cord_subscribers_join_jump_1500channel(self):
2487 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2488 num_subscribers = 10000
2489 num_channels = 1500
2490 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2491 num_channels = num_channels,
2492 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2493 port_list = self.generate_port_list(num_subscribers, num_channels),
2494 negative_subscriber_auth = 'all')
2495 assert_equal(test_status, True)
2496
2497 @nottest
2498 def test_10k_cord_subscribers_join_next_1500channel(self):
2499 ###"""Test 10k subscribers join next for 1500 channels"""
2500 num_subscribers = 10000
2501 num_channels = 1500
2502 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2503 num_channels = num_channels,
2504 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2505 port_list = self.generate_port_list(num_subscribers, num_channels),
2506 negative_subscriber_auth = 'all')
2507 assert_equal(test_status, True)
2508
2509 @nottest
2510 def test_100k_cord_subscribers_join_recv_1500channel(self):
2511 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2512 num_subscribers = 100000
2513 num_channels = 1500
2514 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2515 num_channels = num_channels,
2516 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2517 port_list = self.generate_port_list(num_subscribers, num_channels),
2518 negative_subscriber_auth = 'all')
2519 assert_equal(test_status, True)
2520
2521 @nottest
2522 def test_100k_cord_subscribers_join_jump_1500channel(self):
2523 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2524 num_subscribers = 100000
2525 num_channels = 1500
2526 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2527 num_channels = num_channels,
2528 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2529 port_list = self.generate_port_list(num_subscribers, num_channels),
2530 negative_subscriber_auth = 'all')
2531 assert_equal(test_status, True)
2532
2533 @nottest
2534 def test_100k_cord_subscribers_join_next_1500channel(self):
2535 ###"""Test 10k subscribers join next for 1500 channels"""
2536 num_subscribers = 100000
2537 num_channels = 1500
2538 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2539 num_channels = num_channels,
2540 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2541 port_list = self.generate_port_list(num_subscribers, num_channels),
2542 negative_subscriber_auth = 'all')
2543 assert_equal(test_status, True)