blob: 1915361fe912963dfb1b8426e479926c172ad0d1 [file] [log] [blame]
Matteo Scandolo48d3d2d2017-08-08 13:05:27 -07001
2# Copyright 2017-present Open Networking Foundation
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
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# 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
16
A R Karthicke237aee2016-12-01 17:46:43 -080017#
A R Karthick07608ef2016-08-23 16:51:19 -070018# Copyright 2016-present Ciena Corporation
19#
20# Licensed under the Apache License, Version 2.0 (the "License");
21# you may not use this file except in compliance with the License.
22# You may obtain a copy of the License at
A R Karthicke237aee2016-12-01 17:46:43 -080023#
A R Karthick07608ef2016-08-23 16:51:19 -070024# http://www.apache.org/licenses/LICENSE-2.0
A R Karthicke237aee2016-12-01 17:46:43 -080025#
A R Karthick07608ef2016-08-23 16:51:19 -070026# Unless required by applicable law or agreed to in writing, software
27# distributed under the License is distributed on an "AS IS" BASIS,
28# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29# See the License for the specific language governing permissions and
30# limitations under the License.
31#
A R Karthickb7e80902016-05-17 09:38:31 -070032import unittest
33from nose.tools import *
34from nose.twistedtools import reactor, deferred
35from twisted.internet import defer
A.R Karthick401a1ed2017-05-18 11:08:27 -070036from scapy.all import IP
A R Karthickb7e80902016-05-17 09:38:31 -070037import time, monotonic
38import os, sys
39import tempfile
40import random
41import threading
42import json
A R Karthick65c4d722016-07-18 14:20:17 -070043import requests
A R Karthickb7e80902016-05-17 09:38:31 -070044from Stats import Stats
45from OnosCtrl import OnosCtrl
46from DHCP import DHCPTest
47from EapTLS import TLSAuthTest
48from Channels import Channels, IgmpChannel
49from subscriberDb import SubscriberDB
50from threadPool import ThreadPool
A.R Karthick95d044e2016-06-10 18:44:36 -070051from portmaps import g_subscriber_port_map
A R Karthickb7e80902016-05-17 09:38:31 -070052from OltConfig import *
A.R Karthick8a507cf2017-06-02 18:44:49 -070053from CordTestServer import cord_test_onos_restart, cord_test_shell, cord_test_radius_restart
A.R Karthick4c4d0492017-05-26 19:23:05 -070054from CordTestUtils import log_test, get_controller
A R Karthick9313b762016-11-07 13:14:35 -080055from CordLogger import CordLogger
A R Karthick9dc6e922017-07-12 14:40:16 -070056from CordTestConfig import setup_module, teardown_module
A R Karthickb608d402017-06-02 11:48:41 -070057from CordContainer import Onos
A R Karthickb7e80902016-05-17 09:38:31 -070058
A R Karthick76a497a2017-04-12 10:59:39 -070059log_test.setLevel('INFO')
A R Karthickb7e80902016-05-17 09:38:31 -070060
61class Subscriber(Channels):
62 PORT_TX_DEFAULT = 2
63 PORT_RX_DEFAULT = 1
64 INTF_TX_DEFAULT = 'veth2'
65 INTF_RX_DEFAULT = 'veth0'
66 STATS_RX = 0
67 STATS_TX = 1
68 STATS_JOIN = 2
69 STATS_LEAVE = 3
70 SUBSCRIBER_SERVICES = 'DHCP IGMP TLS'
A.R Karthick4c4d0492017-05-26 19:23:05 -070071
A R Karthickb7e80902016-05-17 09:38:31 -070072 def __init__(self, name = 'sub', service = SUBSCRIBER_SERVICES, port_map = None,
73 num = 1, channel_start = 0,
74 tx_port = PORT_TX_DEFAULT, rx_port = PORT_RX_DEFAULT,
75 iface = INTF_RX_DEFAULT, iface_mcast = INTF_TX_DEFAULT,
76 mcast_cb = None, loginType = 'wireless'):
77 self.tx_port = tx_port
78 self.rx_port = rx_port
79 self.port_map = port_map or g_subscriber_port_map
80 try:
81 self.tx_intf = self.port_map[tx_port]
82 self.rx_intf = self.port_map[rx_port]
83 except:
84 self.tx_intf = self.port_map[self.PORT_TX_DEFAULT]
85 self.rx_intf = self.port_map[self.PORT_RX_DEFAULT]
86
A R Karthick76a497a2017-04-12 10:59:39 -070087 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 -070088 Channels.__init__(self, num, channel_start = channel_start,
A R Karthickb7e80902016-05-17 09:38:31 -070089 iface = self.rx_intf, iface_mcast = self.tx_intf, mcast_cb = mcast_cb)
90 self.name = name
91 self.service = service
92 self.service_map = {}
93 services = self.service.strip().split(' ')
94 for s in services:
95 self.service_map[s] = True
96 self.loginType = loginType
97 ##start streaming channels
98 self.join_map = {}
99 ##accumulated join recv stats
100 self.join_rx_stats = Stats()
A R Karthick338268f2016-06-21 17:12:13 -0700101 self.recv_timeout = False
A R Karthickb7e80902016-05-17 09:38:31 -0700102
103 def has_service(self, service):
104 if self.service_map.has_key(service):
105 return self.service_map[service]
106 if self.service_map.has_key(service.upper()):
107 return self.service_map[service.upper()]
108 return False
109
110 def channel_join_update(self, chan, join_time):
111 self.join_map[chan] = ( Stats(), Stats(), Stats(), Stats() )
112 self.channel_update(chan, self.STATS_JOIN, 1, t = join_time)
113
114 def channel_join(self, chan = 0, delay = 2):
115 '''Join a channel and create a send/recv stats map'''
116 if self.join_map.has_key(chan):
117 del self.join_map[chan]
118 self.delay = delay
119 chan, join_time = self.join(chan)
120 self.channel_join_update(chan, join_time)
121 return chan
122
A.R Karthick517f7812017-05-18 11:22:46 -0700123 def channel_join_next(self, delay = 2, leave_flag = True):
A R Karthickb7e80902016-05-17 09:38:31 -0700124 '''Joins the next channel leaving the last channel'''
125 if self.last_chan:
126 if self.join_map.has_key(self.last_chan):
127 del self.join_map[self.last_chan]
128 self.delay = delay
A.R Karthick517f7812017-05-18 11:22:46 -0700129 chan, join_time = self.join_next(leave_flag = leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700130 self.channel_join_update(chan, join_time)
131 return chan
132
133 def channel_jump(self, delay = 2):
134 '''Jumps randomly to the next channel leaving the last channel'''
135 if self.last_chan is not None:
136 if self.join_map.has_key(self.last_chan):
137 del self.join_map[self.last_chan]
138 self.delay = delay
139 chan, join_time = self.jump()
140 self.channel_join_update(chan, join_time)
141 return chan
142
A R Karthick78d1f492017-05-19 14:24:17 -0700143 def channel_leave(self, chan = 0, force = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700144 if self.join_map.has_key(chan):
145 del self.join_map[chan]
A R Karthick78d1f492017-05-19 14:24:17 -0700146 self.leave(chan, force = force)
A R Karthickb7e80902016-05-17 09:38:31 -0700147
148 def channel_update(self, chan, stats_type, packets, t=0):
149 if type(chan) == type(0):
150 chan_list = (chan,)
151 else:
152 chan_list = chan
A.R Karthick95d044e2016-06-10 18:44:36 -0700153 for c in chan_list:
A R Karthickb7e80902016-05-17 09:38:31 -0700154 if self.join_map.has_key(c):
155 self.join_map[c][stats_type].update(packets = packets, t = t)
156
A R Karthick338268f2016-06-21 17:12:13 -0700157 def channel_receive(self, chan, cb = None, count = 1, timeout = 5):
A R Karthick76a497a2017-04-12 10:59:39 -0700158 log_test.info('Subscriber %s on port %s receiving from group %s, channel %d' %
A R Karthick338268f2016-06-21 17:12:13 -0700159 (self.name, self.rx_intf, self.gaddr(chan), chan))
160 r = self.recv(chan, cb = cb, count = count, timeout = timeout)
A R Karthicka013a272016-08-16 16:40:19 -0700161 if len(r) == 0:
A R Karthick76a497a2017-04-12 10:59:39 -0700162 log_test.info('Subscriber %s on port %s timed out' %(self.name, self.rx_intf))
A R Karthicka013a272016-08-16 16:40:19 -0700163 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700164 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 -0700165 if self.recv_timeout:
166 ##Negative test case is disabled for now
167 assert_equal(len(r), 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700168
169 def recv_channel_cb(self, pkt):
170 ##First verify that we have received the packet for the joined instance
A R Karthick76a497a2017-04-12 10:59:39 -0700171 log_test.info('Packet received for group %s, subscriber %s, port %s' %
A R Karthick338268f2016-06-21 17:12:13 -0700172 (pkt[IP].dst, self.name, self.rx_intf))
173 if self.recv_timeout:
174 return
A R Karthickb7e80902016-05-17 09:38:31 -0700175 chan = self.caddr(pkt[IP].dst)
176 assert_equal(chan in self.join_map.keys(), True)
177 recv_time = monotonic.monotonic() * 1000000
178 join_time = self.join_map[chan][self.STATS_JOIN].start
179 delta = recv_time - join_time
180 self.join_rx_stats.update(packets=1, t = delta, usecs = True)
181 self.channel_update(chan, self.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700182 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 -0700183
184class subscriber_pool:
185
186 def __init__(self, subscriber, test_cbs):
187 self.subscriber = subscriber
188 self.test_cbs = test_cbs
189
190 def pool_cb(self):
191 for cb in self.test_cbs:
192 if cb:
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700193 self.test_status = cb(self.subscriber)
194 if self.test_status is not True:
195 ## This is chaning for other sub status has to check again
196 self.test_status = True
A R Karthick76a497a2017-04-12 10:59:39 -0700197 log_test.info('This service is failed and other services will not run for this subscriber')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700198 break
A R Karthick76a497a2017-04-12 10:59:39 -0700199 log_test.info('This Subscriber is tested for multiple service eligibility ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700200 self.test_status = True
201
A.R Karthick95d044e2016-06-10 18:44:36 -0700202
A R Karthick9313b762016-11-07 13:14:35 -0800203class subscriber_exchange(CordLogger):
A R Karthickb7e80902016-05-17 09:38:31 -0700204
A.R Karthick95d044e2016-06-10 18:44:36 -0700205 apps = ('org.opencord.aaa', 'org.onosproject.dhcp')
206 olt_apps = () #'org.opencord.cordmcast')
A R Karthicka013a272016-08-16 16:40:19 -0700207 vtn_app = 'org.opencord.vtn'
A R Karthickb7e80902016-05-17 09:38:31 -0700208 table_app = 'org.ciena.cordigmp'
209 dhcp_server_config = {
210 "ip": "10.1.11.50",
211 "mac": "ca:fe:ca:fe:ca:fe",
212 "subnet": "255.255.252.0",
213 "broadcast": "10.1.11.255",
214 "router": "10.1.8.1",
215 "domain": "8.8.8.8",
216 "ttl": "63",
217 "delay": "2",
218 "startip": "10.1.11.51",
219 "endip": "10.1.11.100"
220 }
221
222 aaa_loaded = False
223 test_path = os.path.dirname(os.path.realpath(__file__))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700224 table_app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-multitable-2.0-SNAPSHOT.oar')
225 app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-2.0-SNAPSHOT.oar')
A.R Karthick4c4d0492017-05-26 19:23:05 -0700226 olt_app_file = os.path.join(test_path, '..', 'apps/olt-app-1.2-SNAPSHOT.oar')
A.R Karthick8a507cf2017-06-02 18:44:49 -0700227 olt_app_name = 'org.onosproject.olt'
A R Karthickb7e80902016-05-17 09:38:31 -0700228 onos_config_path = os.path.join(test_path, '..', 'setup/onos-config')
A.R Karthick5968e0d2017-05-16 14:50:46 -0700229 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 -0700230 cpqd_path = os.path.join(test_path, '..', 'setup')
231 ovs_path = cpqd_path
A R Karthick65c4d722016-07-18 14:20:17 -0700232 test_services = ('IGMP', 'TRAFFIC')
A R Karthick338268f2016-06-21 17:12:13 -0700233 num_joins = 0
234 num_subscribers = 0
A.R Karthick517f7812017-05-18 11:22:46 -0700235 leave_flag = True
A R Karthick338268f2016-06-21 17:12:13 -0700236 num_channels = 0
237 recv_timeout = False
A R Karthick4e0c0912016-08-17 16:57:42 -0700238 onos_restartable = bool(int(os.getenv('ONOS_RESTART', 0)))
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700239 INTF_TX_DEFAULT = 'veth2'
240 INTF_RX_DEFAULT = 'veth0'
241 SUBSCRIBER_TIMEOUT = 300
242
243 CLIENT_CERT = """-----BEGIN CERTIFICATE-----
244MIICuDCCAiGgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
245CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
246IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
247RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwNjA2MjExMjI3WhcN
248MTcwNjAxMjExMjI3WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
249BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
250hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
251gYEAwvXiSzb9LZ6c7uNziUfKvoHO7wu/uiFC5YUpXbmVGuGZizbVrny0xnR85Dfe
252+9R4diansfDhIhzOUl1XjN3YDeSS9OeF5YWNNE8XDhlz2d3rVzaN6hIhdotBkUjg
253rUewjTg5OFR31QEyG3v8xR3CLgiE9xQELjZbSA07pD79zuUCAwEAAaNPME0wEwYD
254VR0lBAwwCgYIKwYBBQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5l
255eGFtcGxlLmNvbS9leGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOBgQDAjkrY
2566tDChmKbvr8w6Du/t8vHjTCoCIocHTN0qzWOeb1YsAGX89+TrWIuO1dFyYd+Z0KC
257PDKB5j/ygml9Na+AklSYAVJIjvlzXKZrOaPmhZqDufi+rXWti/utVqY4VMW2+HKC
258nXp37qWeuFLGyR1519Y1d6F/5XzqmvbwURuEug==
259-----END CERTIFICATE-----"""
260
261 CLIENT_CERT_INVALID = '''-----BEGIN CERTIFICATE-----
262MIIDvTCCAqWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
263CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
264IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
265RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwMzExMTg1MzM2WhcN
266MTcwMzA2MTg1MzM2WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
267BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
268hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
269AQoCggEBAOxemcBsPn9tZsCa5o2JA6sQDC7A6JgCNXXl2VFzKLNNvB9PS6D7ZBsQ
2705An0zEDMNzi51q7lnrYg1XyiE4S8FzMGAFr94RlGMQJUbRD9V/oqszMX4k++iAOK
271tIA1gr3x7Zi+0tkjVSVzXTmgNnhChAamdMsjYUG5+CY9WAicXyy+VEV3zTphZZDR
272OjcjEp4m/TSXVPYPgYDXI40YZKX5BdvqykWtT/tIgZb48RS1NPyN/XkCYzl3bv21
273qx7Mc0fcEbsJBIIRYTUkfxnsilcnmLxSYO+p+DZ9uBLBzcQt+4Rd5pLSfi21WM39
2742Z2oOi3vs/OYAPAqgmi2JWOv3mePa/8CAwEAAaNPME0wEwYDVR0lBAwwCgYIKwYB
275BQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5leGFtcGxlLmNvbS9l
276eGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOCAQEALBzMPDTIB6sLyPl0T6JV
277MjOkyldAVhXWiQsTjaGQGJUUe1cmUJyZbUZEc13MygXMPOM4x7z6VpXGuq1c/Vxn
278VzQ2fNnbJcIAHi/7G8W5/SQfPesIVDsHTEc4ZspPi5jlS/MVX3HOC+BDbOjdbwqP
279RX0JEr+uOyhjO+lRxG8ilMRACoBUbw1eDuVDoEBgErSUC44pq5ioDw2xelc+Y6hQ
280dmtYwfY0DbvwxHtA495frLyPcastDiT/zre7NL51MyUDPjjYjghNQEwvu66IKbQ3
281T1tJBrgI7/WI+dqhKBFolKGKTDWIHsZXQvZ1snGu/FRYzg1l+R/jT8cRB9BDwhUt
282yg==
283-----END CERTIFICATE-----'''
284
A.R Karthick4c4d0492017-05-26 19:23:05 -0700285 VOLTHA_HOST = None
286 VOLTHA_REST_PORT = 8881
A R Karthickd52ca8a2017-07-24 17:38:55 -0700287 VOLTHA_UPLINK_VLAN_MAP = { 'of:0001000000000001' : '222' }
A R Karthick53442712017-07-27 12:23:30 -0700288 VOLTHA_UPLINK_VLAN_START = 333
A.R Karthick4c4d0492017-05-26 19:23:05 -0700289 VOLTHA_IGMP_ITERATIONS = 100
290 VOLTHA_CONFIG_FAKE = True
291 VOLTHA_OLT_TYPE = 'simulated_olt'
292 VOLTHA_OLT_MAC = '00:0c:e2:31:12:00'
293 VOLTHA_ENABLED = bool(int(os.getenv('VOLTHA_ENABLED', 0)))
A R Karthick9dc6e922017-07-12 14:40:16 -0700294 voltha_ctrl = None
295 voltha_device = None
296 voltha_switch_map = None
A.R Karthick4c4d0492017-05-26 19:23:05 -0700297
A R Karthickb7e80902016-05-17 09:38:31 -0700298 @classmethod
A R Karthickb608d402017-06-02 11:48:41 -0700299 def update_apps_version(cls):
300 version = Onos.getVersion()
301 major = int(version.split('.')[0])
302 minor = int(version.split('.')[1])
303 cordigmp_app_version = '2.0-SNAPSHOT'
304 olt_app_version = '1.2-SNAPSHOT'
305 if major > 1:
306 cordigmp_app_version = '3.0-SNAPSHOT'
307 olt_app_version = '2.0-SNAPSHOT'
308 elif major == 1:
309 if minor > 10:
310 cordigmp_app_version = '3.0-SNAPSHOT'
311 olt_app_version = '2.0-SNAPSHOT'
312 elif minor <= 8:
313 olt_app_version = '1.1-SNAPSHOT'
314 cls.app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-{}.oar'.format(cordigmp_app_version))
315 cls.table_app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-multitable-{}.oar'.format(cordigmp_app_version))
316 cls.olt_app_file = os.path.join(cls.test_path, '..', 'apps/olt-app-{}.oar'.format(olt_app_version))
317
318 @classmethod
A R Karthickd44cea12016-07-20 12:16:41 -0700319 def load_device_id(cls):
A R Karthickb03cecd2016-07-27 10:27:55 -0700320 '''Configure the device id'''
321 did = OnosCtrl.get_device_id()
A R Karthickd44cea12016-07-20 12:16:41 -0700322 #Set the default config
323 cls.device_id = did
324 cls.device_dict = { "devices" : {
325 "{}".format(did) : {
326 "basic" : {
327 "driver" : "pmc-olt"
328 }
329 }
330 },
331 }
332 return did
333
334 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700335 def setUpClass(cls):
336 '''Load the OLT config and activate relevant apps'''
A R Karthickb608d402017-06-02 11:48:41 -0700337 cls.update_apps_version()
A R Karthickb7e80902016-05-17 09:38:31 -0700338 cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700339 if cls.VOLTHA_ENABLED is False:
A R Karthick38d5df42017-07-10 13:33:26 -0700340 OnosCtrl.config_device_driver()
A.R Karthick4c4d0492017-05-26 19:23:05 -0700341 OnosCtrl.cord_olt_config(cls.olt)
A R Karthickb03cecd2016-07-27 10:27:55 -0700342 cls.port_map, cls.port_list = cls.olt.olt_port_map()
A R Karthick0f6b6842016-12-06 17:17:44 -0800343 cls.switches = cls.port_map['switches']
344 cls.num_ports = cls.port_map['num_ports']
345 if cls.num_ports > 1:
346 cls.num_ports -= 1 ##account for the tx port
A.R Karthickaa859b22017-06-12 14:50:35 -0700347 cls.activate_apps(cls.apps + cls.olt_apps, deactivate = True)
A R Karthickb7e80902016-05-17 09:38:31 -0700348
349 @classmethod
350 def tearDownClass(cls):
351 '''Deactivate the olt apps and restart OVS back'''
A R Karthick38d5df42017-07-10 13:33:26 -0700352 apps = cls.olt_apps
A R Karthickb7e80902016-05-17 09:38:31 -0700353 for app in apps:
354 onos_ctrl = OnosCtrl(app)
355 onos_ctrl.deactivate()
A R Karthick38d5df42017-07-10 13:33:26 -0700356 if cls.VOLTHA_ENABLED is False:
357 OnosCtrl.config_device_driver(driver = 'ovs')
A R Karthickb7e80902016-05-17 09:38:31 -0700358
359 @classmethod
A.R Karthickaa859b22017-06-12 14:50:35 -0700360 def activate_apps(cls, apps, deactivate = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700361 for app in apps:
362 onos_ctrl = OnosCtrl(app)
A.R Karthickaa859b22017-06-12 14:50:35 -0700363 if deactivate is True:
364 onos_ctrl.deactivate()
365 time.sleep(2)
A R Karthickb7e80902016-05-17 09:38:31 -0700366 status, _ = onos_ctrl.activate()
367 assert_equal(status, True)
368 time.sleep(2)
369
370 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700371 def start_onos(cls, network_cfg = None):
A R Karthicka478df42016-07-27 16:51:08 -0700372 if cls.onos_restartable is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700373 log_test.info('ONOS restart is disabled. Skipping ONOS restart')
A R Karthick65c4d722016-07-18 14:20:17 -0700374 return
A.R Karthick4c4d0492017-05-26 19:23:05 -0700375 if cls.VOLTHA_ENABLED is True:
376 log_test.info('ONOS restart skipped as VOLTHA is running')
377 return
A R Karthickb7e80902016-05-17 09:38:31 -0700378 if network_cfg is None:
A R Karthick4b72d4b2016-06-15 11:09:17 -0700379 network_cfg = cls.device_dict
A R Karthickb7e80902016-05-17 09:38:31 -0700380
381 if type(network_cfg) is tuple:
382 res = []
383 for v in network_cfg:
384 res += v.items()
385 config = dict(res)
386 else:
387 config = network_cfg
A R Karthick76a497a2017-04-12 10:59:39 -0700388 log_test.info('Restarting ONOS with new network configuration')
A R Karthick338268f2016-06-21 17:12:13 -0700389 return cord_test_onos_restart(config = config)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700390
391 @classmethod
392 def remove_onos_config(cls):
393 try:
394 os.unlink('{}/network-cfg.json'.format(cls.onos_config_path))
395 except: pass
A R Karthickb7e80902016-05-17 09:38:31 -0700396
397 @classmethod
398 def start_cpqd(cls, mac = '00:11:22:33:44:55'):
399 dpid = mac.replace(':', '')
400 cpqd_file = os.sep.join( (cls.cpqd_path, 'cpqd.sh') )
401 cpqd_cmd = '{} {}'.format(cpqd_file, dpid)
402 ret = os.system(cpqd_cmd)
403 assert_equal(ret, 0)
404 time.sleep(10)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700405 device_id = 'of:{}{}'.format('0'*4, dpid)
406 return device_id
A R Karthickb7e80902016-05-17 09:38:31 -0700407
408 @classmethod
409 def start_ovs(cls):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700410 ovs_file = os.sep.join( (cls.ovs_path, 'of-bridge.sh') )
A R Karthickb7e80902016-05-17 09:38:31 -0700411 ret = os.system(ovs_file)
412 assert_equal(ret, 0)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700413 time.sleep(30)
A R Karthickb7e80902016-05-17 09:38:31 -0700414
A R Karthicka013a272016-08-16 16:40:19 -0700415 @classmethod
416 def ovs_cleanup(cls):
417 ##For every test case, delete all the OVS groups
418 cmd = 'ovs-ofctl del-groups br-int -OOpenFlow11 >/dev/null 2>&1'
A R Karthicka013a272016-08-16 16:40:19 -0700419 try:
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700420 cord_test_shell(cmd)
421 ##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 -0700422 os.system(cmd)
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700423 finally:
424 return
A R Karthicka013a272016-08-16 16:40:19 -0700425
A R Karthickb7e80902016-05-17 09:38:31 -0700426 def onos_aaa_load(self):
427 if self.aaa_loaded:
428 return
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700429 aaa_dict = {'apps' : { 'org.opencord.aaa' : { 'AAA' : { 'radiusSecret': 'radius_password',
430 'radiusIp': '172.17.0.2' } } } }
A R Karthickb7e80902016-05-17 09:38:31 -0700431 radius_ip = os.getenv('ONOS_AAA_IP') or '172.17.0.2'
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700432 aaa_dict['apps']['org.opencord.aaa']['AAA']['radiusIp'] = radius_ip
433 self.onos_load_config('org.opencord.aaa', aaa_dict)
A R Karthickb7e80902016-05-17 09:38:31 -0700434 self.aaa_loaded = True
435
436 def onos_dhcp_table_load(self, config = None):
437 dhcp_dict = {'apps' : { 'org.onosproject.dhcp' : { 'dhcp' : copy.copy(self.dhcp_server_config) } } }
438 dhcp_config = dhcp_dict['apps']['org.onosproject.dhcp']['dhcp']
439 if config:
440 for k in config.keys():
441 if dhcp_config.has_key(k):
442 dhcp_config[k] = config[k]
443 self.onos_load_config('org.onosproject.dhcp', dhcp_dict)
444
445 def onos_load_config(self, app, config):
446 status, code = OnosCtrl.config(config)
447 if status is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700448 log_test.info('JSON config request for app %s returned status %d' %(app, code))
A R Karthickb7e80902016-05-17 09:38:31 -0700449 assert_equal(status, True)
450 time.sleep(2)
451
452 def dhcp_sndrcv(self, dhcp, update_seed = False):
453 cip, sip = dhcp.discover(update_seed = update_seed)
454 assert_not_equal(cip, None)
455 assert_not_equal(sip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700456 log_test.info('Got dhcp client IP %s from server %s for mac %s' %
A R Karthickb7e80902016-05-17 09:38:31 -0700457 (cip, sip, dhcp.get_mac(cip)[0]))
458 return cip,sip
459
460 def dhcp_request(self, subscriber, seed_ip = '10.10.10.1', update_seed = False):
461 config = {'startip':'10.10.10.20', 'endip':'10.10.10.200',
462 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
463 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
464 self.onos_dhcp_table_load(config)
465 dhcp = DHCPTest(seed_ip = seed_ip, iface = subscriber.iface)
466 cip, sip = self.dhcp_sndrcv(dhcp, update_seed = update_seed)
467 return cip, sip
468
469 def recv_channel_cb(self, pkt):
470 ##First verify that we have received the packet for the joined instance
471 chan = self.subscriber.caddr(pkt[IP].dst)
472 assert_equal(chan in self.subscriber.join_map.keys(), True)
473 recv_time = monotonic.monotonic() * 1000000
474 join_time = self.subscriber.join_map[chan][self.subscriber.STATS_JOIN].start
475 delta = recv_time - join_time
476 self.subscriber.join_rx_stats.update(packets=1, t = delta, usecs = True)
477 self.subscriber.channel_update(chan, self.subscriber.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700478 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 -0700479 self.test_status = True
480
A R Karthick65c4d722016-07-18 14:20:17 -0700481 def traffic_verify(self, subscriber):
482 if subscriber.has_service('TRAFFIC'):
483 url = 'http://www.google.com'
484 resp = requests.get(url)
485 self.test_status = resp.ok
486 if resp.ok == False:
A R Karthick76a497a2017-04-12 10:59:39 -0700487 log_test.info('Subscriber %s failed get from url %s with status code %d'
A R Karthick65c4d722016-07-18 14:20:17 -0700488 %(subscriber.name, url, resp.status_code))
489 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700490 log_test.info('GET request from %s succeeded for subscriber %s'
A R Karthick65c4d722016-07-18 14:20:17 -0700491 %(url, subscriber.name))
A R Karthicka013a272016-08-16 16:40:19 -0700492 return self.test_status
A R Karthick65c4d722016-07-18 14:20:17 -0700493
A R Karthickb7e80902016-05-17 09:38:31 -0700494 def tls_verify(self, subscriber):
A.R Karthick8a507cf2017-06-02 18:44:49 -0700495 def tls_fail_cb():
496 log_test.info('TLS verification failed')
A R Karthickb7e80902016-05-17 09:38:31 -0700497 if subscriber.has_service('TLS'):
A.R Karthickaa859b22017-06-12 14:50:35 -0700498 #OnosCtrl('org.opencord.aaa').deactivate()
499 #time.sleep(2)
500 #OnosCtrl('org.opencord.aaa').activate()
501 #time.sleep(5)
A.R Karthick8a507cf2017-06-02 18:44:49 -0700502 tls = TLSAuthTest(fail_cb = tls_fail_cb, intf = subscriber.rx_intf)
A R Karthick76a497a2017-04-12 10:59:39 -0700503 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700504 tls.runTest()
A.R Karthick8a507cf2017-06-02 18:44:49 -0700505 assert_equal(tls.failTest, False)
A R Karthickb7e80902016-05-17 09:38:31 -0700506 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700507 return self.test_status
508 else:
509 self.test_status = True
510 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700511
512 def dhcp_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700513 if subscriber.has_service('DHCP'):
514 cip, sip = self.dhcp_request(subscriber, update_seed = True)
A R Karthick76a497a2017-04-12 10:59:39 -0700515 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700516 subscriber.src_list = [cip]
517 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700518 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700519 else:
520 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
521 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700522 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700523
524 def dhcp_jump_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700525 if subscriber.has_service('DHCP'):
526 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.200.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700527 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700528 subscriber.src_list = [cip]
529 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700530 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700531 else:
532 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
533 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700534 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700535
536 def dhcp_next_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700537 if subscriber.has_service('DHCP'):
538 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.150.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700539 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700540 subscriber.src_list = [cip]
541 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700542 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700543 else:
544 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
545 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700546 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700547
548 def igmp_verify(self, subscriber):
549 chan = 0
550 if subscriber.has_service('IGMP'):
A R Karthick338268f2016-06-21 17:12:13 -0700551 ##We wait for all the subscribers to join before triggering leaves
552 if subscriber.rx_port > 1:
553 time.sleep(5)
554 subscriber.channel_join(chan, delay = 0)
555 self.num_joins += 1
556 while self.num_joins < self.num_subscribers:
557 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700558 log_test.info('All subscribers have joined the channel')
A R Karthick338268f2016-06-21 17:12:13 -0700559 for i in range(10):
560 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
A R Karthick76a497a2017-04-12 10:59:39 -0700561 log_test.info('Leaving channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700562 subscriber.channel_leave(chan)
A R Karthick338268f2016-06-21 17:12:13 -0700563 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700564 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 -0700565 #Should not receive packets for this subscriber
566 self.recv_timeout = True
567 subscriber.recv_timeout = True
568 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
569 subscriber.recv_timeout = False
570 self.recv_timeout = False
A R Karthick76a497a2017-04-12 10:59:39 -0700571 log_test.info('Joining channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthick338268f2016-06-21 17:12:13 -0700572 subscriber.channel_join(chan, delay = 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700573 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700574 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700575
576 def igmp_jump_verify(self, subscriber):
577 if subscriber.has_service('IGMP'):
578 for i in xrange(subscriber.num):
A R Karthick76a497a2017-04-12 10:59:39 -0700579 log_test.info('Subscriber %s jumping channel' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700580 chan = subscriber.channel_jump(delay=0)
581 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 1)
A R Karthick76a497a2017-04-12 10:59:39 -0700582 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700583 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700584 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 -0700585 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700586 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700587
588 def igmp_next_verify(self, subscriber):
589 if subscriber.has_service('IGMP'):
590 for i in xrange(subscriber.num):
591 if i:
A.R Karthick517f7812017-05-18 11:22:46 -0700592 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700593 else:
594 chan = subscriber.channel_join(i, delay=0)
A R Karthick76a497a2017-04-12 10:59:39 -0700595 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700596 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
A R Karthick76a497a2017-04-12 10:59:39 -0700597 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700598 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700599 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 -0700600 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700601 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700602
A.R Karthick4c4d0492017-05-26 19:23:05 -0700603 def voltha_igmp_next_verify(self, subscriber):
604 if subscriber.has_service('IGMP'):
605 for c in xrange(self.VOLTHA_IGMP_ITERATIONS):
606 for i in xrange(subscriber.num):
607 if i:
608 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
609 time.sleep(0.2)
610 else:
611 chan = subscriber.channel_join(i, delay=0)
612 time.sleep(0.2)
A.R Karthick56e59432017-06-06 18:05:46 -0700613 if subscriber.num == 1:
614 subscriber.channel_leave(chan)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700615 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
616 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
617 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
618 self.test_status = True
619 return self.test_status
620
A R Karthick31f1f342017-05-19 13:55:10 -0700621 def igmp_leave_verify(self, subscriber):
622 if subscriber.has_service('IGMP'):
623 for chan in xrange(subscriber.num):
A R Karthick78d1f492017-05-19 14:24:17 -0700624 subscriber.channel_leave(chan, force = True)
A R Karthick31f1f342017-05-19 13:55:10 -0700625 time.sleep(2)
626 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
627 #self.recv_timeout = True
628 #subscriber.recv_timeout = True
629 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
630 #self.recv_timeout = False
631 #subscriber.recv_timeout = False
632 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
633 #time.sleep(1)
634
635 self.test_status = True
636 return self.test_status
637
A R Karthickb7e80902016-05-17 09:38:31 -0700638 def generate_port_list(self, subscribers, channels):
639 return self.port_list[:subscribers]
640
A.R Karthick4c4d0492017-05-26 19:23:05 -0700641 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 -0700642 '''Load the subscriber from the database'''
A.R Karthick4c4d0492017-05-26 19:23:05 -0700643 test_services = services if services else self.test_services
644 self.subscriber_db = SubscriberDB(create = create, services = test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700645 if create is True:
646 self.subscriber_db.generate(num)
647 self.subscriber_info = self.subscriber_db.read(num)
648 self.subscriber_list = []
649 if not port_list:
650 port_list = self.generate_port_list(num, num_channels)
651
652 index = 0
653 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700654 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700655 service=info['Service'],
656 port_map = self.port_map,
657 num=num_channels,
658 channel_start = channel_start,
659 tx_port = port_list[index][0],
660 rx_port = port_list[index][1]))
661 if num_channels > 1:
662 channel_start += num_channels
663 index += 1
664
665 #load the ssm list for all subscriber channels
666 igmpChannel = IgmpChannel()
667 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
668 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
669 igmpChannel.igmp_load_ssm_config(ssm_list)
670
A.R Karthick95d044e2016-06-10 18:44:36 -0700671 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700672 channel_start = 0, cbs = None, port_list = [],
673 services = None, negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700674 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700675 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700676 subscribers_count = num_subscribers
677 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700678 self.subscriber_load(create = True, num = num_subscribers,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700679 num_channels = num_channels, channel_start = channel_start, port_list = port_list,
680 services = services)
A R Karthickb7e80902016-05-17 09:38:31 -0700681 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700682 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
683
A R Karthick338268f2016-06-21 17:12:13 -0700684 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800685 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700686 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700687 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700688 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700689 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700690 if services and 'IGMP' in services:
691 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700692 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
693 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
694 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
695 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
696 else:
697 cbs = cbs_negative
698 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700699 pool_object = subscriber_pool(subscriber, cbs)
700 self.thread_pool.addTask(pool_object.pool_cb)
701 self.thread_pool.cleanUpThreads()
702 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700703 if services and 'IGMP' in services:
704 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700705 if chan_leave is True:
706 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700707 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700708 return self.test_status
709
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700710 def tls_invalid_cert(self, subscriber):
711 if subscriber.has_service('TLS'):
712 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700713 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700714 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
715 tls.runTest()
716 if tls.failTest == True:
717 self.test_status = False
718 return self.test_status
719 else:
720 self.test_status = True
721 return self.test_status
722
723 def tls_no_cert(self, subscriber):
724 if subscriber.has_service('TLS'):
725 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700726 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700727 tls = TLSAuthTest(client_cert = '')
728 tls.runTest()
729 if tls.failTest == True:
730 self.test_status = False
731 return self.test_status
732 else:
733 self.test_status = True
734 return self.test_status
735
736 def tls_self_signed_cert(self, subscriber):
737 if subscriber.has_service('TLS'):
738 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700739 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700740 tls = TLSAuthTest(client_cert = self.CLIENT_CERT)
741 tls.runTest()
742 if tls.failTest == False:
743 self.test_status = True
744 return self.test_status
745 else:
746 self.test_status = True
747 return self.test_status
748
749 def tls_non_ca_authrized_cert(self, subscriber):
750 if subscriber.has_service('TLS'):
751 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700752 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700753 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
754 tls.runTest()
755 if tls.failTest == False:
756 self.test_status = True
757 return self.test_status
758 else:
759 self.test_status = True
760 return self.test_status
761
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700762 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
763 if subscriber.has_service('TLS'):
764 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700765 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700766 num_users = 3
767 for i in xrange(num_users):
768 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
769 tls.runTest()
770 if tls.failTest == False:
771 self.test_status = True
772 return self.test_status
773 else:
774 self.test_status = True
775 return self.test_status
776
777 def dhcp_discover_scenario(self, subscriber):
778 if subscriber.has_service('DHCP'):
779 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700780 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700781 t1 = self.subscriber_dhcp_1release()
782 self.test_status = True
783 return self.test_status
784 else:
785 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
786 self.test_status = True
787 return self.test_status
788
789 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700790 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
791 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
792 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
793 self.onos_dhcp_table_load(config)
794 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
795 cip, sip = self.send_recv()
796 log_test.info('Releasing ip %s to server %s' %(cip, sip))
797 assert_equal(self.dhcp.release(cip), True)
798 log_test.info('Triggering DHCP discover again after release')
799 cip2, sip2 = self.send_recv(update_seed = True)
800 log_test.info('Verifying released IP was given back on rediscover')
801 assert_equal(cip, cip2)
802 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
803 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700804
805 def dhcp_client_reboot_scenario(self, subscriber):
806 if subscriber.has_service('DHCP'):
807 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700808 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700809 tl = self.subscriber_dhcp_client_request_after_reboot()
810 self.test_status = True
811 return self.test_status
812 else:
813 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
814 self.test_status = True
815 return self.test_status
816
817 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
818 #''' Client sends DHCP Request after reboot.'''
819
820 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
821 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
822 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
823 self.onos_dhcp_table_load(config)
824 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
825 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700826 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700827 (cip, sip, mac) )
828
A R Karthick76a497a2017-04-12 10:59:39 -0700829 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 -0700830
831 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700832 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 -0700833 assert_not_equal(cip, None)
834
835 else:
836 new_cip, new_sip = self.dhcp.only_request(cip, mac)
837 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700838 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700839 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700840 log_test.info('Client goes down.')
841 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700842
843 time.sleep(5)
844
845 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700846 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700847
848 new_cip, new_sip = self.dhcp.only_request(cip, mac)
849 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700850 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700851 assert_not_equal(new_cip, None)
852 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700853 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700854
855 def dhcp_client_renew_scenario(self, subscriber):
856 if subscriber.has_service('DHCP'):
857 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700858 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700859 tl = self.subscriber_dhcp_client_renew_time()
860 self.test_status = True
861 return self.test_status
862 else:
863 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
864 self.test_status = True
865 return self.test_status
866
867 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
868 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
869 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
870 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
871 self.onos_dhcp_table_load(config)
872 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
873 cip, sip, mac , lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700874 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700875 (cip, sip, mac) )
876
A R Karthick76a497a2017-04-12 10:59:39 -0700877 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 -0700878 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700879 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 -0700880 assert_not_equal(cip, None)
881 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700882 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700883 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
884 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700885 log_test.info("Client 's Renewal time is :%s",lval)
886 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700887 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700888 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700889 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
890 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700891 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700892 (latest_cip, mac, latest_sip) )
893
894 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700895 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700896 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700897 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700898
899 def dhcp_server_reboot_scenario(self, subscriber):
900 if subscriber.has_service('DHCP'):
901 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700902 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700903 tl = self.subscriber_dhcp_server_after_reboot()
904 self.test_status = True
905 return self.test_status
906 else:
907 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
908 self.test_status = True
909 return self.test_status
910
911 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
912 ''' DHCP server goes down.'''
913 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
914 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
915 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
916 self.onos_dhcp_table_load(config)
917 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
918 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700919 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700920 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700921 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 -0700922 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700923 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 -0700924 assert_not_equal(cip, None)
925 else:
926 new_cip, new_sip = self.dhcp.only_request(cip, mac)
927 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700928 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700929 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700930 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700931 onos_ctrl = OnosCtrl(self.dhcp_app)
932 onos_ctrl.deactivate()
933 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700934 log_test.info("Sending DHCP Request.")
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
A R Karthick76a497a2017-04-12 10:59:39 -0700943 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700944# self.activate_apps(self.dhcp_app)
945 onos_ctrl = OnosCtrl(self.dhcp_app)
946 status, _ = onos_ctrl.activate()
947 assert_equal(status, True)
948 time.sleep(3)
949 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700950 log_test.info("Sending DHCP Request after DHCP server is up.")
951 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700952 new_cip, new_sip = self.dhcp.only_request(cip, mac)
953 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700954 log_test.info('')
955 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700956 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700957 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700958 assert_equal(new_cip,None) #Neagtive Test Case
959
960 def dhcp_client_rebind_scenario(self, subscriber):
961 if subscriber.has_service('DHCP'):
962 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700963 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700964 tl = self.subscriber_dhcp_client_rebind_time()
965 self.test_status = True
966 return self.test_status
967 else:
968 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
969 self.test_status = True
970 return self.test_status
971
972 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
973 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
974 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
975 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
976 self.onos_dhcp_table_load(config)
977 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
978 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700979 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700980 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700981 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 -0700982 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700983 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 -0700984 assert_not_equal(cip, None)
985 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700986 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700987 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
988 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700989 log_test.info("Client 's Rebind time is :%s",lval)
990 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700991 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700992 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700993 self.dhcp.after_T2 = True
994 for i in range(0,4):
995 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
996 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700997 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700998 (latest_cip, mac, latest_sip) )
999 break
1000 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001001 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001002 assert_not_equal(latest_cip, None)
1003 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001004 log_test.info("Got DHCP NAK.Lease not Renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001005
1006 def dhcp_starvation_scenario(self, subscriber):
1007 if subscriber.has_service('DHCP'):
1008 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001009 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001010 tl = self.subscriber_dhcp_starvation()
1011 self.test_status = True
1012 return self.test_status
1013 else:
1014 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1015 self.test_status = True
1016 return self.test_status
1017
1018 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
1019 '''DHCP starve'''
1020 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
1021 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
1022 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
1023 self.onos_dhcp_table_load(config)
1024 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001025 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001026 for x in xrange(50):
1027 mac = RandMAC()._fix()
1028 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -07001029 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001030 cip, sip = self.send_recv(update_seed = True, validate = False)
1031 assert_equal(cip, None)
1032 assert_equal(sip, None)
1033
1034 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
1035 if subscriber.has_service('DHCP'):
1036 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001037 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001038 tl = self.subscriber_dhcp_same_client_multiple_discover()
1039 self.test_status = True
1040 return self.test_status
1041 else:
1042 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1043 self.test_status = True
1044 return self.test_status
1045
1046 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
1047 ''' DHCP Client sending multiple discover . '''
1048 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1049 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1050 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1051 self.onos_dhcp_table_load(config)
1052 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
1053 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001054 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 -07001055 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001056 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001057 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
1058 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001059 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 -07001060 % (new_cip, new_sip, new_mac) )
1061 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001062 log_test.info('Ip after 1st discover %s' %cip)
1063 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001064 assert_equal(cip, new_cip)
1065
1066 def dhcp_same_client_multi_request_scenario(self, subscriber):
1067 if subscriber.has_service('DHCP'):
1068 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001069 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001070 tl = self.subscriber_dhcp_same_client_multiple_request()
1071 self.test_status = True
1072 return self.test_status
1073 else:
1074 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1075 self.test_status = True
1076 return self.test_status
1077
1078 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1079 ''' DHCP Client sending multiple repeat DHCP requests. '''
1080 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1081 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1082 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1083 self.onos_dhcp_table_load(config)
1084 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001085 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001086 cip, sip = self.send_recv()
1087 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001088 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001089 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1090 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001091 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 -07001092 % (new_cip, new_sip, mac) )
1093 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001094 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001095 assert_equal(new_cip, None)
1096 assert_equal(new_sip, None)
1097 else:
1098 print "Something went wrong."
1099
1100 def dhcp_client_desired_ip_scenario(self, subscriber):
1101 if subscriber.has_service('DHCP'):
1102 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001103 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001104 tl = self.subscriber_dhcp_client_desired_address()
1105 self.test_status = True
1106 return self.test_status
1107 else:
1108 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1109 self.test_status = True
1110 return self.test_status
1111
1112 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1113 '''DHCP Client asking for desired IP address.'''
1114 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1115 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1116 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1117 self.onos_dhcp_table_load(config)
1118 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1119 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001120 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001121 (cip, sip, mac) )
1122 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001123 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001124 (cip, sip, mac) )
1125 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001126 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001127 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001128 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001129 assert_equal(cip, self.dhcp.seed_ip)
1130
1131 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1132 if subscriber.has_service('DHCP'):
1133 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001134 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001135 tl = self.subscriber_dhcp_server_nak_packet()
1136 self.test_status = True
1137 return self.test_status
1138 else:
1139 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1140 self.test_status = True
1141 return self.test_status
1142
1143 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1144 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1145 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1146 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1147 self.onos_dhcp_table_load(config)
1148 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1149 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001150 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001151 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001152 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 -07001153 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001154 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 -07001155 assert_not_equal(cip, None)
1156 else:
1157 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1158 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001159 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001160 assert_equal(new_cip, None) #Negative Test Case
1161
1162 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1163 if subscriber.has_service('DHCP'):
1164 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001165 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001166 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1167 self.test_status = True
1168 return self.test_status
1169 else:
1170 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1171 self.test_status = True
1172 return self.test_status
1173
1174 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1175 '''DHCP Client asking for desired IP address from out of pool.'''
1176 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1177 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1178 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1179 self.onos_dhcp_table_load(config)
1180 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1181 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001182 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001183 (cip, sip, mac) )
1184 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001185 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001186 (cip, sip, mac) )
1187 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1188
1189 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001190 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001191 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001192 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001193 assert_not_equal(cip, self.dhcp.seed_ip)
1194
1195 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001196 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001197
1198 def dhcp_client_specific_lease_scenario(self, subscriber):
1199 if subscriber.has_service('DHCP'):
1200 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001201 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001202 tl = self.subscriber_dhcp_specific_lease_packet()
1203 self.test_status = True
1204 return self.test_status
1205 else:
1206 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1207 self.test_status = True
1208 return self.test_status
1209
1210 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1211 ''' Client sends DHCP Discover packet for particular lease time.'''
1212 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1213 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1214 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1215 self.onos_dhcp_table_load(config)
1216 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001217 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001218 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1219
A R Karthick76a497a2017-04-12 10:59:39 -07001220 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001221 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001222 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 -07001223 assert_not_equal(cip, None)
1224 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001225 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 -07001226 (cip, sip, mac, lval) )
1227 assert_not_equal(lval, 700)
1228
1229 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001230 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001231 self.num_subscribers = 5
1232 self.num_channels = 1
A R Karthick38d5df42017-07-10 13:33:26 -07001233 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1234 num_channels = self.num_channels,
1235 port_list = self.generate_port_list(self.num_subscribers,
1236 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001237 assert_equal(test_status, True)
1238
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001239 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001240 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001241 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001242 self.num_channels = 10
1243 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1244 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001245 cbs = (self.tls_verify, self.dhcp_jump_verify,
1246 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001247 port_list = self.generate_port_list(self.num_subscribers,
1248 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001249 assert_equal(test_status, True)
1250
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001251 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001252 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001253 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001254 self.num_channels = 10
1255 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1256 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001257 cbs = (self.tls_verify, self.dhcp_next_verify,
1258 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001259 port_list = self.generate_port_list(self.num_subscribers,
1260 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001261 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001262
A.R Karthick517f7812017-05-18 11:22:46 -07001263 def test_cord_subscriber_join_next_without_leave(self):
1264 """Test subscriber join next for channel surfing"""
1265 self.num_subscribers = self.num_ports * len(self.switches)
1266 self.num_channels = 5
1267 self.leave_flag = False
1268 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1269 num_channels = self.num_channels,
1270 cbs = (self.tls_verify, self.dhcp_next_verify,
1271 self.igmp_next_verify, self.traffic_verify),
1272 port_list = self.generate_port_list(self.num_subscribers,
1273 self.num_channels))
1274 self.leave_flag = True
1275 assert_equal(test_status, True)
1276
A R Karthick31f1f342017-05-19 13:55:10 -07001277 def test_cord_subscriber_leave(self):
1278 """Test subscriber leaves for all the join nexts before"""
1279 self.num_subscribers = self.num_ports * len(self.switches)
1280 self.num_channels = 5
1281 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1282 num_channels = self.num_channels,
1283 cbs = (self.tls_verify, self.dhcp_next_verify,
1284 self.igmp_leave_verify, self.traffic_verify),
1285 port_list = self.generate_port_list(self.num_subscribers,
1286 self.num_channels))
1287 assert_equal(test_status, True)
1288
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001289 #@deferred(SUBSCRIBER_TIMEOUT)
1290 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1291 ### """Test subscriber to auth with invalidCertification and join channel"""
1292 num_subscribers = 1
1293 num_channels = 1
1294 df = defer.Deferred()
1295 def sub_auth_invalid_cert(df):
1296 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1297 num_channels = num_channels,
1298 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1299 self.igmp_verify, self.traffic_verify),
1300 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1301 assert_equal(test_status, False)
1302 df.callback(0)
1303 reactor.callLater(0, sub_auth_invalid_cert, df)
1304 return df
1305
1306 #@deferred(SUBSCRIBER_TIMEOUT)
1307 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1308 ### """Test subscriber to auth with No Certification and join channel"""
1309 num_subscribers = 1
1310 num_channels = 1
1311 df = defer.Deferred()
1312 def sub_auth_no_cert(df):
1313 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1314 num_channels = num_channels,
1315 cbs = (self.tls_no_cert, self.dhcp_verify,
1316 self.igmp_verify, self.traffic_verify),
1317 port_list = self.generate_port_list(num_subscribers, num_channels),
1318 negative_subscriber_auth = 'all')
1319 assert_equal(test_status, False)
1320 df.callback(0)
1321 reactor.callLater(0, sub_auth_no_cert, df)
1322 return df
1323 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1324 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1325 num_subscribers = 1
1326 num_channels = 1
1327 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1328 num_channels = num_channels,
1329 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1330 self.igmp_verify, self.traffic_verify),
1331 port_list = self.generate_port_list(num_subscribers, num_channels),
1332 negative_subscriber_auth = 'all')
1333 assert_equal(test_status, True)
1334
1335 @deferred(SUBSCRIBER_TIMEOUT)
1336 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1337 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1338 num_subscribers = 2
1339 num_channels = 1
1340 df = defer.Deferred()
1341 def sub_auth_invalid_cert(df):
1342 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1343 num_channels = num_channels,
1344 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1345 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1346 assert_equal(test_status, True)
1347 df.callback(0)
1348 reactor.callLater(0, sub_auth_invalid_cert, df)
1349 return df
1350
1351 @deferred(SUBSCRIBER_TIMEOUT)
1352 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1353 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1354 num_subscribers = 2
1355 num_channels = 1
1356 df = defer.Deferred()
1357 def sub_auth_no_cert(df):
1358 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1359 num_channels = num_channels,
1360 cbs = (self.tls_no_cert, self.dhcp_verify,
1361 self.igmp_verify, self.traffic_verify),
1362 port_list = self.generate_port_list(num_subscribers, num_channels),
1363 negative_subscriber_auth = 'half')
1364 assert_equal(test_status, True)
1365 df.callback(0)
1366 reactor.callLater(0, sub_auth_no_cert, df)
1367 return df
1368
1369 @deferred(SUBSCRIBER_TIMEOUT)
1370 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1371 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1372 num_subscribers = 2
1373 num_channels = 1
1374 df = defer.Deferred()
1375 def sub_auth_no_cert(df):
1376 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1377 num_channels = num_channels,
1378 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1379 self.igmp_verify, self.traffic_verify),
1380 port_list = self.generate_port_list(num_subscribers, num_channels),
1381 negative_subscriber_auth = 'half')
1382 assert_equal(test_status, True)
1383 df.callback(0)
1384 reactor.callLater(0, sub_auth_no_cert, df)
1385 return df
1386
1387 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1388 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1389 num_subscribers = 1
1390 num_channels = 1
1391 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1392 num_channels = num_channels,
1393 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1394 self.igmp_verify, self.traffic_verify),
1395 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1396 assert_equal(test_status, True)
1397
1398 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1399 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1400 num_subscribers = 1
1401 num_channels = 1
1402 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1403 num_channels = num_channels,
1404 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1405 self.igmp_verify, self.traffic_verify),
1406 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1407 assert_equal(test_status, True)
1408
1409 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1410 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1411 num_subscribers = 1
1412 num_channels = 1
1413 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1414 num_channels = num_channels,
1415 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1416 self.igmp_verify, self.traffic_verify),
1417 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1418 assert_equal(test_status, True)
1419
1420 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1421 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1422 num_subscribers = 1
1423 num_channels = 1
1424 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1425 num_channels = num_channels,
1426 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1427 self.igmp_verify, self.traffic_verify),
1428 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1429 assert_equal(test_status, True)
1430
1431
1432 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1433 ### """Test subscriber auth , DHCP starvation and join channel"""
1434 num_subscribers = 1
1435 num_channels = 1
1436 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1437 num_channels = num_channels,
1438 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1439 self.igmp_verify, self.traffic_verify),
1440 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1441 assert_equal(test_status, True)
1442
1443 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1444 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1445 num_subscribers = 1
1446 num_channels = 1
1447 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1448 num_channels = num_channels,
1449 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1450 self.igmp_verify, self.traffic_verify),
1451 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1452 assert_equal(test_status, True)
1453
1454 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1455 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1456 num_subscribers = 1
1457 num_channels = 1
1458 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1459 num_channels = num_channels,
1460 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1461 self.igmp_verify, self.traffic_verify),
1462 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1463 assert_equal(test_status, True)
1464
1465 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1466 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1467 num_subscribers = 1
1468 num_channels = 1
1469 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1470 num_channels = num_channels,
1471 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1472 self.igmp_verify, self.traffic_verify),
1473 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1474 assert_equal(test_status, True)
1475
1476 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1477 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1478 num_subscribers = 1
1479 num_channels = 1
1480 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1481 num_channels = num_channels,
1482 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1483 self.igmp_verify, self.traffic_verify),
1484 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1485 assert_equal(test_status, True)
1486
1487 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1488 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1489 num_subscribers = 1
1490 num_channels = 1
1491 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1492 num_channels = num_channels,
1493 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1494 self.igmp_verify, self.traffic_verify),
1495 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1496 assert_equal(test_status, True)
1497
1498
1499 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1500 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1501 num_subscribers = 1
1502 num_channels = 1
1503 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1504 num_channels = num_channels,
1505 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1506 self.igmp_verify, self.traffic_verify),
1507 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1508 assert_equal(test_status, True)
1509
1510 #@deferred(SUBSCRIBER_TIMEOUT)
1511 @nottest
1512 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1513 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1514 num_subscribers = 1000
1515 num_channels = 1
1516 df = defer.Deferred()
1517 def sub_auth_invalid_cert(df):
1518 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1519 num_channels = num_channels,
1520 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1521 self.igmp_verify, self.traffic_verify),
1522 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1523 assert_equal(test_status, True)
1524 df.callback(0)
1525 reactor.callLater(0, sub_auth_invalid_cert, df)
1526 return df
1527
1528 @nottest
1529 @deferred(SUBSCRIBER_TIMEOUT)
1530 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1531 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1532 num_subscribers = 1000
1533 num_channels = 1
1534 df = defer.Deferred()
1535 def sub_auth_no_cert(df):
1536 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1537 num_channels = num_channels,
1538 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1539 port_list = self.generate_port_list(num_subscribers, num_channels),
1540 negative_subscriber_auth = 'half')
1541 assert_equal(test_status, True)
1542 df.callback(0)
1543 reactor.callLater(0, sub_auth_no_cert, df)
1544 return df
1545
1546 #@deferred(SUBSCRIBER_TIMEOUT)
1547 @nottest
1548 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1549 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1550 num_subscribers = 1000
1551 num_channels = 1
1552 df = defer.Deferred()
1553 def sub_auth_no_cert(df):
1554 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1555 num_channels = num_channels,
1556 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1557 port_list = self.generate_port_list(num_subscribers, num_channels),
1558 negative_subscriber_auth = 'half')
1559 assert_equal(test_status, True)
1560 df.callback(0)
1561 reactor.callLater(0, sub_auth_no_cert, df)
1562 return df
1563
1564 #@deferred(SUBSCRIBER_TIMEOUT)
1565 @nottest
1566 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1567 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1568 num_subscribers = 5000
1569 num_channels = 1
1570 df = defer.Deferred()
1571 def sub_auth_invalid_cert(df):
1572 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1573 num_channels = num_channels,
1574 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1575 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1576 assert_equal(test_status, True)
1577 df.callback(0)
1578 reactor.callLater(0, sub_auth_invalid_cert, df)
1579 return df
1580
1581 #@deferred(SUBSCRIBER_TIMEOUT)
1582 @nottest
1583 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1584 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1585 num_subscribers = 5000
1586 num_channels = 1
1587 df = defer.Deferred()
1588 def sub_auth_no_cert(df):
1589 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1590 num_channels = num_channels,
1591 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1592 port_list = self.generate_port_list(num_subscribers, num_channels),
1593 negative_subscriber_auth = 'half')
1594 assert_equal(test_status, True)
1595 df.callback(0)
1596 reactor.callLater(0, sub_auth_no_cert, df)
1597 return df
1598
1599 #@deferred(SUBSCRIBER_TIMEOUT)
1600 @nottest
1601 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1602 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1603 num_subscribers = 5000
1604 num_channels = 1
1605 df = defer.Deferred()
1606 def sub_auth_no_cert(df):
1607 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1608 num_channels = num_channels,
1609 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1610 port_list = self.generate_port_list(num_subscribers, num_channels),
1611 negative_subscriber_auth = 'half')
1612 assert_equal(test_status, True)
1613 df.callback(0)
1614 reactor.callLater(0, sub_auth_no_cert, df)
1615 return df
1616
1617 #@deferred(SUBSCRIBER_TIMEOUT)
1618 @nottest
1619 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1620 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1621 num_subscribers = 10000
1622 num_channels = 1
1623 df = defer.Deferred()
1624 def sub_auth_invalid_cert(df):
1625 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1626 num_channels = num_channels,
1627 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1628 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1629 assert_equal(test_status, True)
1630 df.callback(0)
1631 reactor.callLater(0, sub_auth_invalid_cert, df)
1632 return df
1633
1634 #@deferred(SUBSCRIBER_TIMEOUT)
1635 @nottest
1636 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1637 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1638 num_subscribers = 10000
1639 num_channels = 1
1640 df = defer.Deferred()
1641 def sub_auth_no_cert(df):
1642 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1643 num_channels = num_channels,
1644 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1645 port_list = self.generate_port_list(num_subscribers, num_channels),
1646 negative_subscriber_auth = 'onethird')
1647 assert_equal(test_status, True)
1648 df.callback(0)
1649 reactor.callLater(0, sub_auth_no_cert, df)
1650 return df
1651
1652 #@deferred(SUBSCRIBER_TIMEOUT)
1653 @nottest
1654 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1655 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1656 num_subscribers = 10000
1657 num_channels = 1
1658 df = defer.Deferred()
1659 def sub_auth_no_cert(df):
1660 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1661 num_channels = num_channels,
1662 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1663 port_list = self.generate_port_list(num_subscribers, num_channels),
1664 negative_subscriber_auth = 'onethird')
1665 assert_equal(test_status, False)
1666 assert_equal(test_status, True)
1667 df.callback(0)
1668 reactor.callLater(0, sub_auth_no_cert, df)
1669 return df
1670
1671 @nottest
1672 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1673 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1674 num_subscribers = 1000
1675 num_channels = 1
1676 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1677 num_channels = num_channels,
1678 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1679 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1680 assert_equal(test_status, True)
1681
1682 @nottest
1683 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1684 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1685 num_subscribers = 1000
1686 num_channels = 1
1687 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1688 num_channels = num_channels,
1689 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1690 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1691 assert_equal(test_status, True)
1692
1693 @nottest
1694 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1695 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1696 num_subscribers = 1000
1697 num_channels = 1
1698 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1699 num_channels = num_channels,
1700 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1701 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1702 assert_equal(test_status, True)
1703
1704 @nottest
1705 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1706 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1707 num_subscribers = 1000
1708 num_channels = 1
1709 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1710 num_channels = num_channels,
1711 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1712 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1713 assert_equal(test_status, True)
1714
1715 @nottest
1716 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1717 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1718 num_subscribers = 1000
1719 num_channels = 1
1720 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1721 num_channels = num_channels,
1722 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1723 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1724 assert_equal(test_status, True)
1725
1726 @nottest
1727 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1728 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1729 num_subscribers = 1000
1730 num_channels = 1
1731 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1732 num_channels = num_channels,
1733 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1734 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1735 assert_equal(test_status, True)
1736
1737 @nottest
1738 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1739 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1740 num_subscribers = 1000
1741 num_channels = 1
1742 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1743 num_channels = num_channels,
1744 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1745 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1746 assert_equal(test_status, True)
1747
1748 def test_4_cord_subscribers_join_recv_5channel(self):
1749 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1750 num_subscribers = 4
1751 num_channels = 5
1752 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1753 num_channels = num_channels,
1754 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1755 port_list = self.generate_port_list(num_subscribers, num_channels),
1756 negative_subscriber_auth = 'all')
1757 assert_equal(test_status, True)
1758
1759 def test_4_cord_subscribers_join_jump_5channel(self):
1760 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1761 num_subscribers = 4
1762 num_channels = 5
1763 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1764 num_channels = num_channels,
1765 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1766 port_list = self.generate_port_list(num_subscribers, num_channels),
1767 negative_subscriber_auth = 'all')
1768 assert_equal(test_status, True)
1769
1770 def test_4_cord_subscribers_join_next_5channel(self):
1771 ###"""Test 4 subscribers join next for 5 channels"""
1772 num_subscribers = 4
1773 num_channels = 5
1774 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1775 num_channels = num_channels,
1776 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1777 port_list = self.generate_port_list(num_subscribers, num_channels),
1778 negative_subscriber_auth = 'all')
1779 assert_equal(test_status, True)
1780
1781 def test_10_cord_subscribers_join_recv_5channel(self):
1782 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1783 num_subscribers = 10
1784 num_channels = 5
1785 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1786 num_channels = num_channels,
1787 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1788 port_list = self.generate_port_list(num_subscribers, num_channels),
1789 negative_subscriber_auth = 'all')
1790 assert_equal(test_status, True)
1791
1792 def test_10_cord_subscribers_join_jump_5channel(self):
1793 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1794 num_subscribers = 10
1795 num_channels = 5
1796 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1797 num_channels = num_channels,
1798 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1799 port_list = self.generate_port_list(num_subscribers, num_channels),
1800 negative_subscriber_auth = 'all')
1801 assert_equal(test_status, True)
1802
1803
1804 def test_10_cord_subscribers_join_next_5channel(self):
1805 ###"""Test 10 subscribers join next for 5 channels"""
1806 num_subscribers = 10
1807 num_channels = 5
1808 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1809 num_channels = num_channels,
1810 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1811 port_list = self.generate_port_list(num_subscribers, num_channels),
1812 negative_subscriber_auth = 'all')
1813 assert_equal(test_status, True)
1814
1815
1816
1817 def test_cord_subscriber_join_recv_100channels(self):
1818 num_subscribers = 1
1819 num_channels = 100
1820 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1821 num_channels = num_channels,
1822 cbs = (self.tls_verify, self.dhcp_verify,
1823 self.igmp_verify, self.traffic_verify),
1824 port_list = self.generate_port_list(num_subscribers, num_channels),
1825 negative_subscriber_auth = 'all')
1826 assert_equal(test_status, True)
1827
1828 def test_cord_subscriber_join_recv_400channels(self):
1829 num_subscribers = 1
1830 num_channels = 400
1831 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1832 num_channels = num_channels,
1833 cbs = (self.tls_verify, self.dhcp_verify,
1834 self.igmp_verify, self.traffic_verify),
1835 port_list = self.generate_port_list(num_subscribers, num_channels),
1836 negative_subscriber_auth = 'all')
1837 assert_equal(test_status, True)
1838
1839 def test_cord_subscriber_join_recv_800channels(self):
1840 num_subscribers = 1
1841 num_channels = 800
1842 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1843 num_channels = num_channels,
1844 cbs = (self.tls_verify, self.dhcp_verify,
1845 self.igmp_verify, self.traffic_verify),
1846 port_list = self.generate_port_list(num_subscribers, num_channels),
1847 negative_subscriber_auth = 'all')
1848 assert_equal(test_status, True)
1849
1850 def test_cord_subscriber_join_recv_1200channels(self):
1851 num_subscribers = 1
1852 num_channels = 1200
1853 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1854 num_channels = num_channels,
1855 cbs = (self.tls_verify, self.dhcp_verify,
1856 self.igmp_verify, self.traffic_verify),
1857 port_list = self.generate_port_list(num_subscribers, num_channels),
1858 negative_subscriber_auth = 'all')
1859 assert_equal(test_status, True)
1860
1861 def test_cord_subscriber_join_recv_1500channels(self):
1862 num_subscribers = 1
1863 num_channels = 1500
1864 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1865 num_channels = num_channels,
1866 cbs = (self.tls_verify, self.dhcp_verify,
1867 self.igmp_verify, self.traffic_verify),
1868 port_list = self.generate_port_list(num_subscribers, num_channels),
1869 negative_subscriber_auth = 'all')
1870 assert_equal(test_status, True)
1871
1872 def test_cord_subscriber_join_jump_100channels(self):
1873 num_subscribers = 1
1874 num_channels = 100
1875 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1876 num_channels = num_channels,
1877 cbs = (self.tls_verify, self.dhcp_jump_verify,
1878 self.igmp_jump_verify, self.traffic_verify),
1879 port_list = self.generate_port_list(num_subscribers, num_channels),
1880 negative_subscriber_auth = 'all')
1881 assert_equal(test_status, True)
1882 def test_cord_subscriber_join_jump_400channels(self):
1883 num_subscribers = 1
1884 num_channels = 400
1885 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1886 num_channels = num_channels,
1887 cbs = (self.tls_verify, self.dhcp_jump_verify,
1888 self.igmp_jump_verify, self.traffic_verify),
1889 port_list = self.generate_port_list(num_subscribers, num_channels),
1890 negative_subscriber_auth = 'all')
1891 assert_equal(test_status, True)
1892
1893 def test_cord_subscriber_join_jump_800channels(self):
1894 num_subscribers = 1
1895 num_channels = 800
1896 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1897 num_channels = num_channels,
1898 cbs = (self.tls_verify, self.dhcp_jump_verify,
1899 self.igmp_jump_verify, self.traffic_verify),
1900 port_list = self.generate_port_list(num_subscribers, num_channels),
1901 negative_subscriber_auth = 'all')
1902 assert_equal(test_status, True)
1903 def test_cord_subscriber_join_jump_1200channel(sself):
1904 num_subscribers = 1
1905 num_channels = 1200
1906 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1907 num_channels = num_channels,
1908 cbs = (self.tls_verify, self.dhcp_jump_verify,
1909 self.igmp_jump_verify, self.traffic_verify),
1910 port_list = self.generate_port_list(num_subscribers, num_channels),
1911 negative_subscriber_auth = 'all')
1912 assert_equal(test_status, True)
1913 def test_cord_subscriber_join_jump_1500channels(self):
1914 num_subscribers = 1
1915 num_channels = 1500
1916 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1917 num_channels = num_channels,
1918 cbs = (self.tls_verify, self.dhcp_jump_verify,
1919 self.igmp_jump_verify, self.traffic_verify),
1920 port_list = self.generate_port_list(num_subscribers, num_channels),
1921 negative_subscriber_auth = 'all')
1922 assert_equal(test_status, True)
1923
1924 def test_cord_subscriber_join_next_100channels(self):
1925 num_subscribers = 1
1926 num_channels = 100
1927 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1928 num_channels = num_channels,
1929 cbs = (self.tls_verify, self.dhcp_next_verify,
1930 self.igmp_next_verify, self.traffic_verify),
1931 port_list = self.generate_port_list(num_subscribers, num_channels),
1932 negative_subscriber_auth = 'all')
1933 assert_equal(test_status, True)
1934
1935 def test_cord_subscriber_join_next_400channels(self):
1936 num_subscribers = 1
1937 num_channels = 400
1938 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1939 num_channels = num_channels,
1940 cbs = (self.tls_verify, self.dhcp_next_verify,
1941 self.igmp_next_verify, self.traffic_verify),
1942 port_list = self.generate_port_list(num_subscribers, num_channels),
1943 negative_subscriber_auth = 'all')
1944 assert_equal(test_status, True)
1945
1946 def test_cord_subscriber_join_next_800channels(self):
1947 num_subscribers = 1
1948 num_channels = 800
1949 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1950 num_channels = num_channels,
1951 cbs = (self.tls_verify, self.dhcp_next_verify,
1952 self.igmp_next_verify, self.traffic_verify),
1953 port_list = self.generate_port_list(num_subscribers, num_channels),
1954 negative_subscriber_auth = 'all')
1955 assert_equal(test_status, True)
1956
1957
1958 def test_cord_subscriber_join_next_1200channels(self):
1959 num_subscribers = 1
1960 num_channels = 1200
1961 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1962 num_channels = num_channels,
1963 cbs = (self.tls_verify, self.dhcp_next_verify,
1964 self.igmp_next_verify, self.traffic_verify),
1965 port_list = self.generate_port_list(num_subscribers, num_channels),
1966 negative_subscriber_auth = 'all')
1967 assert_equal(test_status, True)
1968
1969 def test_cord_subscriber_join_next_1500channels(self):
1970 num_subscribers = 1
1971 num_channels = 1500
1972 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1973 num_channels = num_channels,
1974 cbs = (self.tls_verify, self.dhcp_next_verify,
1975 self.igmp_next_verify, self.traffic_verify),
1976 port_list = self.generate_port_list(num_subscribers, num_channels),
1977 negative_subscriber_auth = 'all')
1978 assert_equal(test_status, True)
1979
1980 @nottest
1981 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1982 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1983 num_subscribers = 1000
1984 num_channels = 1
1985 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1986 num_channels = num_channels,
1987 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
1988 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1989 assert_equal(test_status, True)
1990
1991 @nottest
1992 def test_1k_cord_subscribers_join_recv_100channel(self):
1993 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
1994 num_subscribers = 1000
1995 num_channels = 100
1996 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1997 num_channels = num_channels,
1998 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1999 port_list = self.generate_port_list(num_subscribers, num_channels),
2000 negative_subscriber_auth = 'all')
2001 assert_equal(test_status, True)
2002
2003 @nottest
2004 def test_1k_cord_subscribers_join_jump_100channel(self):
2005 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
2006 num_subscribers = 1000
2007 num_channels = 100
2008 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2009 num_channels = num_channels,
2010 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2011 port_list = self.generate_port_list(num_subscribers, num_channels),
2012 negative_subscriber_auth = 'all')
2013 assert_equal(test_status, True)
2014
2015 @nottest
2016 def test_1k_cord_subscribers_join_next_100channel(self):
2017 ###"""Test 1k subscribers join next for 100 channels"""
2018 num_subscribers = 1000
2019 num_channels = 100
2020 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2021 num_channels = num_channels,
2022 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2023 port_list = self.generate_port_list(num_subscribers, num_channels),
2024 negative_subscriber_auth = 'all')
2025 assert_equal(test_status, True)
2026
2027 @nottest
2028 def test_1k_cord_subscribers_join_recv_400channel(self):
2029 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
2030 num_subscribers = 1000
2031 num_channels = 400
2032 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2033 num_channels = num_channels,
2034 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2035 port_list = self.generate_port_list(num_subscribers, num_channels),
2036 negative_subscriber_auth = 'all')
2037 assert_equal(test_status, True)
2038
2039 @nottest
2040 def test_1k_cord_subscribers_join_jump_400channel(self):
2041 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
2042 num_subscribers = 1000
2043 num_channels = 400
2044 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2045 num_channels = num_channels,
2046 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2047 port_list = self.generate_port_list(num_subscribers, num_channels),
2048 negative_subscriber_auth = 'all')
2049 assert_equal(test_status, True)
2050
2051 @nottest
2052 def test_1k_cord_subscribers_join_next_400channel(self):
2053 ###"""Test 1k subscribers join next for 400 channels"""
2054 num_subscribers = 1000
2055 num_channels = 400
2056 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2057 num_channels = num_channels,
2058 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2059 port_list = self.generate_port_list(num_subscribers, num_channels),
2060 negative_subscriber_auth = 'all')
2061 assert_equal(test_status, True)
2062
2063 @nottest
2064 def test_1k_cord_subscribers_join_recv_800channel(self):
2065 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2066 num_subscribers = 1000
2067 num_channels = 800
2068 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2069 num_channels = num_channels,
2070 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2071 port_list = self.generate_port_list(num_subscribers, num_channels),
2072 negative_subscriber_auth = 'all')
2073 assert_equal(test_status, True)
2074
2075 @nottest
2076 def test_1k_cord_subscribers_join_jump_800channel(self):
2077 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2078 num_subscribers = 1000
2079 num_channels = 800
2080 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2081 num_channels = num_channels,
2082 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2083 port_list = self.generate_port_list(num_subscribers, num_channels),
2084 negative_subscriber_auth = 'all')
2085 assert_equal(test_status, True)
2086
2087 @nottest
2088 def test_1k_cord_subscribers_join_next_800channel(self):
2089 ###"""Test 1k subscribers join next for 800 channels"""
2090 num_subscribers = 1000
2091 num_channels = 800
2092 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2093 num_channels = num_channels,
2094 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2095 port_list = self.generate_port_list(num_subscribers, num_channels),
2096 negative_subscriber_auth = 'all')
2097 assert_equal(test_status, True)
2098
2099 @nottest
2100 def test_1k_cord_subscribers_join_recv_1200channel(self):
2101 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2102 num_subscribers = 1000
2103 num_channels = 1200
2104 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2105 num_channels = num_channels,
2106 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2107 port_list = self.generate_port_list(num_subscribers, num_channels),
2108 negative_subscriber_auth = 'all')
2109 assert_equal(test_status, True)
2110
2111 @nottest
2112 def test_1k_cord_subscribers_join_jump_1200channel(self):
2113 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2114 num_subscribers = 1000
2115 num_channels = 1200
2116 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2117 num_channels = num_channels,
2118 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2119 port_list = self.generate_port_list(num_subscribers, num_channels),
2120 negative_subscriber_auth = 'all')
2121 assert_equal(test_status, True)
2122
2123 @nottest
2124 def test_1k_cord_subscribers_join_next_1200channel(self):
2125 ###"""Test 1k subscribers join next for 1200 channels"""
2126 num_subscribers = 1000
2127 num_channels = 1200
2128 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2129 num_channels = num_channels,
2130 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2131 port_list = self.generate_port_list(num_subscribers, num_channels),
2132 negative_subscriber_auth = 'all')
2133 assert_equal(test_status, True)
2134
2135 @nottest
2136 def test_1k_cord_subscribers_join_recv_1500channel(self):
2137 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2138 num_subscribers = 1000
2139 num_channels = 1500
2140 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2141 num_channels = num_channels,
2142 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2143 port_list = self.generate_port_list(num_subscribers, num_channels),
2144 negative_subscriber_auth = 'all')
2145 assert_equal(test_status, True)
2146
2147 @nottest
2148 def test_1k_cord_subscribers_join_jump_1500channel(self):
2149 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2150 num_subscribers = 1000
2151 num_channels = 1500
2152 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2153 num_channels = num_channels,
2154 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2155 port_list = self.generate_port_list(num_subscribers, num_channels),
2156 negative_subscriber_auth = 'all')
2157 assert_equal(test_status, True)
2158
2159 @nottest
2160 def test_1k_cord_subscribers_join_next_1500channel(self):
2161 ###"""Test 1k subscribers join next for 1500 channels"""
2162 num_subscribers = 1000
2163 num_channels = 1500
2164 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2165 num_channels = num_channels,
2166 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2167 port_list = self.generate_port_list(num_subscribers, num_channels),
2168 negative_subscriber_auth = 'all')
2169 assert_equal(test_status, True)
2170
2171 @nottest
2172 def test_5k_cord_subscribers_join_recv_100channel(self):
2173 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2174 num_subscribers = 5000
2175 num_channels = 100
2176 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2177 num_channels = num_channels,
2178 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2179 port_list = self.generate_port_list(num_subscribers, num_channels),
2180 negative_subscriber_auth = 'all')
2181 assert_equal(test_status, True)
2182
2183 @nottest
2184 def test_5k_cord_subscribers_join_jump_100channel(self):
2185 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2186 num_subscribers = 5000
2187 num_channels = 100
2188 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2189 num_channels = num_channels,
2190 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2191 port_list = self.generate_port_list(num_subscribers, num_channels),
2192 negative_subscriber_auth = 'all')
2193 assert_equal(test_status, True)
2194
2195 @nottest
2196 def test_5k_cord_subscribers_join_next_100channel(self):
2197 ###"""Test 5k subscribers join next for 100 channels"""
2198 num_subscribers = 5000
2199 num_channels = 100
2200 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2201 num_channels = num_channels,
2202 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2203 port_list = self.generate_port_list(num_subscribers, num_channels),
2204 negative_subscriber_auth = 'all')
2205 assert_equal(test_status, True)
2206
2207 @nottest
2208 def test_5k_cord_subscribers_join_recv_400channel(self):
2209 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2210 num_subscribers = 5000
2211 num_channels = 400
2212 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2213 num_channels = num_channels,
2214 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2215 port_list = self.generate_port_list(num_subscribers, num_channels),
2216 negative_subscriber_auth = 'all')
2217 assert_equal(test_status, True)
2218
2219 @nottest
2220 def test_5k_cord_subscribers_join_jump_400channel(self):
2221 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2222 num_subscribers = 5000
2223 num_channels = 400
2224 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2225 num_channels = num_channels,
2226 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2227 port_list = self.generate_port_list(num_subscribers, num_channels),
2228 negative_subscriber_auth = 'all')
2229 assert_equal(test_status, True)
2230
2231 @nottest
2232 def test_5k_cord_subscribers_join_next_400channel(self):
2233 ###"""Test 5k subscribers join next for 400 channels"""
2234 num_subscribers = 5000
2235 num_channels = 400
2236 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2237 num_channels = num_channels,
2238 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2239 port_list = self.generate_port_list(num_subscribers, num_channels),
2240 negative_subscriber_auth = 'all')
2241 assert_equal(test_status, True)
2242
2243 @nottest
2244 def test_5k_cord_subscribers_join_recv_800channel(self):
2245 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2246 num_subscribers = 5000
2247 num_channels = 800
2248 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2249 num_channels = num_channels,
2250 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2251 port_list = self.generate_port_list(num_subscribers, num_channels),
2252 negative_subscriber_auth = 'all')
2253 assert_equal(test_status, True)
2254
2255 @nottest
2256 def test_5k_cord_subscribers_join_jump_800channel(self):
2257 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2258 num_subscribers = 5000
2259 num_channels = 800
2260 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2261 num_channels = num_channels,
2262 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2263 port_list = self.generate_port_list(num_subscribers, num_channels),
2264 negative_subscriber_auth = 'all')
2265 assert_equal(test_status, True)
2266
2267 @nottest
2268 def test_5k_cord_subscribers_join_next_800channel(self):
2269 ###"""Test 5k subscribers join next for 800 channels"""
2270 num_subscribers = 5000
2271 num_channels = 800
2272 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2273 num_channels = num_channels,
2274 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2275 port_list = self.generate_port_list(num_subscribers, num_channels),
2276 negative_subscriber_auth = 'all')
2277 assert_equal(test_status, True)
2278
2279 @nottest
2280 def test_5k_cord_subscribers_join_recv_1200channel(self):
2281 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2282 num_subscribers = 5000
2283 num_channels = 1200
2284 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2285 num_channels = num_channels,
2286 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2287 port_list = self.generate_port_list(num_subscribers, num_channels),
2288 negative_subscriber_auth = 'all')
2289 assert_equal(test_status, True)
2290
2291 @nottest
2292 def test_5k_cord_subscribers_join_jump_1200channel(self):
2293 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2294 num_subscribers = 5000
2295 num_channels = 1200
2296 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2297 num_channels = num_channels,
2298 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2299 port_list = self.generate_port_list(num_subscribers, num_channels),
2300 negative_subscriber_auth = 'all')
2301 assert_equal(test_status, True)
2302
2303 @nottest
2304 def test_5k_cord_subscribers_join_next_1200channel(self):
2305 ###"""Test 5k subscribers join next for 1200 channels"""
2306 num_subscribers = 5000
2307 num_channels = 1200
2308 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2309 num_channels = num_channels,
2310 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2311 port_list = self.generate_port_list(num_subscribers, num_channels),
2312 negative_subscriber_auth = 'all')
2313 assert_equal(test_status, True)
2314
2315 @nottest
2316 def test_5k_cord_subscribers_join_recv_1500channel(self):
2317 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2318 num_subscribers = 5000
2319 num_channels = 1500
2320 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2321 num_channels = num_channels,
2322 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2323 port_list = self.generate_port_list(num_subscribers, num_channels),
2324 negative_subscriber_auth = 'all')
2325 assert_equal(test_status, True)
2326
2327 @nottest
2328 def test_5k_cord_subscribers_join_jump_1500channel(self):
2329 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2330 num_subscribers = 5000
2331 num_channels = 1500
2332 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2333 num_channels = num_channels,
2334 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2335 port_list = self.generate_port_list(num_subscribers, num_channels),
2336 negative_subscriber_auth = 'all')
2337 assert_equal(test_status, True)
2338
2339 @nottest
2340 def test_5k_cord_subscribers_join_next_1500channel(self):
2341 ###"""Test 5k subscribers join next for 1500 channels"""
2342 num_subscribers = 5000
2343 num_channels = 1500
2344 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2345 num_channels = num_channels,
2346 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2347 port_list = self.generate_port_list(num_subscribers, num_channels),
2348 negative_subscriber_auth = 'all')
2349 assert_equal(test_status, True)
2350
2351 @nottest
2352 def test_10k_cord_subscribers_join_recv_100channel(self):
2353 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2354 num_subscribers = 10000
2355 num_channels = 100
2356 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2357 num_channels = num_channels,
2358 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2359 port_list = self.generate_port_list(num_subscribers, num_channels),
2360 negative_subscriber_auth = 'all')
2361 assert_equal(test_status, True)
2362
2363 @nottest
2364 def test_10k_cord_subscribers_join_jump_100channel(self):
2365 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2366 num_subscribers = 10000
2367 num_channels = 100
2368 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2369 num_channels = num_channels,
2370 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2371 port_list = self.generate_port_list(num_subscribers, num_channels),
2372 negative_subscriber_auth = 'all')
2373 assert_equal(test_status, True)
2374
2375 @nottest
2376 def test_10k_cord_subscribers_join_next_100channel(self):
2377 ###"""Test 10k subscribers join next for 100 channels"""
2378 num_subscribers = 10000
2379 num_channels = 100
2380 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2381 num_channels = num_channels,
2382 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2383 port_list = self.generate_port_list(num_subscribers, num_channels),
2384 negative_subscriber_auth = 'all')
2385 assert_equal(test_status, True)
2386
2387 @nottest
2388 def test_100k_cord_subscribers_join_recv_100channel(self):
2389 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2390 num_subscribers = 100000
2391 num_channels = 100
2392 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2393 num_channels = num_channels,
2394 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2395 port_list = self.generate_port_list(num_subscribers, num_channels),
2396 negative_subscriber_auth = 'all')
2397 assert_equal(test_status, True)
2398
2399 @nottest
2400 def test_100k_cord_subscribers_join_jump_100channel(self):
2401 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2402 num_subscribers = 100000
2403 num_channels = 100
2404 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2405 num_channels = num_channels,
2406 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2407 port_list = self.generate_port_list(num_subscribers, num_channels),
2408 negative_subscriber_auth = 'all')
2409 assert_equal(test_status, True)
2410
2411 @nottest
2412 def test_100k_cord_subscribers_join_next_100channel(self):
2413 ###"""Test 100k subscribers join next for 100 channels"""
2414 num_subscribers = 100000
2415 num_channels = 100
2416 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2417 num_channels = num_channels,
2418 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2419 port_list = self.generate_port_list(num_subscribers, num_channels),
2420 negative_subscriber_auth = 'all')
2421 assert_equal(test_status, True)
2422
2423 @nottest
2424 def test_10k_cord_subscribers_join_recv_400channel(self):
2425 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2426 num_subscribers = 10000
2427 num_channels = 400
2428 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2429 num_channels = num_channels,
2430 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2431 port_list = self.generate_port_list(num_subscribers, num_channels),
2432 negative_subscriber_auth = 'all')
2433 assert_equal(test_status, True)
2434
2435 @nottest
2436 def test_10k_cord_subscribers_join_jump_400channel(self):
2437 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2438 num_subscribers = 10000
2439 num_channels = 400
2440 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2441 num_channels = num_channels,
2442 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2443 port_list = self.generate_port_list(num_subscribers, num_channels),
2444 negative_subscriber_auth = 'all')
2445 assert_equal(test_status, True)
2446
2447 @nottest
2448 def test_10k_cord_subscribers_join_next_400channel(self):
2449 ###"""Test 10k subscribers join next for 400 channels"""
2450 num_subscribers = 10000
2451 num_channels = 400
2452 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2453 num_channels = num_channels,
2454 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2455 port_list = self.generate_port_list(num_subscribers, num_channels),
2456 negative_subscriber_auth = 'all')
2457 assert_equal(test_status, True)
2458
2459 @nottest
2460 def test_10k_cord_subscribers_join_recv_800channel(self):
2461 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2462 num_subscribers = 10000
2463 num_channels = 800
2464 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2465 num_channels = num_channels,
2466 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2467 port_list = self.generate_port_list(num_subscribers, num_channels),
2468 negative_subscriber_auth = 'all')
2469 assert_equal(test_status, True)
2470
2471 @nottest
2472 def test_10k_cord_subscribers_join_jump_800channel(self):
2473 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2474 num_subscribers = 10000
2475 num_channels = 800
2476 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2477 num_channels = num_channels,
2478 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2479 port_list = self.generate_port_list(num_subscribers, num_channels),
2480 negative_subscriber_auth = 'all')
2481 assert_equal(test_status, True)
2482
2483 @nottest
2484 def test_10k_cord_subscribers_join_next_800channel(self):
2485 ###"""Test 10k subscribers join next for 800 channels"""
2486 num_subscribers = 10000
2487 num_channels = 800
2488 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2489 num_channels = num_channels,
2490 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2491 port_list = self.generate_port_list(num_subscribers, num_channels),
2492 negative_subscriber_auth = 'all')
2493 assert_equal(test_status, True)
2494
2495 @nottest
2496 def test_10k_cord_subscribers_join_recv_1200channel(self):
2497 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2498 num_subscribers = 10000
2499 num_channels = 1200
2500 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2501 num_channels = num_channels,
2502 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2503 port_list = self.generate_port_list(num_subscribers, num_channels),
2504 negative_subscriber_auth = 'all')
2505 assert_equal(test_status, True)
2506
2507 @nottest
2508 def test_10k_cord_subscribers_join_jump_1200channel(self):
2509 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2510 num_subscribers = 10000
2511 num_channels = 1200
2512 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2513 num_channels = num_channels,
2514 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2515 port_list = self.generate_port_list(num_subscribers, num_channels),
2516 negative_subscriber_auth = 'all')
2517 assert_equal(test_status, True)
2518
2519 @nottest
2520 def test_10k_cord_subscribers_join_next_1200channel(self):
2521 ###"""Test 10k subscribers join next for 1200 channels"""
2522 num_subscribers = 10000
2523 num_channels = 1200
2524 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2525 num_channels = num_channels,
2526 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2527 port_list = self.generate_port_list(num_subscribers, num_channels),
2528 negative_subscriber_auth = 'all')
2529 assert_equal(test_status, True)
2530
2531 @nottest
2532 def test_10k_cord_subscribers_join_recv_1500channel(self):
2533 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2534 num_subscribers = 10000
2535 num_channels = 1500
2536 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2537 num_channels = num_channels,
2538 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2539 port_list = self.generate_port_list(num_subscribers, num_channels),
2540 negative_subscriber_auth = 'all')
2541 assert_equal(test_status, True)
2542
2543 @nottest
2544 def test_10k_cord_subscribers_join_jump_1500channel(self):
2545 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2546 num_subscribers = 10000
2547 num_channels = 1500
2548 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2549 num_channels = num_channels,
2550 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2551 port_list = self.generate_port_list(num_subscribers, num_channels),
2552 negative_subscriber_auth = 'all')
2553 assert_equal(test_status, True)
2554
2555 @nottest
2556 def test_10k_cord_subscribers_join_next_1500channel(self):
2557 ###"""Test 10k subscribers join next for 1500 channels"""
2558 num_subscribers = 10000
2559 num_channels = 1500
2560 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2561 num_channels = num_channels,
2562 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2563 port_list = self.generate_port_list(num_subscribers, num_channels),
2564 negative_subscriber_auth = 'all')
2565 assert_equal(test_status, True)
2566
2567 @nottest
2568 def test_100k_cord_subscribers_join_recv_1500channel(self):
2569 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2570 num_subscribers = 100000
2571 num_channels = 1500
2572 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2573 num_channels = num_channels,
2574 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2575 port_list = self.generate_port_list(num_subscribers, num_channels),
2576 negative_subscriber_auth = 'all')
2577 assert_equal(test_status, True)
2578
2579 @nottest
2580 def test_100k_cord_subscribers_join_jump_1500channel(self):
2581 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2582 num_subscribers = 100000
2583 num_channels = 1500
2584 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2585 num_channels = num_channels,
2586 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2587 port_list = self.generate_port_list(num_subscribers, num_channels),
2588 negative_subscriber_auth = 'all')
2589 assert_equal(test_status, True)
2590
2591 @nottest
2592 def test_100k_cord_subscribers_join_next_1500channel(self):
2593 ###"""Test 10k subscribers join next for 1500 channels"""
2594 num_subscribers = 100000
2595 num_channels = 1500
2596 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2597 num_channels = num_channels,
2598 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2599 port_list = self.generate_port_list(num_subscribers, num_channels),
2600 negative_subscriber_auth = 'all')
2601 assert_equal(test_status, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002602
2603
2604
A.R Karthick8a507cf2017-06-02 18:44:49 -07002605 def remove_olt(self, switch_map):
2606 controller = get_controller()
2607 auth = ('karaf', 'karaf')
2608 #remove subscriber for every port on all the voltha devices
2609 for device, device_map in switch_map.iteritems():
2610 uni_ports = device_map['ports']
2611 uplink_vlan = device_map['uplink_vlan']
2612 for port in uni_ports:
2613 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}'.format(controller,
2614 device,
2615 port)
2616 resp = requests.delete(rest_url, auth = auth)
2617 if resp.status_code not in [204, 202, 200]:
2618 log_test.error('Error deleting subscriber for device %s on port %s' %(device, port))
2619 else:
2620 log_test.info('Deleted subscriber for device %s on port %s' %(device, port))
A.R Karthick4c4d0492017-05-26 19:23:05 -07002621
2622 def config_olt(self, switch_map):
2623 controller = get_controller()
A.R Karthick4c4d0492017-05-26 19:23:05 -07002624 auth = ('karaf', 'karaf')
2625 #configure subscriber for every port on all the voltha devices
2626 for device, device_map in switch_map.iteritems():
2627 uni_ports = device_map['ports']
2628 uplink_vlan = device_map['uplink_vlan']
2629 for port in uni_ports:
2630 vlan = port
2631 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}/{}'.format(controller,
2632 device,
2633 port,
2634 vlan)
A.R Karthick4bd5f532017-06-06 11:37:27 -07002635 requests.post(rest_url, auth = auth)
2636 #assert_equal(resp.ok, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002637
A.R Karthick56e59432017-06-06 18:05:46 -07002638 def cord_subscriber_voltha(self, services, cbs = None, num_subscribers = 1, num_channels = 1):
A.R Karthick4c4d0492017-05-26 19:23:05 -07002639 """Test subscriber join next for channel surfing"""
2640 if self.VOLTHA_HOST is None:
2641 log_test.info('Skipping test as no voltha host')
2642 return
A.R Karthick8a507cf2017-06-02 18:44:49 -07002643 switch_map = None
2644 olt_configured = False
2645 try:
A R Karthick9dc6e922017-07-12 14:40:16 -07002646 switch_map = self.voltha_switch_map
A.R Karthick8a507cf2017-06-02 18:44:49 -07002647 if not switch_map:
2648 log_test.info('No voltha devices found')
2649 return
A.R Karthick8a507cf2017-06-02 18:44:49 -07002650 log_test.info('Adding subscribers through OLT app')
2651 self.config_olt(switch_map)
2652 olt_configured = True
2653 time.sleep(5)
A.R Karthick56e59432017-06-06 18:05:46 -07002654 self.num_subscribers = num_subscribers
2655 self.num_channels = num_channels
A.R Karthick8a507cf2017-06-02 18:44:49 -07002656 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
2657 num_channels = self.num_channels,
A.R Karthick56e59432017-06-06 18:05:46 -07002658 cbs = cbs,
A.R Karthick8a507cf2017-06-02 18:44:49 -07002659 port_list = self.generate_port_list(self.num_subscribers,
2660 self.num_channels),
2661 services = services)
2662 assert_equal(test_status, True)
2663 finally:
2664 if switch_map is not None:
2665 if olt_configured is True:
2666 self.remove_olt(switch_map)
A.R Karthick56e59432017-06-06 18:05:46 -07002667
2668 def test_cord_subscriber_voltha_tls(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002669 """Test subscriber TLS authentication with voltha"""
A.R Karthick56e59432017-06-06 18:05:46 -07002670 if self.VOLTHA_HOST is None:
2671 log_test.info('Skipping test as no voltha host')
2672 return
2673 num_subscribers = 1
2674 num_channels = 1
2675 services = ('TLS',)
2676 cbs = ( self.tls_verify, )
2677 self.cord_subscriber_voltha(services, cbs = cbs,
2678 num_subscribers = num_subscribers,
2679 num_channels = num_channels)
2680
2681 def test_cord_subscriber_voltha_tls_igmp(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002682 """Test subscriber TLS and IGMP with voltha with 1 channel"""
A.R Karthick56e59432017-06-06 18:05:46 -07002683 if self.VOLTHA_HOST is None:
2684 log_test.info('Skipping test as no voltha host')
2685 return
2686 num_subscribers = 1
2687 num_channels = 1
2688 services = ('TLS','IGMP',)
2689 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2690 self.cord_subscriber_voltha(services, cbs = cbs,
2691 num_subscribers = num_subscribers,
2692 num_channels = num_channels)
A.R Karthick4f583842017-06-09 17:15:47 -07002693
2694 def test_cord_subscriber_voltha_tls_igmp_3(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002695 """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 -07002696 if self.VOLTHA_HOST is None:
2697 log_test.info('Skipping test as no voltha host')
2698 return
2699 num_subscribers = 3
2700 num_channels = 3
2701 services = ('TLS','IGMP',)
2702 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2703 self.cord_subscriber_voltha(services, cbs = cbs,
2704 num_subscribers = num_subscribers,
2705 num_channels = num_channels)