blob: 0c79cc6bd6074f150ebe62d2ca5c4728d5aece5e [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 Karthick8a507cf2017-06-02 18:44:49 -070037from CordTestServer import cord_test_onos_restart, cord_test_shell, cord_test_radius_restart
A.R Karthick4c4d0492017-05-26 19:23:05 -070038from CordTestUtils import log_test, get_controller
A R Karthick9313b762016-11-07 13:14:35 -080039from CordLogger import CordLogger
A R Karthick9dc6e922017-07-12 14:40:16 -070040from CordTestConfig import setup_module, teardown_module
A R Karthickb608d402017-06-02 11:48:41 -070041from CordContainer import Onos
A R Karthickb7e80902016-05-17 09:38:31 -070042
A R Karthick76a497a2017-04-12 10:59:39 -070043log_test.setLevel('INFO')
A R Karthickb7e80902016-05-17 09:38:31 -070044
45class Subscriber(Channels):
46 PORT_TX_DEFAULT = 2
47 PORT_RX_DEFAULT = 1
48 INTF_TX_DEFAULT = 'veth2'
49 INTF_RX_DEFAULT = 'veth0'
50 STATS_RX = 0
51 STATS_TX = 1
52 STATS_JOIN = 2
53 STATS_LEAVE = 3
54 SUBSCRIBER_SERVICES = 'DHCP IGMP TLS'
A.R Karthick4c4d0492017-05-26 19:23:05 -070055
A R Karthickb7e80902016-05-17 09:38:31 -070056 def __init__(self, name = 'sub', service = SUBSCRIBER_SERVICES, port_map = None,
57 num = 1, channel_start = 0,
58 tx_port = PORT_TX_DEFAULT, rx_port = PORT_RX_DEFAULT,
59 iface = INTF_RX_DEFAULT, iface_mcast = INTF_TX_DEFAULT,
60 mcast_cb = None, loginType = 'wireless'):
61 self.tx_port = tx_port
62 self.rx_port = rx_port
63 self.port_map = port_map or g_subscriber_port_map
64 try:
65 self.tx_intf = self.port_map[tx_port]
66 self.rx_intf = self.port_map[rx_port]
67 except:
68 self.tx_intf = self.port_map[self.PORT_TX_DEFAULT]
69 self.rx_intf = self.port_map[self.PORT_RX_DEFAULT]
70
A R Karthick76a497a2017-04-12 10:59:39 -070071 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 -070072 Channels.__init__(self, num, channel_start = channel_start,
A R Karthickb7e80902016-05-17 09:38:31 -070073 iface = self.rx_intf, iface_mcast = self.tx_intf, mcast_cb = mcast_cb)
74 self.name = name
75 self.service = service
76 self.service_map = {}
77 services = self.service.strip().split(' ')
78 for s in services:
79 self.service_map[s] = True
80 self.loginType = loginType
81 ##start streaming channels
82 self.join_map = {}
83 ##accumulated join recv stats
84 self.join_rx_stats = Stats()
A R Karthick338268f2016-06-21 17:12:13 -070085 self.recv_timeout = False
A R Karthickb7e80902016-05-17 09:38:31 -070086
87 def has_service(self, service):
88 if self.service_map.has_key(service):
89 return self.service_map[service]
90 if self.service_map.has_key(service.upper()):
91 return self.service_map[service.upper()]
92 return False
93
94 def channel_join_update(self, chan, join_time):
95 self.join_map[chan] = ( Stats(), Stats(), Stats(), Stats() )
96 self.channel_update(chan, self.STATS_JOIN, 1, t = join_time)
97
98 def channel_join(self, chan = 0, delay = 2):
99 '''Join a channel and create a send/recv stats map'''
100 if self.join_map.has_key(chan):
101 del self.join_map[chan]
102 self.delay = delay
103 chan, join_time = self.join(chan)
104 self.channel_join_update(chan, join_time)
105 return chan
106
A.R Karthick517f7812017-05-18 11:22:46 -0700107 def channel_join_next(self, delay = 2, leave_flag = True):
A R Karthickb7e80902016-05-17 09:38:31 -0700108 '''Joins the next channel leaving the last channel'''
109 if self.last_chan:
110 if self.join_map.has_key(self.last_chan):
111 del self.join_map[self.last_chan]
112 self.delay = delay
A.R Karthick517f7812017-05-18 11:22:46 -0700113 chan, join_time = self.join_next(leave_flag = leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700114 self.channel_join_update(chan, join_time)
115 return chan
116
117 def channel_jump(self, delay = 2):
118 '''Jumps randomly to the next channel leaving the last channel'''
119 if self.last_chan is not None:
120 if self.join_map.has_key(self.last_chan):
121 del self.join_map[self.last_chan]
122 self.delay = delay
123 chan, join_time = self.jump()
124 self.channel_join_update(chan, join_time)
125 return chan
126
A R Karthick78d1f492017-05-19 14:24:17 -0700127 def channel_leave(self, chan = 0, force = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700128 if self.join_map.has_key(chan):
129 del self.join_map[chan]
A R Karthick78d1f492017-05-19 14:24:17 -0700130 self.leave(chan, force = force)
A R Karthickb7e80902016-05-17 09:38:31 -0700131
132 def channel_update(self, chan, stats_type, packets, t=0):
133 if type(chan) == type(0):
134 chan_list = (chan,)
135 else:
136 chan_list = chan
A.R Karthick95d044e2016-06-10 18:44:36 -0700137 for c in chan_list:
A R Karthickb7e80902016-05-17 09:38:31 -0700138 if self.join_map.has_key(c):
139 self.join_map[c][stats_type].update(packets = packets, t = t)
140
A R Karthick338268f2016-06-21 17:12:13 -0700141 def channel_receive(self, chan, cb = None, count = 1, timeout = 5):
A R Karthick76a497a2017-04-12 10:59:39 -0700142 log_test.info('Subscriber %s on port %s receiving from group %s, channel %d' %
A R Karthick338268f2016-06-21 17:12:13 -0700143 (self.name, self.rx_intf, self.gaddr(chan), chan))
144 r = self.recv(chan, cb = cb, count = count, timeout = timeout)
A R Karthicka013a272016-08-16 16:40:19 -0700145 if len(r) == 0:
A R Karthick76a497a2017-04-12 10:59:39 -0700146 log_test.info('Subscriber %s on port %s timed out' %(self.name, self.rx_intf))
A R Karthicka013a272016-08-16 16:40:19 -0700147 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700148 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 -0700149 if self.recv_timeout:
150 ##Negative test case is disabled for now
151 assert_equal(len(r), 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700152
153 def recv_channel_cb(self, pkt):
154 ##First verify that we have received the packet for the joined instance
A R Karthick76a497a2017-04-12 10:59:39 -0700155 log_test.info('Packet received for group %s, subscriber %s, port %s' %
A R Karthick338268f2016-06-21 17:12:13 -0700156 (pkt[IP].dst, self.name, self.rx_intf))
157 if self.recv_timeout:
158 return
A R Karthickb7e80902016-05-17 09:38:31 -0700159 chan = self.caddr(pkt[IP].dst)
160 assert_equal(chan in self.join_map.keys(), True)
161 recv_time = monotonic.monotonic() * 1000000
162 join_time = self.join_map[chan][self.STATS_JOIN].start
163 delta = recv_time - join_time
164 self.join_rx_stats.update(packets=1, t = delta, usecs = True)
165 self.channel_update(chan, self.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700166 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 -0700167
168class subscriber_pool:
169
170 def __init__(self, subscriber, test_cbs):
171 self.subscriber = subscriber
172 self.test_cbs = test_cbs
173
174 def pool_cb(self):
175 for cb in self.test_cbs:
176 if cb:
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700177 self.test_status = cb(self.subscriber)
178 if self.test_status is not True:
179 ## This is chaning for other sub status has to check again
180 self.test_status = True
A R Karthick76a497a2017-04-12 10:59:39 -0700181 log_test.info('This service is failed and other services will not run for this subscriber')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700182 break
A R Karthick76a497a2017-04-12 10:59:39 -0700183 log_test.info('This Subscriber is tested for multiple service eligibility ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700184 self.test_status = True
185
A.R Karthick95d044e2016-06-10 18:44:36 -0700186
A R Karthick9313b762016-11-07 13:14:35 -0800187class subscriber_exchange(CordLogger):
A R Karthickb7e80902016-05-17 09:38:31 -0700188
A.R Karthick95d044e2016-06-10 18:44:36 -0700189 apps = ('org.opencord.aaa', 'org.onosproject.dhcp')
190 olt_apps = () #'org.opencord.cordmcast')
A R Karthicka013a272016-08-16 16:40:19 -0700191 vtn_app = 'org.opencord.vtn'
A R Karthickb7e80902016-05-17 09:38:31 -0700192 table_app = 'org.ciena.cordigmp'
193 dhcp_server_config = {
194 "ip": "10.1.11.50",
195 "mac": "ca:fe:ca:fe:ca:fe",
196 "subnet": "255.255.252.0",
197 "broadcast": "10.1.11.255",
198 "router": "10.1.8.1",
199 "domain": "8.8.8.8",
200 "ttl": "63",
201 "delay": "2",
202 "startip": "10.1.11.51",
203 "endip": "10.1.11.100"
204 }
205
206 aaa_loaded = False
207 test_path = os.path.dirname(os.path.realpath(__file__))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700208 table_app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-multitable-2.0-SNAPSHOT.oar')
209 app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-2.0-SNAPSHOT.oar')
A.R Karthick4c4d0492017-05-26 19:23:05 -0700210 olt_app_file = os.path.join(test_path, '..', 'apps/olt-app-1.2-SNAPSHOT.oar')
A.R Karthick8a507cf2017-06-02 18:44:49 -0700211 olt_app_name = 'org.onosproject.olt'
A R Karthickb7e80902016-05-17 09:38:31 -0700212 onos_config_path = os.path.join(test_path, '..', 'setup/onos-config')
A.R Karthick5968e0d2017-05-16 14:50:46 -0700213 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 -0700214 cpqd_path = os.path.join(test_path, '..', 'setup')
215 ovs_path = cpqd_path
A R Karthick65c4d722016-07-18 14:20:17 -0700216 test_services = ('IGMP', 'TRAFFIC')
A R Karthick338268f2016-06-21 17:12:13 -0700217 num_joins = 0
218 num_subscribers = 0
A.R Karthick517f7812017-05-18 11:22:46 -0700219 leave_flag = True
A R Karthick338268f2016-06-21 17:12:13 -0700220 num_channels = 0
221 recv_timeout = False
A R Karthick4e0c0912016-08-17 16:57:42 -0700222 onos_restartable = bool(int(os.getenv('ONOS_RESTART', 0)))
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700223 INTF_TX_DEFAULT = 'veth2'
224 INTF_RX_DEFAULT = 'veth0'
225 SUBSCRIBER_TIMEOUT = 300
226
227 CLIENT_CERT = """-----BEGIN CERTIFICATE-----
228MIICuDCCAiGgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
229CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
230IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
231RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwNjA2MjExMjI3WhcN
232MTcwNjAxMjExMjI3WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
233BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
234hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
235gYEAwvXiSzb9LZ6c7uNziUfKvoHO7wu/uiFC5YUpXbmVGuGZizbVrny0xnR85Dfe
236+9R4diansfDhIhzOUl1XjN3YDeSS9OeF5YWNNE8XDhlz2d3rVzaN6hIhdotBkUjg
237rUewjTg5OFR31QEyG3v8xR3CLgiE9xQELjZbSA07pD79zuUCAwEAAaNPME0wEwYD
238VR0lBAwwCgYIKwYBBQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5l
239eGFtcGxlLmNvbS9leGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOBgQDAjkrY
2406tDChmKbvr8w6Du/t8vHjTCoCIocHTN0qzWOeb1YsAGX89+TrWIuO1dFyYd+Z0KC
241PDKB5j/ygml9Na+AklSYAVJIjvlzXKZrOaPmhZqDufi+rXWti/utVqY4VMW2+HKC
242nXp37qWeuFLGyR1519Y1d6F/5XzqmvbwURuEug==
243-----END CERTIFICATE-----"""
244
245 CLIENT_CERT_INVALID = '''-----BEGIN CERTIFICATE-----
246MIIDvTCCAqWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
247CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
248IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
249RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwMzExMTg1MzM2WhcN
250MTcwMzA2MTg1MzM2WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
251BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
252hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
253AQoCggEBAOxemcBsPn9tZsCa5o2JA6sQDC7A6JgCNXXl2VFzKLNNvB9PS6D7ZBsQ
2545An0zEDMNzi51q7lnrYg1XyiE4S8FzMGAFr94RlGMQJUbRD9V/oqszMX4k++iAOK
255tIA1gr3x7Zi+0tkjVSVzXTmgNnhChAamdMsjYUG5+CY9WAicXyy+VEV3zTphZZDR
256OjcjEp4m/TSXVPYPgYDXI40YZKX5BdvqykWtT/tIgZb48RS1NPyN/XkCYzl3bv21
257qx7Mc0fcEbsJBIIRYTUkfxnsilcnmLxSYO+p+DZ9uBLBzcQt+4Rd5pLSfi21WM39
2582Z2oOi3vs/OYAPAqgmi2JWOv3mePa/8CAwEAAaNPME0wEwYDVR0lBAwwCgYIKwYB
259BQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5leGFtcGxlLmNvbS9l
260eGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOCAQEALBzMPDTIB6sLyPl0T6JV
261MjOkyldAVhXWiQsTjaGQGJUUe1cmUJyZbUZEc13MygXMPOM4x7z6VpXGuq1c/Vxn
262VzQ2fNnbJcIAHi/7G8W5/SQfPesIVDsHTEc4ZspPi5jlS/MVX3HOC+BDbOjdbwqP
263RX0JEr+uOyhjO+lRxG8ilMRACoBUbw1eDuVDoEBgErSUC44pq5ioDw2xelc+Y6hQ
264dmtYwfY0DbvwxHtA495frLyPcastDiT/zre7NL51MyUDPjjYjghNQEwvu66IKbQ3
265T1tJBrgI7/WI+dqhKBFolKGKTDWIHsZXQvZ1snGu/FRYzg1l+R/jT8cRB9BDwhUt
266yg==
267-----END CERTIFICATE-----'''
268
A.R Karthick4c4d0492017-05-26 19:23:05 -0700269 VOLTHA_HOST = None
270 VOLTHA_REST_PORT = 8881
A R Karthickd52ca8a2017-07-24 17:38:55 -0700271 VOLTHA_UPLINK_VLAN_MAP = { 'of:0001000000000001' : '222' }
A R Karthick53442712017-07-27 12:23:30 -0700272 VOLTHA_UPLINK_VLAN_START = 333
A.R Karthick4c4d0492017-05-26 19:23:05 -0700273 VOLTHA_IGMP_ITERATIONS = 100
274 VOLTHA_CONFIG_FAKE = True
275 VOLTHA_OLT_TYPE = 'simulated_olt'
276 VOLTHA_OLT_MAC = '00:0c:e2:31:12:00'
277 VOLTHA_ENABLED = bool(int(os.getenv('VOLTHA_ENABLED', 0)))
A R Karthick9dc6e922017-07-12 14:40:16 -0700278 voltha_ctrl = None
279 voltha_device = None
280 voltha_switch_map = None
A.R Karthick4c4d0492017-05-26 19:23:05 -0700281
A R Karthickb7e80902016-05-17 09:38:31 -0700282 @classmethod
A R Karthickb608d402017-06-02 11:48:41 -0700283 def update_apps_version(cls):
284 version = Onos.getVersion()
285 major = int(version.split('.')[0])
286 minor = int(version.split('.')[1])
287 cordigmp_app_version = '2.0-SNAPSHOT'
288 olt_app_version = '1.2-SNAPSHOT'
289 if major > 1:
290 cordigmp_app_version = '3.0-SNAPSHOT'
291 olt_app_version = '2.0-SNAPSHOT'
292 elif major == 1:
293 if minor > 10:
294 cordigmp_app_version = '3.0-SNAPSHOT'
295 olt_app_version = '2.0-SNAPSHOT'
296 elif minor <= 8:
297 olt_app_version = '1.1-SNAPSHOT'
298 cls.app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-{}.oar'.format(cordigmp_app_version))
299 cls.table_app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-multitable-{}.oar'.format(cordigmp_app_version))
300 cls.olt_app_file = os.path.join(cls.test_path, '..', 'apps/olt-app-{}.oar'.format(olt_app_version))
301
302 @classmethod
A R Karthickd44cea12016-07-20 12:16:41 -0700303 def load_device_id(cls):
A R Karthickb03cecd2016-07-27 10:27:55 -0700304 '''Configure the device id'''
305 did = OnosCtrl.get_device_id()
A R Karthickd44cea12016-07-20 12:16:41 -0700306 #Set the default config
307 cls.device_id = did
308 cls.device_dict = { "devices" : {
309 "{}".format(did) : {
310 "basic" : {
311 "driver" : "pmc-olt"
312 }
313 }
314 },
315 }
316 return did
317
318 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700319 def setUpClass(cls):
320 '''Load the OLT config and activate relevant apps'''
A R Karthickb608d402017-06-02 11:48:41 -0700321 cls.update_apps_version()
A R Karthickb7e80902016-05-17 09:38:31 -0700322 cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700323 if cls.VOLTHA_ENABLED is False:
A R Karthick38d5df42017-07-10 13:33:26 -0700324 OnosCtrl.config_device_driver()
A.R Karthick4c4d0492017-05-26 19:23:05 -0700325 OnosCtrl.cord_olt_config(cls.olt)
A R Karthickb03cecd2016-07-27 10:27:55 -0700326 cls.port_map, cls.port_list = cls.olt.olt_port_map()
A R Karthick0f6b6842016-12-06 17:17:44 -0800327 cls.switches = cls.port_map['switches']
328 cls.num_ports = cls.port_map['num_ports']
329 if cls.num_ports > 1:
330 cls.num_ports -= 1 ##account for the tx port
A.R Karthickaa859b22017-06-12 14:50:35 -0700331 cls.activate_apps(cls.apps + cls.olt_apps, deactivate = True)
A R Karthickb7e80902016-05-17 09:38:31 -0700332
333 @classmethod
334 def tearDownClass(cls):
335 '''Deactivate the olt apps and restart OVS back'''
A R Karthick38d5df42017-07-10 13:33:26 -0700336 apps = cls.olt_apps
A R Karthickb7e80902016-05-17 09:38:31 -0700337 for app in apps:
338 onos_ctrl = OnosCtrl(app)
339 onos_ctrl.deactivate()
A R Karthick38d5df42017-07-10 13:33:26 -0700340 if cls.VOLTHA_ENABLED is False:
341 OnosCtrl.config_device_driver(driver = 'ovs')
A R Karthickb7e80902016-05-17 09:38:31 -0700342
343 @classmethod
A.R Karthickaa859b22017-06-12 14:50:35 -0700344 def activate_apps(cls, apps, deactivate = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700345 for app in apps:
346 onos_ctrl = OnosCtrl(app)
A.R Karthickaa859b22017-06-12 14:50:35 -0700347 if deactivate is True:
348 onos_ctrl.deactivate()
349 time.sleep(2)
A R Karthickb7e80902016-05-17 09:38:31 -0700350 status, _ = onos_ctrl.activate()
351 assert_equal(status, True)
352 time.sleep(2)
353
354 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700355 def start_onos(cls, network_cfg = None):
A R Karthicka478df42016-07-27 16:51:08 -0700356 if cls.onos_restartable is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700357 log_test.info('ONOS restart is disabled. Skipping ONOS restart')
A R Karthick65c4d722016-07-18 14:20:17 -0700358 return
A.R Karthick4c4d0492017-05-26 19:23:05 -0700359 if cls.VOLTHA_ENABLED is True:
360 log_test.info('ONOS restart skipped as VOLTHA is running')
361 return
A R Karthickb7e80902016-05-17 09:38:31 -0700362 if network_cfg is None:
A R Karthick4b72d4b2016-06-15 11:09:17 -0700363 network_cfg = cls.device_dict
A R Karthickb7e80902016-05-17 09:38:31 -0700364
365 if type(network_cfg) is tuple:
366 res = []
367 for v in network_cfg:
368 res += v.items()
369 config = dict(res)
370 else:
371 config = network_cfg
A R Karthick76a497a2017-04-12 10:59:39 -0700372 log_test.info('Restarting ONOS with new network configuration')
A R Karthick338268f2016-06-21 17:12:13 -0700373 return cord_test_onos_restart(config = config)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700374
375 @classmethod
376 def remove_onos_config(cls):
377 try:
378 os.unlink('{}/network-cfg.json'.format(cls.onos_config_path))
379 except: pass
A R Karthickb7e80902016-05-17 09:38:31 -0700380
381 @classmethod
382 def start_cpqd(cls, mac = '00:11:22:33:44:55'):
383 dpid = mac.replace(':', '')
384 cpqd_file = os.sep.join( (cls.cpqd_path, 'cpqd.sh') )
385 cpqd_cmd = '{} {}'.format(cpqd_file, dpid)
386 ret = os.system(cpqd_cmd)
387 assert_equal(ret, 0)
388 time.sleep(10)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700389 device_id = 'of:{}{}'.format('0'*4, dpid)
390 return device_id
A R Karthickb7e80902016-05-17 09:38:31 -0700391
392 @classmethod
393 def start_ovs(cls):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700394 ovs_file = os.sep.join( (cls.ovs_path, 'of-bridge.sh') )
A R Karthickb7e80902016-05-17 09:38:31 -0700395 ret = os.system(ovs_file)
396 assert_equal(ret, 0)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700397 time.sleep(30)
A R Karthickb7e80902016-05-17 09:38:31 -0700398
A R Karthicka013a272016-08-16 16:40:19 -0700399 @classmethod
400 def ovs_cleanup(cls):
401 ##For every test case, delete all the OVS groups
402 cmd = 'ovs-ofctl del-groups br-int -OOpenFlow11 >/dev/null 2>&1'
A R Karthicka013a272016-08-16 16:40:19 -0700403 try:
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700404 cord_test_shell(cmd)
405 ##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 -0700406 os.system(cmd)
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700407 finally:
408 return
A R Karthicka013a272016-08-16 16:40:19 -0700409
A R Karthickb7e80902016-05-17 09:38:31 -0700410 def onos_aaa_load(self):
411 if self.aaa_loaded:
412 return
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700413 aaa_dict = {'apps' : { 'org.opencord.aaa' : { 'AAA' : { 'radiusSecret': 'radius_password',
414 'radiusIp': '172.17.0.2' } } } }
A R Karthickb7e80902016-05-17 09:38:31 -0700415 radius_ip = os.getenv('ONOS_AAA_IP') or '172.17.0.2'
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700416 aaa_dict['apps']['org.opencord.aaa']['AAA']['radiusIp'] = radius_ip
417 self.onos_load_config('org.opencord.aaa', aaa_dict)
A R Karthickb7e80902016-05-17 09:38:31 -0700418 self.aaa_loaded = True
419
420 def onos_dhcp_table_load(self, config = None):
421 dhcp_dict = {'apps' : { 'org.onosproject.dhcp' : { 'dhcp' : copy.copy(self.dhcp_server_config) } } }
422 dhcp_config = dhcp_dict['apps']['org.onosproject.dhcp']['dhcp']
423 if config:
424 for k in config.keys():
425 if dhcp_config.has_key(k):
426 dhcp_config[k] = config[k]
427 self.onos_load_config('org.onosproject.dhcp', dhcp_dict)
428
429 def onos_load_config(self, app, config):
430 status, code = OnosCtrl.config(config)
431 if status is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700432 log_test.info('JSON config request for app %s returned status %d' %(app, code))
A R Karthickb7e80902016-05-17 09:38:31 -0700433 assert_equal(status, True)
434 time.sleep(2)
435
436 def dhcp_sndrcv(self, dhcp, update_seed = False):
437 cip, sip = dhcp.discover(update_seed = update_seed)
438 assert_not_equal(cip, None)
439 assert_not_equal(sip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700440 log_test.info('Got dhcp client IP %s from server %s for mac %s' %
A R Karthickb7e80902016-05-17 09:38:31 -0700441 (cip, sip, dhcp.get_mac(cip)[0]))
442 return cip,sip
443
444 def dhcp_request(self, subscriber, seed_ip = '10.10.10.1', update_seed = False):
445 config = {'startip':'10.10.10.20', 'endip':'10.10.10.200',
446 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
447 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
448 self.onos_dhcp_table_load(config)
449 dhcp = DHCPTest(seed_ip = seed_ip, iface = subscriber.iface)
450 cip, sip = self.dhcp_sndrcv(dhcp, update_seed = update_seed)
451 return cip, sip
452
453 def recv_channel_cb(self, pkt):
454 ##First verify that we have received the packet for the joined instance
455 chan = self.subscriber.caddr(pkt[IP].dst)
456 assert_equal(chan in self.subscriber.join_map.keys(), True)
457 recv_time = monotonic.monotonic() * 1000000
458 join_time = self.subscriber.join_map[chan][self.subscriber.STATS_JOIN].start
459 delta = recv_time - join_time
460 self.subscriber.join_rx_stats.update(packets=1, t = delta, usecs = True)
461 self.subscriber.channel_update(chan, self.subscriber.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700462 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 -0700463 self.test_status = True
464
A R Karthick65c4d722016-07-18 14:20:17 -0700465 def traffic_verify(self, subscriber):
466 if subscriber.has_service('TRAFFIC'):
467 url = 'http://www.google.com'
468 resp = requests.get(url)
469 self.test_status = resp.ok
470 if resp.ok == False:
A R Karthick76a497a2017-04-12 10:59:39 -0700471 log_test.info('Subscriber %s failed get from url %s with status code %d'
A R Karthick65c4d722016-07-18 14:20:17 -0700472 %(subscriber.name, url, resp.status_code))
473 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700474 log_test.info('GET request from %s succeeded for subscriber %s'
A R Karthick65c4d722016-07-18 14:20:17 -0700475 %(url, subscriber.name))
A R Karthicka013a272016-08-16 16:40:19 -0700476 return self.test_status
A R Karthick65c4d722016-07-18 14:20:17 -0700477
A R Karthickb7e80902016-05-17 09:38:31 -0700478 def tls_verify(self, subscriber):
A.R Karthick8a507cf2017-06-02 18:44:49 -0700479 def tls_fail_cb():
480 log_test.info('TLS verification failed')
A R Karthickb7e80902016-05-17 09:38:31 -0700481 if subscriber.has_service('TLS'):
A.R Karthickaa859b22017-06-12 14:50:35 -0700482 #OnosCtrl('org.opencord.aaa').deactivate()
483 #time.sleep(2)
484 #OnosCtrl('org.opencord.aaa').activate()
485 #time.sleep(5)
A.R Karthick8a507cf2017-06-02 18:44:49 -0700486 tls = TLSAuthTest(fail_cb = tls_fail_cb, intf = subscriber.rx_intf)
A R Karthick76a497a2017-04-12 10:59:39 -0700487 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700488 tls.runTest()
A.R Karthick8a507cf2017-06-02 18:44:49 -0700489 assert_equal(tls.failTest, False)
A R Karthickb7e80902016-05-17 09:38:31 -0700490 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700491 return self.test_status
492 else:
493 self.test_status = True
494 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700495
496 def dhcp_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700497 if subscriber.has_service('DHCP'):
498 cip, sip = self.dhcp_request(subscriber, update_seed = True)
A R Karthick76a497a2017-04-12 10:59:39 -0700499 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700500 subscriber.src_list = [cip]
501 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700502 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700503 else:
504 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
505 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700506 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700507
508 def dhcp_jump_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700509 if subscriber.has_service('DHCP'):
510 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.200.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700511 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700512 subscriber.src_list = [cip]
513 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700514 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700515 else:
516 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
517 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700518 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700519
520 def dhcp_next_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700521 if subscriber.has_service('DHCP'):
522 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.150.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700523 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700524 subscriber.src_list = [cip]
525 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700526 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700527 else:
528 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
529 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700530 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700531
532 def igmp_verify(self, subscriber):
533 chan = 0
534 if subscriber.has_service('IGMP'):
A R Karthick338268f2016-06-21 17:12:13 -0700535 ##We wait for all the subscribers to join before triggering leaves
536 if subscriber.rx_port > 1:
537 time.sleep(5)
538 subscriber.channel_join(chan, delay = 0)
539 self.num_joins += 1
540 while self.num_joins < self.num_subscribers:
541 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700542 log_test.info('All subscribers have joined the channel')
A R Karthick338268f2016-06-21 17:12:13 -0700543 for i in range(10):
544 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
A R Karthick76a497a2017-04-12 10:59:39 -0700545 log_test.info('Leaving channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700546 subscriber.channel_leave(chan)
A R Karthick338268f2016-06-21 17:12:13 -0700547 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700548 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 -0700549 #Should not receive packets for this subscriber
550 self.recv_timeout = True
551 subscriber.recv_timeout = True
552 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
553 subscriber.recv_timeout = False
554 self.recv_timeout = False
A R Karthick76a497a2017-04-12 10:59:39 -0700555 log_test.info('Joining channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthick338268f2016-06-21 17:12:13 -0700556 subscriber.channel_join(chan, delay = 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700557 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700558 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700559
560 def igmp_jump_verify(self, subscriber):
561 if subscriber.has_service('IGMP'):
562 for i in xrange(subscriber.num):
A R Karthick76a497a2017-04-12 10:59:39 -0700563 log_test.info('Subscriber %s jumping channel' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700564 chan = subscriber.channel_jump(delay=0)
565 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 1)
A R Karthick76a497a2017-04-12 10:59:39 -0700566 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700567 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700568 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 -0700569 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700570 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700571
572 def igmp_next_verify(self, subscriber):
573 if subscriber.has_service('IGMP'):
574 for i in xrange(subscriber.num):
575 if i:
A.R Karthick517f7812017-05-18 11:22:46 -0700576 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700577 else:
578 chan = subscriber.channel_join(i, delay=0)
A R Karthick76a497a2017-04-12 10:59:39 -0700579 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700580 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
A R Karthick76a497a2017-04-12 10:59:39 -0700581 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700582 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700583 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 -0700584 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700585 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700586
A.R Karthick4c4d0492017-05-26 19:23:05 -0700587 def voltha_igmp_next_verify(self, subscriber):
588 if subscriber.has_service('IGMP'):
589 for c in xrange(self.VOLTHA_IGMP_ITERATIONS):
590 for i in xrange(subscriber.num):
591 if i:
592 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
593 time.sleep(0.2)
594 else:
595 chan = subscriber.channel_join(i, delay=0)
596 time.sleep(0.2)
A.R Karthick56e59432017-06-06 18:05:46 -0700597 if subscriber.num == 1:
598 subscriber.channel_leave(chan)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700599 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
600 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
601 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
602 self.test_status = True
603 return self.test_status
604
A R Karthick31f1f342017-05-19 13:55:10 -0700605 def igmp_leave_verify(self, subscriber):
606 if subscriber.has_service('IGMP'):
607 for chan in xrange(subscriber.num):
A R Karthick78d1f492017-05-19 14:24:17 -0700608 subscriber.channel_leave(chan, force = True)
A R Karthick31f1f342017-05-19 13:55:10 -0700609 time.sleep(2)
610 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
611 #self.recv_timeout = True
612 #subscriber.recv_timeout = True
613 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
614 #self.recv_timeout = False
615 #subscriber.recv_timeout = False
616 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
617 #time.sleep(1)
618
619 self.test_status = True
620 return self.test_status
621
A R Karthickb7e80902016-05-17 09:38:31 -0700622 def generate_port_list(self, subscribers, channels):
623 return self.port_list[:subscribers]
624
A.R Karthick4c4d0492017-05-26 19:23:05 -0700625 def subscriber_load(self, create = True, num = 10, num_channels = 1, channel_start = 0, port_list = [], services = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700626 '''Load the subscriber from the database'''
A.R Karthick4c4d0492017-05-26 19:23:05 -0700627 test_services = services if services else self.test_services
628 self.subscriber_db = SubscriberDB(create = create, services = test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700629 if create is True:
630 self.subscriber_db.generate(num)
631 self.subscriber_info = self.subscriber_db.read(num)
632 self.subscriber_list = []
633 if not port_list:
634 port_list = self.generate_port_list(num, num_channels)
635
636 index = 0
637 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700638 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700639 service=info['Service'],
640 port_map = self.port_map,
641 num=num_channels,
642 channel_start = channel_start,
643 tx_port = port_list[index][0],
644 rx_port = port_list[index][1]))
645 if num_channels > 1:
646 channel_start += num_channels
647 index += 1
648
649 #load the ssm list for all subscriber channels
650 igmpChannel = IgmpChannel()
651 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
652 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
653 igmpChannel.igmp_load_ssm_config(ssm_list)
654
A.R Karthick95d044e2016-06-10 18:44:36 -0700655 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700656 channel_start = 0, cbs = None, port_list = [],
657 services = None, negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700658 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700659 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700660 subscribers_count = num_subscribers
661 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700662 self.subscriber_load(create = True, num = num_subscribers,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700663 num_channels = num_channels, channel_start = channel_start, port_list = port_list,
664 services = services)
A R Karthickb7e80902016-05-17 09:38:31 -0700665 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700666 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
667
A R Karthick338268f2016-06-21 17:12:13 -0700668 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800669 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700670 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700671 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700672 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700673 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700674 if services and 'IGMP' in services:
675 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700676 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
677 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
678 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
679 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
680 else:
681 cbs = cbs_negative
682 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700683 pool_object = subscriber_pool(subscriber, cbs)
684 self.thread_pool.addTask(pool_object.pool_cb)
685 self.thread_pool.cleanUpThreads()
686 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700687 if services and 'IGMP' in services:
688 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700689 if chan_leave is True:
690 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700691 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700692 return self.test_status
693
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700694 def tls_invalid_cert(self, subscriber):
695 if subscriber.has_service('TLS'):
696 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700697 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700698 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
699 tls.runTest()
700 if tls.failTest == True:
701 self.test_status = False
702 return self.test_status
703 else:
704 self.test_status = True
705 return self.test_status
706
707 def tls_no_cert(self, subscriber):
708 if subscriber.has_service('TLS'):
709 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700710 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700711 tls = TLSAuthTest(client_cert = '')
712 tls.runTest()
713 if tls.failTest == True:
714 self.test_status = False
715 return self.test_status
716 else:
717 self.test_status = True
718 return self.test_status
719
720 def tls_self_signed_cert(self, subscriber):
721 if subscriber.has_service('TLS'):
722 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700723 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700724 tls = TLSAuthTest(client_cert = self.CLIENT_CERT)
725 tls.runTest()
726 if tls.failTest == False:
727 self.test_status = True
728 return self.test_status
729 else:
730 self.test_status = True
731 return self.test_status
732
733 def tls_non_ca_authrized_cert(self, subscriber):
734 if subscriber.has_service('TLS'):
735 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700736 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700737 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
738 tls.runTest()
739 if tls.failTest == False:
740 self.test_status = True
741 return self.test_status
742 else:
743 self.test_status = True
744 return self.test_status
745
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700746 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
747 if subscriber.has_service('TLS'):
748 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700749 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700750 num_users = 3
751 for i in xrange(num_users):
752 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
753 tls.runTest()
754 if tls.failTest == False:
755 self.test_status = True
756 return self.test_status
757 else:
758 self.test_status = True
759 return self.test_status
760
761 def dhcp_discover_scenario(self, subscriber):
762 if subscriber.has_service('DHCP'):
763 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700764 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700765 t1 = self.subscriber_dhcp_1release()
766 self.test_status = True
767 return self.test_status
768 else:
769 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
770 self.test_status = True
771 return self.test_status
772
773 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700774 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
775 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
776 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
777 self.onos_dhcp_table_load(config)
778 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
779 cip, sip = self.send_recv()
780 log_test.info('Releasing ip %s to server %s' %(cip, sip))
781 assert_equal(self.dhcp.release(cip), True)
782 log_test.info('Triggering DHCP discover again after release')
783 cip2, sip2 = self.send_recv(update_seed = True)
784 log_test.info('Verifying released IP was given back on rediscover')
785 assert_equal(cip, cip2)
786 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
787 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700788
789 def dhcp_client_reboot_scenario(self, subscriber):
790 if subscriber.has_service('DHCP'):
791 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700792 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700793 tl = self.subscriber_dhcp_client_request_after_reboot()
794 self.test_status = True
795 return self.test_status
796 else:
797 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
798 self.test_status = True
799 return self.test_status
800
801 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
802 #''' Client sends DHCP Request after reboot.'''
803
804 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
805 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
806 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
807 self.onos_dhcp_table_load(config)
808 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
809 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700810 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700811 (cip, sip, mac) )
812
A R Karthick76a497a2017-04-12 10:59:39 -0700813 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 -0700814
815 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700816 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 -0700817 assert_not_equal(cip, None)
818
819 else:
820 new_cip, new_sip = self.dhcp.only_request(cip, mac)
821 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700822 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700823 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700824 log_test.info('Client goes down.')
825 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700826
827 time.sleep(5)
828
829 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700830 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700831
832 new_cip, new_sip = self.dhcp.only_request(cip, mac)
833 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700834 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700835 assert_not_equal(new_cip, None)
836 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700837 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700838
839 def dhcp_client_renew_scenario(self, subscriber):
840 if subscriber.has_service('DHCP'):
841 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700842 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700843 tl = self.subscriber_dhcp_client_renew_time()
844 self.test_status = True
845 return self.test_status
846 else:
847 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
848 self.test_status = True
849 return self.test_status
850
851 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
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) )
860
A R Karthick76a497a2017-04-12 10:59:39 -0700861 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 -0700862 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700863 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 -0700864 assert_not_equal(cip, None)
865 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700866 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700867 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
868 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700869 log_test.info("Client 's Renewal time is :%s",lval)
870 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700871 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700872 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700873 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
874 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700875 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700876 (latest_cip, mac, latest_sip) )
877
878 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700879 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700880 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700881 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700882
883 def dhcp_server_reboot_scenario(self, subscriber):
884 if subscriber.has_service('DHCP'):
885 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700886 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700887 tl = self.subscriber_dhcp_server_after_reboot()
888 self.test_status = True
889 return self.test_status
890 else:
891 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
892 self.test_status = True
893 return self.test_status
894
895 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
896 ''' DHCP server goes down.'''
897 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
898 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
899 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
900 self.onos_dhcp_table_load(config)
901 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
902 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700903 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700904 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700905 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 -0700906 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700907 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 -0700908 assert_not_equal(cip, None)
909 else:
910 new_cip, new_sip = self.dhcp.only_request(cip, mac)
911 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700912 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700913 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700914 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700915 onos_ctrl = OnosCtrl(self.dhcp_app)
916 onos_ctrl.deactivate()
917 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700918 log_test.info("Sending DHCP Request.")
919 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700920 new_cip, new_sip = self.dhcp.only_request(cip, mac)
921 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700922 log_test.info('')
923 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700924 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700925 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700926 assert_equal(new_cip,None) #Neagtive Test Case
A R Karthick76a497a2017-04-12 10:59:39 -0700927 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700928# self.activate_apps(self.dhcp_app)
929 onos_ctrl = OnosCtrl(self.dhcp_app)
930 status, _ = onos_ctrl.activate()
931 assert_equal(status, True)
932 time.sleep(3)
933 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700934 log_test.info("Sending DHCP Request after DHCP server is up.")
935 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700936 new_cip, new_sip = self.dhcp.only_request(cip, mac)
937 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700938 log_test.info('')
939 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700940 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700941 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700942 assert_equal(new_cip,None) #Neagtive Test Case
943
944 def dhcp_client_rebind_scenario(self, subscriber):
945 if subscriber.has_service('DHCP'):
946 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700947 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700948 tl = self.subscriber_dhcp_client_rebind_time()
949 self.test_status = True
950 return self.test_status
951 else:
952 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
953 self.test_status = True
954 return self.test_status
955
956 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
957 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
958 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
959 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
960 self.onos_dhcp_table_load(config)
961 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
962 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700963 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700964 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700965 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 -0700966 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700967 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 -0700968 assert_not_equal(cip, None)
969 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700970 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700971 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
972 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700973 log_test.info("Client 's Rebind time is :%s",lval)
974 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700975 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700976 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700977 self.dhcp.after_T2 = True
978 for i in range(0,4):
979 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
980 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700981 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700982 (latest_cip, mac, latest_sip) )
983 break
984 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700985 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700986 assert_not_equal(latest_cip, None)
987 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700988 log_test.info("Got DHCP NAK.Lease not Renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700989
990 def dhcp_starvation_scenario(self, subscriber):
991 if subscriber.has_service('DHCP'):
992 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700993 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700994 tl = self.subscriber_dhcp_starvation()
995 self.test_status = True
996 return self.test_status
997 else:
998 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
999 self.test_status = True
1000 return self.test_status
1001
1002 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
1003 '''DHCP starve'''
1004 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
1005 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
1006 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
1007 self.onos_dhcp_table_load(config)
1008 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001009 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001010 for x in xrange(50):
1011 mac = RandMAC()._fix()
1012 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -07001013 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001014 cip, sip = self.send_recv(update_seed = True, validate = False)
1015 assert_equal(cip, None)
1016 assert_equal(sip, None)
1017
1018 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
1019 if subscriber.has_service('DHCP'):
1020 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001021 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001022 tl = self.subscriber_dhcp_same_client_multiple_discover()
1023 self.test_status = True
1024 return self.test_status
1025 else:
1026 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1027 self.test_status = True
1028 return self.test_status
1029
1030 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
1031 ''' DHCP Client sending multiple discover . '''
1032 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1033 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1034 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1035 self.onos_dhcp_table_load(config)
1036 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
1037 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001038 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 -07001039 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001040 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001041 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
1042 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001043 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 -07001044 % (new_cip, new_sip, new_mac) )
1045 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001046 log_test.info('Ip after 1st discover %s' %cip)
1047 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001048 assert_equal(cip, new_cip)
1049
1050 def dhcp_same_client_multi_request_scenario(self, subscriber):
1051 if subscriber.has_service('DHCP'):
1052 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001053 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001054 tl = self.subscriber_dhcp_same_client_multiple_request()
1055 self.test_status = True
1056 return self.test_status
1057 else:
1058 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1059 self.test_status = True
1060 return self.test_status
1061
1062 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1063 ''' DHCP Client sending multiple repeat DHCP requests. '''
1064 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1065 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1066 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1067 self.onos_dhcp_table_load(config)
1068 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001069 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001070 cip, sip = self.send_recv()
1071 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001072 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001073 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1074 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001075 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 -07001076 % (new_cip, new_sip, mac) )
1077 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001078 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001079 assert_equal(new_cip, None)
1080 assert_equal(new_sip, None)
1081 else:
1082 print "Something went wrong."
1083
1084 def dhcp_client_desired_ip_scenario(self, subscriber):
1085 if subscriber.has_service('DHCP'):
1086 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001087 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001088 tl = self.subscriber_dhcp_client_desired_address()
1089 self.test_status = True
1090 return self.test_status
1091 else:
1092 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1093 self.test_status = True
1094 return self.test_status
1095
1096 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1097 '''DHCP Client asking for desired IP address.'''
1098 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1099 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1100 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1101 self.onos_dhcp_table_load(config)
1102 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1103 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001104 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001105 (cip, sip, mac) )
1106 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001107 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001108 (cip, sip, mac) )
1109 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001110 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001111 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001112 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001113 assert_equal(cip, self.dhcp.seed_ip)
1114
1115 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1116 if subscriber.has_service('DHCP'):
1117 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001118 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001119 tl = self.subscriber_dhcp_server_nak_packet()
1120 self.test_status = True
1121 return self.test_status
1122 else:
1123 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1124 self.test_status = True
1125 return self.test_status
1126
1127 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1128 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1129 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1130 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1131 self.onos_dhcp_table_load(config)
1132 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1133 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001134 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001135 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001136 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 -07001137 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001138 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 -07001139 assert_not_equal(cip, None)
1140 else:
1141 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1142 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001143 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001144 assert_equal(new_cip, None) #Negative Test Case
1145
1146 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1147 if subscriber.has_service('DHCP'):
1148 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001149 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001150 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1151 self.test_status = True
1152 return self.test_status
1153 else:
1154 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1155 self.test_status = True
1156 return self.test_status
1157
1158 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1159 '''DHCP Client asking for desired IP address from out of pool.'''
1160 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1161 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1162 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1163 self.onos_dhcp_table_load(config)
1164 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1165 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001166 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001167 (cip, sip, mac) )
1168 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001169 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001170 (cip, sip, mac) )
1171 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1172
1173 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001174 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001175 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001176 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001177 assert_not_equal(cip, self.dhcp.seed_ip)
1178
1179 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001180 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001181
1182 def dhcp_client_specific_lease_scenario(self, subscriber):
1183 if subscriber.has_service('DHCP'):
1184 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001185 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001186 tl = self.subscriber_dhcp_specific_lease_packet()
1187 self.test_status = True
1188 return self.test_status
1189 else:
1190 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1191 self.test_status = True
1192 return self.test_status
1193
1194 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1195 ''' Client sends DHCP Discover packet for particular lease time.'''
1196 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1197 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1198 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1199 self.onos_dhcp_table_load(config)
1200 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001201 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001202 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1203
A R Karthick76a497a2017-04-12 10:59:39 -07001204 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001205 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001206 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 -07001207 assert_not_equal(cip, None)
1208 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001209 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 -07001210 (cip, sip, mac, lval) )
1211 assert_not_equal(lval, 700)
1212
1213 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001214 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001215 self.num_subscribers = 5
1216 self.num_channels = 1
A R Karthick38d5df42017-07-10 13:33:26 -07001217 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1218 num_channels = self.num_channels,
1219 port_list = self.generate_port_list(self.num_subscribers,
1220 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001221 assert_equal(test_status, True)
1222
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001223 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001224 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001225 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001226 self.num_channels = 10
1227 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1228 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001229 cbs = (self.tls_verify, self.dhcp_jump_verify,
1230 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001231 port_list = self.generate_port_list(self.num_subscribers,
1232 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001233 assert_equal(test_status, True)
1234
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001235 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001236 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001237 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001238 self.num_channels = 10
1239 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1240 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001241 cbs = (self.tls_verify, self.dhcp_next_verify,
1242 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001243 port_list = self.generate_port_list(self.num_subscribers,
1244 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001245 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001246
A.R Karthick517f7812017-05-18 11:22:46 -07001247 def test_cord_subscriber_join_next_without_leave(self):
1248 """Test subscriber join next for channel surfing"""
1249 self.num_subscribers = self.num_ports * len(self.switches)
1250 self.num_channels = 5
1251 self.leave_flag = False
1252 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1253 num_channels = self.num_channels,
1254 cbs = (self.tls_verify, self.dhcp_next_verify,
1255 self.igmp_next_verify, self.traffic_verify),
1256 port_list = self.generate_port_list(self.num_subscribers,
1257 self.num_channels))
1258 self.leave_flag = True
1259 assert_equal(test_status, True)
1260
A R Karthick31f1f342017-05-19 13:55:10 -07001261 def test_cord_subscriber_leave(self):
1262 """Test subscriber leaves for all the join nexts before"""
1263 self.num_subscribers = self.num_ports * len(self.switches)
1264 self.num_channels = 5
1265 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1266 num_channels = self.num_channels,
1267 cbs = (self.tls_verify, self.dhcp_next_verify,
1268 self.igmp_leave_verify, self.traffic_verify),
1269 port_list = self.generate_port_list(self.num_subscribers,
1270 self.num_channels))
1271 assert_equal(test_status, True)
1272
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001273 #@deferred(SUBSCRIBER_TIMEOUT)
1274 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1275 ### """Test subscriber to auth with invalidCertification and join channel"""
1276 num_subscribers = 1
1277 num_channels = 1
1278 df = defer.Deferred()
1279 def sub_auth_invalid_cert(df):
1280 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1281 num_channels = num_channels,
1282 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1283 self.igmp_verify, self.traffic_verify),
1284 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1285 assert_equal(test_status, False)
1286 df.callback(0)
1287 reactor.callLater(0, sub_auth_invalid_cert, df)
1288 return df
1289
1290 #@deferred(SUBSCRIBER_TIMEOUT)
1291 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1292 ### """Test subscriber to auth with No Certification and join channel"""
1293 num_subscribers = 1
1294 num_channels = 1
1295 df = defer.Deferred()
1296 def sub_auth_no_cert(df):
1297 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1298 num_channels = num_channels,
1299 cbs = (self.tls_no_cert, self.dhcp_verify,
1300 self.igmp_verify, self.traffic_verify),
1301 port_list = self.generate_port_list(num_subscribers, num_channels),
1302 negative_subscriber_auth = 'all')
1303 assert_equal(test_status, False)
1304 df.callback(0)
1305 reactor.callLater(0, sub_auth_no_cert, df)
1306 return df
1307 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1308 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1309 num_subscribers = 1
1310 num_channels = 1
1311 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1312 num_channels = num_channels,
1313 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1314 self.igmp_verify, self.traffic_verify),
1315 port_list = self.generate_port_list(num_subscribers, num_channels),
1316 negative_subscriber_auth = 'all')
1317 assert_equal(test_status, True)
1318
1319 @deferred(SUBSCRIBER_TIMEOUT)
1320 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1321 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1322 num_subscribers = 2
1323 num_channels = 1
1324 df = defer.Deferred()
1325 def sub_auth_invalid_cert(df):
1326 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1327 num_channels = num_channels,
1328 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1329 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1330 assert_equal(test_status, True)
1331 df.callback(0)
1332 reactor.callLater(0, sub_auth_invalid_cert, df)
1333 return df
1334
1335 @deferred(SUBSCRIBER_TIMEOUT)
1336 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1337 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1338 num_subscribers = 2
1339 num_channels = 1
1340 df = defer.Deferred()
1341 def sub_auth_no_cert(df):
1342 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1343 num_channels = num_channels,
1344 cbs = (self.tls_no_cert, self.dhcp_verify,
1345 self.igmp_verify, self.traffic_verify),
1346 port_list = self.generate_port_list(num_subscribers, num_channels),
1347 negative_subscriber_auth = 'half')
1348 assert_equal(test_status, True)
1349 df.callback(0)
1350 reactor.callLater(0, sub_auth_no_cert, df)
1351 return df
1352
1353 @deferred(SUBSCRIBER_TIMEOUT)
1354 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1355 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1356 num_subscribers = 2
1357 num_channels = 1
1358 df = defer.Deferred()
1359 def sub_auth_no_cert(df):
1360 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1361 num_channels = num_channels,
1362 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1363 self.igmp_verify, self.traffic_verify),
1364 port_list = self.generate_port_list(num_subscribers, num_channels),
1365 negative_subscriber_auth = 'half')
1366 assert_equal(test_status, True)
1367 df.callback(0)
1368 reactor.callLater(0, sub_auth_no_cert, df)
1369 return df
1370
1371 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1372 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1373 num_subscribers = 1
1374 num_channels = 1
1375 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1376 num_channels = num_channels,
1377 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1378 self.igmp_verify, self.traffic_verify),
1379 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1380 assert_equal(test_status, True)
1381
1382 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1383 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1384 num_subscribers = 1
1385 num_channels = 1
1386 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1387 num_channels = num_channels,
1388 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1389 self.igmp_verify, self.traffic_verify),
1390 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1391 assert_equal(test_status, True)
1392
1393 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1394 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1395 num_subscribers = 1
1396 num_channels = 1
1397 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1398 num_channels = num_channels,
1399 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1400 self.igmp_verify, self.traffic_verify),
1401 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1402 assert_equal(test_status, True)
1403
1404 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1405 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1406 num_subscribers = 1
1407 num_channels = 1
1408 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1409 num_channels = num_channels,
1410 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1411 self.igmp_verify, self.traffic_verify),
1412 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1413 assert_equal(test_status, True)
1414
1415
1416 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1417 ### """Test subscriber auth , DHCP starvation and join channel"""
1418 num_subscribers = 1
1419 num_channels = 1
1420 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1421 num_channels = num_channels,
1422 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1423 self.igmp_verify, self.traffic_verify),
1424 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1425 assert_equal(test_status, True)
1426
1427 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1428 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1429 num_subscribers = 1
1430 num_channels = 1
1431 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1432 num_channels = num_channels,
1433 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1434 self.igmp_verify, self.traffic_verify),
1435 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1436 assert_equal(test_status, True)
1437
1438 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1439 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1440 num_subscribers = 1
1441 num_channels = 1
1442 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1443 num_channels = num_channels,
1444 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1445 self.igmp_verify, self.traffic_verify),
1446 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1447 assert_equal(test_status, True)
1448
1449 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1450 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1451 num_subscribers = 1
1452 num_channels = 1
1453 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1454 num_channels = num_channels,
1455 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1456 self.igmp_verify, self.traffic_verify),
1457 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1458 assert_equal(test_status, True)
1459
1460 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1461 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1462 num_subscribers = 1
1463 num_channels = 1
1464 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1465 num_channels = num_channels,
1466 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1467 self.igmp_verify, self.traffic_verify),
1468 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1469 assert_equal(test_status, True)
1470
1471 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1472 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1473 num_subscribers = 1
1474 num_channels = 1
1475 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1476 num_channels = num_channels,
1477 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1478 self.igmp_verify, self.traffic_verify),
1479 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1480 assert_equal(test_status, True)
1481
1482
1483 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1484 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1485 num_subscribers = 1
1486 num_channels = 1
1487 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1488 num_channels = num_channels,
1489 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1490 self.igmp_verify, self.traffic_verify),
1491 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1492 assert_equal(test_status, True)
1493
1494 #@deferred(SUBSCRIBER_TIMEOUT)
1495 @nottest
1496 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1497 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1498 num_subscribers = 1000
1499 num_channels = 1
1500 df = defer.Deferred()
1501 def sub_auth_invalid_cert(df):
1502 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1503 num_channels = num_channels,
1504 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1505 self.igmp_verify, self.traffic_verify),
1506 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1507 assert_equal(test_status, True)
1508 df.callback(0)
1509 reactor.callLater(0, sub_auth_invalid_cert, df)
1510 return df
1511
1512 @nottest
1513 @deferred(SUBSCRIBER_TIMEOUT)
1514 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1515 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1516 num_subscribers = 1000
1517 num_channels = 1
1518 df = defer.Deferred()
1519 def sub_auth_no_cert(df):
1520 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1521 num_channels = num_channels,
1522 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1523 port_list = self.generate_port_list(num_subscribers, num_channels),
1524 negative_subscriber_auth = 'half')
1525 assert_equal(test_status, True)
1526 df.callback(0)
1527 reactor.callLater(0, sub_auth_no_cert, df)
1528 return df
1529
1530 #@deferred(SUBSCRIBER_TIMEOUT)
1531 @nottest
1532 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1533 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1534 num_subscribers = 1000
1535 num_channels = 1
1536 df = defer.Deferred()
1537 def sub_auth_no_cert(df):
1538 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1539 num_channels = num_channels,
1540 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1541 port_list = self.generate_port_list(num_subscribers, num_channels),
1542 negative_subscriber_auth = 'half')
1543 assert_equal(test_status, True)
1544 df.callback(0)
1545 reactor.callLater(0, sub_auth_no_cert, df)
1546 return df
1547
1548 #@deferred(SUBSCRIBER_TIMEOUT)
1549 @nottest
1550 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1551 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1552 num_subscribers = 5000
1553 num_channels = 1
1554 df = defer.Deferred()
1555 def sub_auth_invalid_cert(df):
1556 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1557 num_channels = num_channels,
1558 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1559 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1560 assert_equal(test_status, True)
1561 df.callback(0)
1562 reactor.callLater(0, sub_auth_invalid_cert, df)
1563 return df
1564
1565 #@deferred(SUBSCRIBER_TIMEOUT)
1566 @nottest
1567 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1568 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1569 num_subscribers = 5000
1570 num_channels = 1
1571 df = defer.Deferred()
1572 def sub_auth_no_cert(df):
1573 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1574 num_channels = num_channels,
1575 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1576 port_list = self.generate_port_list(num_subscribers, num_channels),
1577 negative_subscriber_auth = 'half')
1578 assert_equal(test_status, True)
1579 df.callback(0)
1580 reactor.callLater(0, sub_auth_no_cert, df)
1581 return df
1582
1583 #@deferred(SUBSCRIBER_TIMEOUT)
1584 @nottest
1585 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1586 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1587 num_subscribers = 5000
1588 num_channels = 1
1589 df = defer.Deferred()
1590 def sub_auth_no_cert(df):
1591 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1592 num_channels = num_channels,
1593 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1594 port_list = self.generate_port_list(num_subscribers, num_channels),
1595 negative_subscriber_auth = 'half')
1596 assert_equal(test_status, True)
1597 df.callback(0)
1598 reactor.callLater(0, sub_auth_no_cert, df)
1599 return df
1600
1601 #@deferred(SUBSCRIBER_TIMEOUT)
1602 @nottest
1603 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1604 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1605 num_subscribers = 10000
1606 num_channels = 1
1607 df = defer.Deferred()
1608 def sub_auth_invalid_cert(df):
1609 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1610 num_channels = num_channels,
1611 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1612 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1613 assert_equal(test_status, True)
1614 df.callback(0)
1615 reactor.callLater(0, sub_auth_invalid_cert, df)
1616 return df
1617
1618 #@deferred(SUBSCRIBER_TIMEOUT)
1619 @nottest
1620 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1621 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1622 num_subscribers = 10000
1623 num_channels = 1
1624 df = defer.Deferred()
1625 def sub_auth_no_cert(df):
1626 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1627 num_channels = num_channels,
1628 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1629 port_list = self.generate_port_list(num_subscribers, num_channels),
1630 negative_subscriber_auth = 'onethird')
1631 assert_equal(test_status, True)
1632 df.callback(0)
1633 reactor.callLater(0, sub_auth_no_cert, df)
1634 return df
1635
1636 #@deferred(SUBSCRIBER_TIMEOUT)
1637 @nottest
1638 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1639 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1640 num_subscribers = 10000
1641 num_channels = 1
1642 df = defer.Deferred()
1643 def sub_auth_no_cert(df):
1644 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1645 num_channels = num_channels,
1646 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1647 port_list = self.generate_port_list(num_subscribers, num_channels),
1648 negative_subscriber_auth = 'onethird')
1649 assert_equal(test_status, False)
1650 assert_equal(test_status, True)
1651 df.callback(0)
1652 reactor.callLater(0, sub_auth_no_cert, df)
1653 return df
1654
1655 @nottest
1656 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1657 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1658 num_subscribers = 1000
1659 num_channels = 1
1660 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1661 num_channels = num_channels,
1662 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1663 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1664 assert_equal(test_status, True)
1665
1666 @nottest
1667 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1668 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1669 num_subscribers = 1000
1670 num_channels = 1
1671 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1672 num_channels = num_channels,
1673 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1674 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1675 assert_equal(test_status, True)
1676
1677 @nottest
1678 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1679 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1680 num_subscribers = 1000
1681 num_channels = 1
1682 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1683 num_channels = num_channels,
1684 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1685 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1686 assert_equal(test_status, True)
1687
1688 @nottest
1689 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1690 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1691 num_subscribers = 1000
1692 num_channels = 1
1693 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1694 num_channels = num_channels,
1695 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1696 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1697 assert_equal(test_status, True)
1698
1699 @nottest
1700 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1701 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1702 num_subscribers = 1000
1703 num_channels = 1
1704 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1705 num_channels = num_channels,
1706 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1707 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1708 assert_equal(test_status, True)
1709
1710 @nottest
1711 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1712 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1713 num_subscribers = 1000
1714 num_channels = 1
1715 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1716 num_channels = num_channels,
1717 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1718 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1719 assert_equal(test_status, True)
1720
1721 @nottest
1722 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1723 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1724 num_subscribers = 1000
1725 num_channels = 1
1726 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1727 num_channels = num_channels,
1728 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1729 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1730 assert_equal(test_status, True)
1731
1732 def test_4_cord_subscribers_join_recv_5channel(self):
1733 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1734 num_subscribers = 4
1735 num_channels = 5
1736 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1737 num_channels = num_channels,
1738 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1739 port_list = self.generate_port_list(num_subscribers, num_channels),
1740 negative_subscriber_auth = 'all')
1741 assert_equal(test_status, True)
1742
1743 def test_4_cord_subscribers_join_jump_5channel(self):
1744 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1745 num_subscribers = 4
1746 num_channels = 5
1747 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1748 num_channels = num_channels,
1749 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1750 port_list = self.generate_port_list(num_subscribers, num_channels),
1751 negative_subscriber_auth = 'all')
1752 assert_equal(test_status, True)
1753
1754 def test_4_cord_subscribers_join_next_5channel(self):
1755 ###"""Test 4 subscribers join next for 5 channels"""
1756 num_subscribers = 4
1757 num_channels = 5
1758 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1759 num_channels = num_channels,
1760 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1761 port_list = self.generate_port_list(num_subscribers, num_channels),
1762 negative_subscriber_auth = 'all')
1763 assert_equal(test_status, True)
1764
1765 def test_10_cord_subscribers_join_recv_5channel(self):
1766 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1767 num_subscribers = 10
1768 num_channels = 5
1769 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1770 num_channels = num_channels,
1771 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1772 port_list = self.generate_port_list(num_subscribers, num_channels),
1773 negative_subscriber_auth = 'all')
1774 assert_equal(test_status, True)
1775
1776 def test_10_cord_subscribers_join_jump_5channel(self):
1777 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1778 num_subscribers = 10
1779 num_channels = 5
1780 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1781 num_channels = num_channels,
1782 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1783 port_list = self.generate_port_list(num_subscribers, num_channels),
1784 negative_subscriber_auth = 'all')
1785 assert_equal(test_status, True)
1786
1787
1788 def test_10_cord_subscribers_join_next_5channel(self):
1789 ###"""Test 10 subscribers join next for 5 channels"""
1790 num_subscribers = 10
1791 num_channels = 5
1792 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1793 num_channels = num_channels,
1794 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1795 port_list = self.generate_port_list(num_subscribers, num_channels),
1796 negative_subscriber_auth = 'all')
1797 assert_equal(test_status, True)
1798
1799
1800
1801 def test_cord_subscriber_join_recv_100channels(self):
1802 num_subscribers = 1
1803 num_channels = 100
1804 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1805 num_channels = num_channels,
1806 cbs = (self.tls_verify, self.dhcp_verify,
1807 self.igmp_verify, self.traffic_verify),
1808 port_list = self.generate_port_list(num_subscribers, num_channels),
1809 negative_subscriber_auth = 'all')
1810 assert_equal(test_status, True)
1811
1812 def test_cord_subscriber_join_recv_400channels(self):
1813 num_subscribers = 1
1814 num_channels = 400
1815 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1816 num_channels = num_channels,
1817 cbs = (self.tls_verify, self.dhcp_verify,
1818 self.igmp_verify, self.traffic_verify),
1819 port_list = self.generate_port_list(num_subscribers, num_channels),
1820 negative_subscriber_auth = 'all')
1821 assert_equal(test_status, True)
1822
1823 def test_cord_subscriber_join_recv_800channels(self):
1824 num_subscribers = 1
1825 num_channels = 800
1826 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1827 num_channels = num_channels,
1828 cbs = (self.tls_verify, self.dhcp_verify,
1829 self.igmp_verify, self.traffic_verify),
1830 port_list = self.generate_port_list(num_subscribers, num_channels),
1831 negative_subscriber_auth = 'all')
1832 assert_equal(test_status, True)
1833
1834 def test_cord_subscriber_join_recv_1200channels(self):
1835 num_subscribers = 1
1836 num_channels = 1200
1837 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1838 num_channels = num_channels,
1839 cbs = (self.tls_verify, self.dhcp_verify,
1840 self.igmp_verify, self.traffic_verify),
1841 port_list = self.generate_port_list(num_subscribers, num_channels),
1842 negative_subscriber_auth = 'all')
1843 assert_equal(test_status, True)
1844
1845 def test_cord_subscriber_join_recv_1500channels(self):
1846 num_subscribers = 1
1847 num_channels = 1500
1848 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1849 num_channels = num_channels,
1850 cbs = (self.tls_verify, self.dhcp_verify,
1851 self.igmp_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
1856 def test_cord_subscriber_join_jump_100channels(self):
1857 num_subscribers = 1
1858 num_channels = 100
1859 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1860 num_channels = num_channels,
1861 cbs = (self.tls_verify, self.dhcp_jump_verify,
1862 self.igmp_jump_verify, self.traffic_verify),
1863 port_list = self.generate_port_list(num_subscribers, num_channels),
1864 negative_subscriber_auth = 'all')
1865 assert_equal(test_status, True)
1866 def test_cord_subscriber_join_jump_400channels(self):
1867 num_subscribers = 1
1868 num_channels = 400
1869 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1870 num_channels = num_channels,
1871 cbs = (self.tls_verify, self.dhcp_jump_verify,
1872 self.igmp_jump_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_jump_800channels(self):
1878 num_subscribers = 1
1879 num_channels = 800
1880 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1881 num_channels = num_channels,
1882 cbs = (self.tls_verify, self.dhcp_jump_verify,
1883 self.igmp_jump_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 def test_cord_subscriber_join_jump_1200channel(sself):
1888 num_subscribers = 1
1889 num_channels = 1200
1890 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1891 num_channels = num_channels,
1892 cbs = (self.tls_verify, self.dhcp_jump_verify,
1893 self.igmp_jump_verify, self.traffic_verify),
1894 port_list = self.generate_port_list(num_subscribers, num_channels),
1895 negative_subscriber_auth = 'all')
1896 assert_equal(test_status, True)
1897 def test_cord_subscriber_join_jump_1500channels(self):
1898 num_subscribers = 1
1899 num_channels = 1500
1900 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1901 num_channels = num_channels,
1902 cbs = (self.tls_verify, self.dhcp_jump_verify,
1903 self.igmp_jump_verify, self.traffic_verify),
1904 port_list = self.generate_port_list(num_subscribers, num_channels),
1905 negative_subscriber_auth = 'all')
1906 assert_equal(test_status, True)
1907
1908 def test_cord_subscriber_join_next_100channels(self):
1909 num_subscribers = 1
1910 num_channels = 100
1911 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1912 num_channels = num_channels,
1913 cbs = (self.tls_verify, self.dhcp_next_verify,
1914 self.igmp_next_verify, self.traffic_verify),
1915 port_list = self.generate_port_list(num_subscribers, num_channels),
1916 negative_subscriber_auth = 'all')
1917 assert_equal(test_status, True)
1918
1919 def test_cord_subscriber_join_next_400channels(self):
1920 num_subscribers = 1
1921 num_channels = 400
1922 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1923 num_channels = num_channels,
1924 cbs = (self.tls_verify, self.dhcp_next_verify,
1925 self.igmp_next_verify, self.traffic_verify),
1926 port_list = self.generate_port_list(num_subscribers, num_channels),
1927 negative_subscriber_auth = 'all')
1928 assert_equal(test_status, True)
1929
1930 def test_cord_subscriber_join_next_800channels(self):
1931 num_subscribers = 1
1932 num_channels = 800
1933 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1934 num_channels = num_channels,
1935 cbs = (self.tls_verify, self.dhcp_next_verify,
1936 self.igmp_next_verify, self.traffic_verify),
1937 port_list = self.generate_port_list(num_subscribers, num_channels),
1938 negative_subscriber_auth = 'all')
1939 assert_equal(test_status, True)
1940
1941
1942 def test_cord_subscriber_join_next_1200channels(self):
1943 num_subscribers = 1
1944 num_channels = 1200
1945 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1946 num_channels = num_channels,
1947 cbs = (self.tls_verify, self.dhcp_next_verify,
1948 self.igmp_next_verify, self.traffic_verify),
1949 port_list = self.generate_port_list(num_subscribers, num_channels),
1950 negative_subscriber_auth = 'all')
1951 assert_equal(test_status, True)
1952
1953 def test_cord_subscriber_join_next_1500channels(self):
1954 num_subscribers = 1
1955 num_channels = 1500
1956 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1957 num_channels = num_channels,
1958 cbs = (self.tls_verify, self.dhcp_next_verify,
1959 self.igmp_next_verify, self.traffic_verify),
1960 port_list = self.generate_port_list(num_subscribers, num_channels),
1961 negative_subscriber_auth = 'all')
1962 assert_equal(test_status, True)
1963
1964 @nottest
1965 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1966 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1967 num_subscribers = 1000
1968 num_channels = 1
1969 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1970 num_channels = num_channels,
1971 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
1972 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1973 assert_equal(test_status, True)
1974
1975 @nottest
1976 def test_1k_cord_subscribers_join_recv_100channel(self):
1977 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
1978 num_subscribers = 1000
1979 num_channels = 100
1980 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1981 num_channels = num_channels,
1982 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1983 port_list = self.generate_port_list(num_subscribers, num_channels),
1984 negative_subscriber_auth = 'all')
1985 assert_equal(test_status, True)
1986
1987 @nottest
1988 def test_1k_cord_subscribers_join_jump_100channel(self):
1989 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
1990 num_subscribers = 1000
1991 num_channels = 100
1992 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1993 num_channels = num_channels,
1994 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1995 port_list = self.generate_port_list(num_subscribers, num_channels),
1996 negative_subscriber_auth = 'all')
1997 assert_equal(test_status, True)
1998
1999 @nottest
2000 def test_1k_cord_subscribers_join_next_100channel(self):
2001 ###"""Test 1k subscribers join next for 100 channels"""
2002 num_subscribers = 1000
2003 num_channels = 100
2004 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2005 num_channels = num_channels,
2006 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2007 port_list = self.generate_port_list(num_subscribers, num_channels),
2008 negative_subscriber_auth = 'all')
2009 assert_equal(test_status, True)
2010
2011 @nottest
2012 def test_1k_cord_subscribers_join_recv_400channel(self):
2013 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
2014 num_subscribers = 1000
2015 num_channels = 400
2016 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2017 num_channels = num_channels,
2018 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2019 port_list = self.generate_port_list(num_subscribers, num_channels),
2020 negative_subscriber_auth = 'all')
2021 assert_equal(test_status, True)
2022
2023 @nottest
2024 def test_1k_cord_subscribers_join_jump_400channel(self):
2025 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
2026 num_subscribers = 1000
2027 num_channels = 400
2028 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2029 num_channels = num_channels,
2030 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2031 port_list = self.generate_port_list(num_subscribers, num_channels),
2032 negative_subscriber_auth = 'all')
2033 assert_equal(test_status, True)
2034
2035 @nottest
2036 def test_1k_cord_subscribers_join_next_400channel(self):
2037 ###"""Test 1k subscribers join next for 400 channels"""
2038 num_subscribers = 1000
2039 num_channels = 400
2040 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2041 num_channels = num_channels,
2042 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2043 port_list = self.generate_port_list(num_subscribers, num_channels),
2044 negative_subscriber_auth = 'all')
2045 assert_equal(test_status, True)
2046
2047 @nottest
2048 def test_1k_cord_subscribers_join_recv_800channel(self):
2049 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2050 num_subscribers = 1000
2051 num_channels = 800
2052 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2053 num_channels = num_channels,
2054 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2055 port_list = self.generate_port_list(num_subscribers, num_channels),
2056 negative_subscriber_auth = 'all')
2057 assert_equal(test_status, True)
2058
2059 @nottest
2060 def test_1k_cord_subscribers_join_jump_800channel(self):
2061 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2062 num_subscribers = 1000
2063 num_channels = 800
2064 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2065 num_channels = num_channels,
2066 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2067 port_list = self.generate_port_list(num_subscribers, num_channels),
2068 negative_subscriber_auth = 'all')
2069 assert_equal(test_status, True)
2070
2071 @nottest
2072 def test_1k_cord_subscribers_join_next_800channel(self):
2073 ###"""Test 1k subscribers join next for 800 channels"""
2074 num_subscribers = 1000
2075 num_channels = 800
2076 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2077 num_channels = num_channels,
2078 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2079 port_list = self.generate_port_list(num_subscribers, num_channels),
2080 negative_subscriber_auth = 'all')
2081 assert_equal(test_status, True)
2082
2083 @nottest
2084 def test_1k_cord_subscribers_join_recv_1200channel(self):
2085 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2086 num_subscribers = 1000
2087 num_channels = 1200
2088 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2089 num_channels = num_channels,
2090 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2091 port_list = self.generate_port_list(num_subscribers, num_channels),
2092 negative_subscriber_auth = 'all')
2093 assert_equal(test_status, True)
2094
2095 @nottest
2096 def test_1k_cord_subscribers_join_jump_1200channel(self):
2097 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2098 num_subscribers = 1000
2099 num_channels = 1200
2100 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2101 num_channels = num_channels,
2102 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2103 port_list = self.generate_port_list(num_subscribers, num_channels),
2104 negative_subscriber_auth = 'all')
2105 assert_equal(test_status, True)
2106
2107 @nottest
2108 def test_1k_cord_subscribers_join_next_1200channel(self):
2109 ###"""Test 1k subscribers join next for 1200 channels"""
2110 num_subscribers = 1000
2111 num_channels = 1200
2112 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2113 num_channels = num_channels,
2114 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2115 port_list = self.generate_port_list(num_subscribers, num_channels),
2116 negative_subscriber_auth = 'all')
2117 assert_equal(test_status, True)
2118
2119 @nottest
2120 def test_1k_cord_subscribers_join_recv_1500channel(self):
2121 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2122 num_subscribers = 1000
2123 num_channels = 1500
2124 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2125 num_channels = num_channels,
2126 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2127 port_list = self.generate_port_list(num_subscribers, num_channels),
2128 negative_subscriber_auth = 'all')
2129 assert_equal(test_status, True)
2130
2131 @nottest
2132 def test_1k_cord_subscribers_join_jump_1500channel(self):
2133 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2134 num_subscribers = 1000
2135 num_channels = 1500
2136 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2137 num_channels = num_channels,
2138 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2139 port_list = self.generate_port_list(num_subscribers, num_channels),
2140 negative_subscriber_auth = 'all')
2141 assert_equal(test_status, True)
2142
2143 @nottest
2144 def test_1k_cord_subscribers_join_next_1500channel(self):
2145 ###"""Test 1k subscribers join next for 1500 channels"""
2146 num_subscribers = 1000
2147 num_channels = 1500
2148 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2149 num_channels = num_channels,
2150 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2151 port_list = self.generate_port_list(num_subscribers, num_channels),
2152 negative_subscriber_auth = 'all')
2153 assert_equal(test_status, True)
2154
2155 @nottest
2156 def test_5k_cord_subscribers_join_recv_100channel(self):
2157 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2158 num_subscribers = 5000
2159 num_channels = 100
2160 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2161 num_channels = num_channels,
2162 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2163 port_list = self.generate_port_list(num_subscribers, num_channels),
2164 negative_subscriber_auth = 'all')
2165 assert_equal(test_status, True)
2166
2167 @nottest
2168 def test_5k_cord_subscribers_join_jump_100channel(self):
2169 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2170 num_subscribers = 5000
2171 num_channels = 100
2172 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2173 num_channels = num_channels,
2174 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2175 port_list = self.generate_port_list(num_subscribers, num_channels),
2176 negative_subscriber_auth = 'all')
2177 assert_equal(test_status, True)
2178
2179 @nottest
2180 def test_5k_cord_subscribers_join_next_100channel(self):
2181 ###"""Test 5k subscribers join next for 100 channels"""
2182 num_subscribers = 5000
2183 num_channels = 100
2184 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2185 num_channels = num_channels,
2186 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2187 port_list = self.generate_port_list(num_subscribers, num_channels),
2188 negative_subscriber_auth = 'all')
2189 assert_equal(test_status, True)
2190
2191 @nottest
2192 def test_5k_cord_subscribers_join_recv_400channel(self):
2193 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2194 num_subscribers = 5000
2195 num_channels = 400
2196 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2197 num_channels = num_channels,
2198 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2199 port_list = self.generate_port_list(num_subscribers, num_channels),
2200 negative_subscriber_auth = 'all')
2201 assert_equal(test_status, True)
2202
2203 @nottest
2204 def test_5k_cord_subscribers_join_jump_400channel(self):
2205 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2206 num_subscribers = 5000
2207 num_channels = 400
2208 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2209 num_channels = num_channels,
2210 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2211 port_list = self.generate_port_list(num_subscribers, num_channels),
2212 negative_subscriber_auth = 'all')
2213 assert_equal(test_status, True)
2214
2215 @nottest
2216 def test_5k_cord_subscribers_join_next_400channel(self):
2217 ###"""Test 5k subscribers join next for 400 channels"""
2218 num_subscribers = 5000
2219 num_channels = 400
2220 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2221 num_channels = num_channels,
2222 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2223 port_list = self.generate_port_list(num_subscribers, num_channels),
2224 negative_subscriber_auth = 'all')
2225 assert_equal(test_status, True)
2226
2227 @nottest
2228 def test_5k_cord_subscribers_join_recv_800channel(self):
2229 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2230 num_subscribers = 5000
2231 num_channels = 800
2232 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2233 num_channels = num_channels,
2234 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2235 port_list = self.generate_port_list(num_subscribers, num_channels),
2236 negative_subscriber_auth = 'all')
2237 assert_equal(test_status, True)
2238
2239 @nottest
2240 def test_5k_cord_subscribers_join_jump_800channel(self):
2241 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2242 num_subscribers = 5000
2243 num_channels = 800
2244 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2245 num_channels = num_channels,
2246 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2247 port_list = self.generate_port_list(num_subscribers, num_channels),
2248 negative_subscriber_auth = 'all')
2249 assert_equal(test_status, True)
2250
2251 @nottest
2252 def test_5k_cord_subscribers_join_next_800channel(self):
2253 ###"""Test 5k subscribers join next for 800 channels"""
2254 num_subscribers = 5000
2255 num_channels = 800
2256 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2257 num_channels = num_channels,
2258 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2259 port_list = self.generate_port_list(num_subscribers, num_channels),
2260 negative_subscriber_auth = 'all')
2261 assert_equal(test_status, True)
2262
2263 @nottest
2264 def test_5k_cord_subscribers_join_recv_1200channel(self):
2265 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2266 num_subscribers = 5000
2267 num_channels = 1200
2268 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2269 num_channels = num_channels,
2270 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2271 port_list = self.generate_port_list(num_subscribers, num_channels),
2272 negative_subscriber_auth = 'all')
2273 assert_equal(test_status, True)
2274
2275 @nottest
2276 def test_5k_cord_subscribers_join_jump_1200channel(self):
2277 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2278 num_subscribers = 5000
2279 num_channels = 1200
2280 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2281 num_channels = num_channels,
2282 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2283 port_list = self.generate_port_list(num_subscribers, num_channels),
2284 negative_subscriber_auth = 'all')
2285 assert_equal(test_status, True)
2286
2287 @nottest
2288 def test_5k_cord_subscribers_join_next_1200channel(self):
2289 ###"""Test 5k subscribers join next for 1200 channels"""
2290 num_subscribers = 5000
2291 num_channels = 1200
2292 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2293 num_channels = num_channels,
2294 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2295 port_list = self.generate_port_list(num_subscribers, num_channels),
2296 negative_subscriber_auth = 'all')
2297 assert_equal(test_status, True)
2298
2299 @nottest
2300 def test_5k_cord_subscribers_join_recv_1500channel(self):
2301 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2302 num_subscribers = 5000
2303 num_channels = 1500
2304 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2305 num_channels = num_channels,
2306 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2307 port_list = self.generate_port_list(num_subscribers, num_channels),
2308 negative_subscriber_auth = 'all')
2309 assert_equal(test_status, True)
2310
2311 @nottest
2312 def test_5k_cord_subscribers_join_jump_1500channel(self):
2313 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2314 num_subscribers = 5000
2315 num_channels = 1500
2316 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2317 num_channels = num_channels,
2318 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2319 port_list = self.generate_port_list(num_subscribers, num_channels),
2320 negative_subscriber_auth = 'all')
2321 assert_equal(test_status, True)
2322
2323 @nottest
2324 def test_5k_cord_subscribers_join_next_1500channel(self):
2325 ###"""Test 5k subscribers join next for 1500 channels"""
2326 num_subscribers = 5000
2327 num_channels = 1500
2328 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2329 num_channels = num_channels,
2330 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2331 port_list = self.generate_port_list(num_subscribers, num_channels),
2332 negative_subscriber_auth = 'all')
2333 assert_equal(test_status, True)
2334
2335 @nottest
2336 def test_10k_cord_subscribers_join_recv_100channel(self):
2337 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2338 num_subscribers = 10000
2339 num_channels = 100
2340 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2341 num_channels = num_channels,
2342 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2343 port_list = self.generate_port_list(num_subscribers, num_channels),
2344 negative_subscriber_auth = 'all')
2345 assert_equal(test_status, True)
2346
2347 @nottest
2348 def test_10k_cord_subscribers_join_jump_100channel(self):
2349 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2350 num_subscribers = 10000
2351 num_channels = 100
2352 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2353 num_channels = num_channels,
2354 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2355 port_list = self.generate_port_list(num_subscribers, num_channels),
2356 negative_subscriber_auth = 'all')
2357 assert_equal(test_status, True)
2358
2359 @nottest
2360 def test_10k_cord_subscribers_join_next_100channel(self):
2361 ###"""Test 10k subscribers join next for 100 channels"""
2362 num_subscribers = 10000
2363 num_channels = 100
2364 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2365 num_channels = num_channels,
2366 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2367 port_list = self.generate_port_list(num_subscribers, num_channels),
2368 negative_subscriber_auth = 'all')
2369 assert_equal(test_status, True)
2370
2371 @nottest
2372 def test_100k_cord_subscribers_join_recv_100channel(self):
2373 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2374 num_subscribers = 100000
2375 num_channels = 100
2376 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2377 num_channels = num_channels,
2378 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2379 port_list = self.generate_port_list(num_subscribers, num_channels),
2380 negative_subscriber_auth = 'all')
2381 assert_equal(test_status, True)
2382
2383 @nottest
2384 def test_100k_cord_subscribers_join_jump_100channel(self):
2385 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2386 num_subscribers = 100000
2387 num_channels = 100
2388 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2389 num_channels = num_channels,
2390 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2391 port_list = self.generate_port_list(num_subscribers, num_channels),
2392 negative_subscriber_auth = 'all')
2393 assert_equal(test_status, True)
2394
2395 @nottest
2396 def test_100k_cord_subscribers_join_next_100channel(self):
2397 ###"""Test 100k subscribers join next for 100 channels"""
2398 num_subscribers = 100000
2399 num_channels = 100
2400 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2401 num_channels = num_channels,
2402 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2403 port_list = self.generate_port_list(num_subscribers, num_channels),
2404 negative_subscriber_auth = 'all')
2405 assert_equal(test_status, True)
2406
2407 @nottest
2408 def test_10k_cord_subscribers_join_recv_400channel(self):
2409 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2410 num_subscribers = 10000
2411 num_channels = 400
2412 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2413 num_channels = num_channels,
2414 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2415 port_list = self.generate_port_list(num_subscribers, num_channels),
2416 negative_subscriber_auth = 'all')
2417 assert_equal(test_status, True)
2418
2419 @nottest
2420 def test_10k_cord_subscribers_join_jump_400channel(self):
2421 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2422 num_subscribers = 10000
2423 num_channels = 400
2424 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2425 num_channels = num_channels,
2426 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2427 port_list = self.generate_port_list(num_subscribers, num_channels),
2428 negative_subscriber_auth = 'all')
2429 assert_equal(test_status, True)
2430
2431 @nottest
2432 def test_10k_cord_subscribers_join_next_400channel(self):
2433 ###"""Test 10k subscribers join next for 400 channels"""
2434 num_subscribers = 10000
2435 num_channels = 400
2436 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2437 num_channels = num_channels,
2438 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2439 port_list = self.generate_port_list(num_subscribers, num_channels),
2440 negative_subscriber_auth = 'all')
2441 assert_equal(test_status, True)
2442
2443 @nottest
2444 def test_10k_cord_subscribers_join_recv_800channel(self):
2445 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2446 num_subscribers = 10000
2447 num_channels = 800
2448 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2449 num_channels = num_channels,
2450 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2451 port_list = self.generate_port_list(num_subscribers, num_channels),
2452 negative_subscriber_auth = 'all')
2453 assert_equal(test_status, True)
2454
2455 @nottest
2456 def test_10k_cord_subscribers_join_jump_800channel(self):
2457 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2458 num_subscribers = 10000
2459 num_channels = 800
2460 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2461 num_channels = num_channels,
2462 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2463 port_list = self.generate_port_list(num_subscribers, num_channels),
2464 negative_subscriber_auth = 'all')
2465 assert_equal(test_status, True)
2466
2467 @nottest
2468 def test_10k_cord_subscribers_join_next_800channel(self):
2469 ###"""Test 10k subscribers join next for 800 channels"""
2470 num_subscribers = 10000
2471 num_channels = 800
2472 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2473 num_channels = num_channels,
2474 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2475 port_list = self.generate_port_list(num_subscribers, num_channels),
2476 negative_subscriber_auth = 'all')
2477 assert_equal(test_status, True)
2478
2479 @nottest
2480 def test_10k_cord_subscribers_join_recv_1200channel(self):
2481 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2482 num_subscribers = 10000
2483 num_channels = 1200
2484 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2485 num_channels = num_channels,
2486 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2487 port_list = self.generate_port_list(num_subscribers, num_channels),
2488 negative_subscriber_auth = 'all')
2489 assert_equal(test_status, True)
2490
2491 @nottest
2492 def test_10k_cord_subscribers_join_jump_1200channel(self):
2493 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2494 num_subscribers = 10000
2495 num_channels = 1200
2496 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2497 num_channels = num_channels,
2498 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2499 port_list = self.generate_port_list(num_subscribers, num_channels),
2500 negative_subscriber_auth = 'all')
2501 assert_equal(test_status, True)
2502
2503 @nottest
2504 def test_10k_cord_subscribers_join_next_1200channel(self):
2505 ###"""Test 10k subscribers join next for 1200 channels"""
2506 num_subscribers = 10000
2507 num_channels = 1200
2508 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2509 num_channels = num_channels,
2510 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2511 port_list = self.generate_port_list(num_subscribers, num_channels),
2512 negative_subscriber_auth = 'all')
2513 assert_equal(test_status, True)
2514
2515 @nottest
2516 def test_10k_cord_subscribers_join_recv_1500channel(self):
2517 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2518 num_subscribers = 10000
2519 num_channels = 1500
2520 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2521 num_channels = num_channels,
2522 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2523 port_list = self.generate_port_list(num_subscribers, num_channels),
2524 negative_subscriber_auth = 'all')
2525 assert_equal(test_status, True)
2526
2527 @nottest
2528 def test_10k_cord_subscribers_join_jump_1500channel(self):
2529 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2530 num_subscribers = 10000
2531 num_channels = 1500
2532 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2533 num_channels = num_channels,
2534 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2535 port_list = self.generate_port_list(num_subscribers, num_channels),
2536 negative_subscriber_auth = 'all')
2537 assert_equal(test_status, True)
2538
2539 @nottest
2540 def test_10k_cord_subscribers_join_next_1500channel(self):
2541 ###"""Test 10k subscribers join next for 1500 channels"""
2542 num_subscribers = 10000
2543 num_channels = 1500
2544 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2545 num_channels = num_channels,
2546 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2547 port_list = self.generate_port_list(num_subscribers, num_channels),
2548 negative_subscriber_auth = 'all')
2549 assert_equal(test_status, True)
2550
2551 @nottest
2552 def test_100k_cord_subscribers_join_recv_1500channel(self):
2553 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2554 num_subscribers = 100000
2555 num_channels = 1500
2556 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2557 num_channels = num_channels,
2558 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2559 port_list = self.generate_port_list(num_subscribers, num_channels),
2560 negative_subscriber_auth = 'all')
2561 assert_equal(test_status, True)
2562
2563 @nottest
2564 def test_100k_cord_subscribers_join_jump_1500channel(self):
2565 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2566 num_subscribers = 100000
2567 num_channels = 1500
2568 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2569 num_channels = num_channels,
2570 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2571 port_list = self.generate_port_list(num_subscribers, num_channels),
2572 negative_subscriber_auth = 'all')
2573 assert_equal(test_status, True)
2574
2575 @nottest
2576 def test_100k_cord_subscribers_join_next_1500channel(self):
2577 ###"""Test 10k subscribers join next for 1500 channels"""
2578 num_subscribers = 100000
2579 num_channels = 1500
2580 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2581 num_channels = num_channels,
2582 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2583 port_list = self.generate_port_list(num_subscribers, num_channels),
2584 negative_subscriber_auth = 'all')
2585 assert_equal(test_status, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002586
2587
2588
A.R Karthick8a507cf2017-06-02 18:44:49 -07002589 def remove_olt(self, switch_map):
2590 controller = get_controller()
2591 auth = ('karaf', 'karaf')
2592 #remove subscriber for every port on all the voltha devices
2593 for device, device_map in switch_map.iteritems():
2594 uni_ports = device_map['ports']
2595 uplink_vlan = device_map['uplink_vlan']
2596 for port in uni_ports:
2597 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}'.format(controller,
2598 device,
2599 port)
2600 resp = requests.delete(rest_url, auth = auth)
2601 if resp.status_code not in [204, 202, 200]:
2602 log_test.error('Error deleting subscriber for device %s on port %s' %(device, port))
2603 else:
2604 log_test.info('Deleted subscriber for device %s on port %s' %(device, port))
A.R Karthick4c4d0492017-05-26 19:23:05 -07002605
2606 def config_olt(self, switch_map):
2607 controller = get_controller()
A.R Karthick4c4d0492017-05-26 19:23:05 -07002608 auth = ('karaf', 'karaf')
2609 #configure subscriber for every port on all the voltha devices
2610 for device, device_map in switch_map.iteritems():
2611 uni_ports = device_map['ports']
2612 uplink_vlan = device_map['uplink_vlan']
2613 for port in uni_ports:
2614 vlan = port
2615 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}/{}'.format(controller,
2616 device,
2617 port,
2618 vlan)
A.R Karthick4bd5f532017-06-06 11:37:27 -07002619 requests.post(rest_url, auth = auth)
2620 #assert_equal(resp.ok, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002621
A.R Karthick56e59432017-06-06 18:05:46 -07002622 def cord_subscriber_voltha(self, services, cbs = None, num_subscribers = 1, num_channels = 1):
A.R Karthick4c4d0492017-05-26 19:23:05 -07002623 """Test subscriber join next for channel surfing"""
2624 if self.VOLTHA_HOST is None:
2625 log_test.info('Skipping test as no voltha host')
2626 return
A.R Karthick8a507cf2017-06-02 18:44:49 -07002627 switch_map = None
2628 olt_configured = False
2629 try:
A R Karthick9dc6e922017-07-12 14:40:16 -07002630 switch_map = self.voltha_switch_map
A.R Karthick8a507cf2017-06-02 18:44:49 -07002631 if not switch_map:
2632 log_test.info('No voltha devices found')
2633 return
A.R Karthick8a507cf2017-06-02 18:44:49 -07002634 log_test.info('Adding subscribers through OLT app')
2635 self.config_olt(switch_map)
2636 olt_configured = True
2637 time.sleep(5)
A.R Karthick56e59432017-06-06 18:05:46 -07002638 self.num_subscribers = num_subscribers
2639 self.num_channels = num_channels
A.R Karthick8a507cf2017-06-02 18:44:49 -07002640 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
2641 num_channels = self.num_channels,
A.R Karthick56e59432017-06-06 18:05:46 -07002642 cbs = cbs,
A.R Karthick8a507cf2017-06-02 18:44:49 -07002643 port_list = self.generate_port_list(self.num_subscribers,
2644 self.num_channels),
2645 services = services)
2646 assert_equal(test_status, True)
2647 finally:
2648 if switch_map is not None:
2649 if olt_configured is True:
2650 self.remove_olt(switch_map)
A.R Karthick56e59432017-06-06 18:05:46 -07002651
2652 def test_cord_subscriber_voltha_tls(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002653 """Test subscriber TLS authentication with voltha"""
A.R Karthick56e59432017-06-06 18:05:46 -07002654 if self.VOLTHA_HOST is None:
2655 log_test.info('Skipping test as no voltha host')
2656 return
2657 num_subscribers = 1
2658 num_channels = 1
2659 services = ('TLS',)
2660 cbs = ( self.tls_verify, )
2661 self.cord_subscriber_voltha(services, cbs = cbs,
2662 num_subscribers = num_subscribers,
2663 num_channels = num_channels)
2664
2665 def test_cord_subscriber_voltha_tls_igmp(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002666 """Test subscriber TLS and IGMP with voltha with 1 channel"""
A.R Karthick56e59432017-06-06 18:05:46 -07002667 if self.VOLTHA_HOST is None:
2668 log_test.info('Skipping test as no voltha host')
2669 return
2670 num_subscribers = 1
2671 num_channels = 1
2672 services = ('TLS','IGMP',)
2673 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2674 self.cord_subscriber_voltha(services, cbs = cbs,
2675 num_subscribers = num_subscribers,
2676 num_channels = num_channels)
A.R Karthick4f583842017-06-09 17:15:47 -07002677
2678 def test_cord_subscriber_voltha_tls_igmp_3(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002679 """Test subscriber TLS and IGMP with voltha for channel surfing with 3 subscribers browsing 3 channels each"""
A.R Karthick4f583842017-06-09 17:15:47 -07002680 if self.VOLTHA_HOST is None:
2681 log_test.info('Skipping test as no voltha host')
2682 return
2683 num_subscribers = 3
2684 num_channels = 3
2685 services = ('TLS','IGMP',)
2686 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2687 self.cord_subscriber_voltha(services, cbs = cbs,
2688 num_subscribers = num_subscribers,
2689 num_channels = num_channels)