blob: 64143c07e3f8def957f68e4be72785b3bf4cf0ff [file] [log] [blame]
A R Karthicke237aee2016-12-01 17:46:43 -08001#
A R Karthick07608ef2016-08-23 16:51:19 -07002# Copyright 2016-present Ciena Corporation
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
A R Karthicke237aee2016-12-01 17:46:43 -08007#
A R Karthick07608ef2016-08-23 16:51:19 -07008# http://www.apache.org/licenses/LICENSE-2.0
A R Karthicke237aee2016-12-01 17:46:43 -08009#
A R Karthick07608ef2016-08-23 16:51:19 -070010# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
A R Karthickb7e80902016-05-17 09:38:31 -070016import unittest
17from nose.tools import *
18from nose.twistedtools import reactor, deferred
19from twisted.internet import defer
A.R Karthick401a1ed2017-05-18 11:08:27 -070020from scapy.all import IP
A R Karthickb7e80902016-05-17 09:38:31 -070021import time, monotonic
22import os, sys
23import tempfile
24import random
25import threading
26import json
A R Karthick65c4d722016-07-18 14:20:17 -070027import requests
A R Karthickb7e80902016-05-17 09:38:31 -070028from Stats import Stats
29from OnosCtrl import OnosCtrl
30from DHCP import DHCPTest
31from EapTLS import TLSAuthTest
32from Channels import Channels, IgmpChannel
33from subscriberDb import SubscriberDB
34from threadPool import ThreadPool
A.R Karthick95d044e2016-06-10 18:44:36 -070035from portmaps import g_subscriber_port_map
A R Karthickb7e80902016-05-17 09:38:31 -070036from OltConfig import *
A.R Karthick8a507cf2017-06-02 18:44:49 -070037from CordTestServer import cord_test_onos_restart, cord_test_shell, cord_test_radius_restart
A.R Karthick4c4d0492017-05-26 19:23:05 -070038from CordTestUtils import log_test, get_controller
A R Karthick9313b762016-11-07 13:14:35 -080039from CordLogger import CordLogger
A R Karthick9dc6e922017-07-12 14:40:16 -070040from CordTestConfig import setup_module, teardown_module
A R Karthickb608d402017-06-02 11:48:41 -070041from CordContainer import Onos
A R Karthickb7e80902016-05-17 09:38:31 -070042
A R Karthick76a497a2017-04-12 10:59:39 -070043log_test.setLevel('INFO')
A R Karthickb7e80902016-05-17 09:38:31 -070044
45class Subscriber(Channels):
46 PORT_TX_DEFAULT = 2
47 PORT_RX_DEFAULT = 1
48 INTF_TX_DEFAULT = 'veth2'
49 INTF_RX_DEFAULT = 'veth0'
50 STATS_RX = 0
51 STATS_TX = 1
52 STATS_JOIN = 2
53 STATS_LEAVE = 3
54 SUBSCRIBER_SERVICES = 'DHCP IGMP TLS'
A.R Karthick4c4d0492017-05-26 19:23:05 -070055
A R Karthickb7e80902016-05-17 09:38:31 -070056 def __init__(self, name = 'sub', service = SUBSCRIBER_SERVICES, port_map = None,
57 num = 1, channel_start = 0,
58 tx_port = PORT_TX_DEFAULT, rx_port = PORT_RX_DEFAULT,
59 iface = INTF_RX_DEFAULT, iface_mcast = INTF_TX_DEFAULT,
60 mcast_cb = None, loginType = 'wireless'):
61 self.tx_port = tx_port
62 self.rx_port = rx_port
63 self.port_map = port_map or g_subscriber_port_map
64 try:
65 self.tx_intf = self.port_map[tx_port]
66 self.rx_intf = self.port_map[rx_port]
67 except:
68 self.tx_intf = self.port_map[self.PORT_TX_DEFAULT]
69 self.rx_intf = self.port_map[self.PORT_RX_DEFAULT]
70
A R Karthick76a497a2017-04-12 10:59:39 -070071 log_test.info('Subscriber %s, rx interface %s, uplink interface %s' %(name, self.rx_intf, self.tx_intf))
A.R Karthick95d044e2016-06-10 18:44:36 -070072 Channels.__init__(self, num, channel_start = channel_start,
A R Karthickb7e80902016-05-17 09:38:31 -070073 iface = self.rx_intf, iface_mcast = self.tx_intf, mcast_cb = mcast_cb)
74 self.name = name
75 self.service = service
76 self.service_map = {}
77 services = self.service.strip().split(' ')
78 for s in services:
79 self.service_map[s] = True
80 self.loginType = loginType
81 ##start streaming channels
82 self.join_map = {}
83 ##accumulated join recv stats
84 self.join_rx_stats = Stats()
A R Karthick338268f2016-06-21 17:12:13 -070085 self.recv_timeout = False
A R Karthickb7e80902016-05-17 09:38:31 -070086
87 def has_service(self, service):
88 if self.service_map.has_key(service):
89 return self.service_map[service]
90 if self.service_map.has_key(service.upper()):
91 return self.service_map[service.upper()]
92 return False
93
94 def channel_join_update(self, chan, join_time):
95 self.join_map[chan] = ( Stats(), Stats(), Stats(), Stats() )
96 self.channel_update(chan, self.STATS_JOIN, 1, t = join_time)
97
98 def channel_join(self, chan = 0, delay = 2):
99 '''Join a channel and create a send/recv stats map'''
100 if self.join_map.has_key(chan):
101 del self.join_map[chan]
102 self.delay = delay
103 chan, join_time = self.join(chan)
104 self.channel_join_update(chan, join_time)
105 return chan
106
A.R Karthick517f7812017-05-18 11:22:46 -0700107 def channel_join_next(self, delay = 2, leave_flag = True):
A R Karthickb7e80902016-05-17 09:38:31 -0700108 '''Joins the next channel leaving the last channel'''
109 if self.last_chan:
110 if self.join_map.has_key(self.last_chan):
111 del self.join_map[self.last_chan]
112 self.delay = delay
A.R Karthick517f7812017-05-18 11:22:46 -0700113 chan, join_time = self.join_next(leave_flag = leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700114 self.channel_join_update(chan, join_time)
115 return chan
116
117 def channel_jump(self, delay = 2):
118 '''Jumps randomly to the next channel leaving the last channel'''
119 if self.last_chan is not None:
120 if self.join_map.has_key(self.last_chan):
121 del self.join_map[self.last_chan]
122 self.delay = delay
123 chan, join_time = self.jump()
124 self.channel_join_update(chan, join_time)
125 return chan
126
A R Karthick78d1f492017-05-19 14:24:17 -0700127 def channel_leave(self, chan = 0, force = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700128 if self.join_map.has_key(chan):
129 del self.join_map[chan]
A R Karthick78d1f492017-05-19 14:24:17 -0700130 self.leave(chan, force = force)
A R Karthickb7e80902016-05-17 09:38:31 -0700131
132 def channel_update(self, chan, stats_type, packets, t=0):
133 if type(chan) == type(0):
134 chan_list = (chan,)
135 else:
136 chan_list = chan
A.R Karthick95d044e2016-06-10 18:44:36 -0700137 for c in chan_list:
A R Karthickb7e80902016-05-17 09:38:31 -0700138 if self.join_map.has_key(c):
139 self.join_map[c][stats_type].update(packets = packets, t = t)
140
A R Karthick338268f2016-06-21 17:12:13 -0700141 def channel_receive(self, chan, cb = None, count = 1, timeout = 5):
A R Karthick76a497a2017-04-12 10:59:39 -0700142 log_test.info('Subscriber %s on port %s receiving from group %s, channel %d' %
A R Karthick338268f2016-06-21 17:12:13 -0700143 (self.name, self.rx_intf, self.gaddr(chan), chan))
144 r = self.recv(chan, cb = cb, count = count, timeout = timeout)
A R Karthicka013a272016-08-16 16:40:19 -0700145 if len(r) == 0:
A R Karthick76a497a2017-04-12 10:59:39 -0700146 log_test.info('Subscriber %s on port %s timed out' %(self.name, self.rx_intf))
A R Karthicka013a272016-08-16 16:40:19 -0700147 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700148 log_test.info('Subscriber %s on port %s received %d packets' %(self.name, self.rx_intf, len(r)))
A R Karthick338268f2016-06-21 17:12:13 -0700149 if self.recv_timeout:
150 ##Negative test case is disabled for now
151 assert_equal(len(r), 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700152
153 def recv_channel_cb(self, pkt):
154 ##First verify that we have received the packet for the joined instance
A R Karthick76a497a2017-04-12 10:59:39 -0700155 log_test.info('Packet received for group %s, subscriber %s, port %s' %
A R Karthick338268f2016-06-21 17:12:13 -0700156 (pkt[IP].dst, self.name, self.rx_intf))
157 if self.recv_timeout:
158 return
A R Karthickb7e80902016-05-17 09:38:31 -0700159 chan = self.caddr(pkt[IP].dst)
160 assert_equal(chan in self.join_map.keys(), True)
161 recv_time = monotonic.monotonic() * 1000000
162 join_time = self.join_map[chan][self.STATS_JOIN].start
163 delta = recv_time - join_time
164 self.join_rx_stats.update(packets=1, t = delta, usecs = True)
165 self.channel_update(chan, self.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700166 log_test.debug('Packet received in %.3f usecs for group %s after join' %(delta, pkt[IP].dst))
A R Karthickb7e80902016-05-17 09:38:31 -0700167
168class subscriber_pool:
169
170 def __init__(self, subscriber, test_cbs):
171 self.subscriber = subscriber
172 self.test_cbs = test_cbs
173
174 def pool_cb(self):
175 for cb in self.test_cbs:
176 if cb:
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700177 self.test_status = cb(self.subscriber)
178 if self.test_status is not True:
179 ## This is chaning for other sub status has to check again
180 self.test_status = True
A R Karthick76a497a2017-04-12 10:59:39 -0700181 log_test.info('This service is failed and other services will not run for this subscriber')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700182 break
A R Karthick76a497a2017-04-12 10:59:39 -0700183 log_test.info('This Subscriber is tested for multiple service eligibility ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700184 self.test_status = True
185
A.R Karthick95d044e2016-06-10 18:44:36 -0700186
A R Karthick9313b762016-11-07 13:14:35 -0800187class subscriber_exchange(CordLogger):
A R Karthickb7e80902016-05-17 09:38:31 -0700188
A.R Karthick95d044e2016-06-10 18:44:36 -0700189 apps = ('org.opencord.aaa', 'org.onosproject.dhcp')
190 olt_apps = () #'org.opencord.cordmcast')
A R Karthicka013a272016-08-16 16:40:19 -0700191 vtn_app = 'org.opencord.vtn'
A R Karthickb7e80902016-05-17 09:38:31 -0700192 table_app = 'org.ciena.cordigmp'
193 dhcp_server_config = {
194 "ip": "10.1.11.50",
195 "mac": "ca:fe:ca:fe:ca:fe",
196 "subnet": "255.255.252.0",
197 "broadcast": "10.1.11.255",
198 "router": "10.1.8.1",
199 "domain": "8.8.8.8",
200 "ttl": "63",
201 "delay": "2",
202 "startip": "10.1.11.51",
203 "endip": "10.1.11.100"
204 }
205
206 aaa_loaded = False
207 test_path = os.path.dirname(os.path.realpath(__file__))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700208 table_app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-multitable-2.0-SNAPSHOT.oar')
209 app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-2.0-SNAPSHOT.oar')
A.R Karthick4c4d0492017-05-26 19:23:05 -0700210 olt_app_file = os.path.join(test_path, '..', 'apps/olt-app-1.2-SNAPSHOT.oar')
A.R Karthick8a507cf2017-06-02 18:44:49 -0700211 olt_app_name = 'org.onosproject.olt'
A R Karthickb7e80902016-05-17 09:38:31 -0700212 onos_config_path = os.path.join(test_path, '..', 'setup/onos-config')
A.R Karthick5968e0d2017-05-16 14:50:46 -0700213 olt_conf_file = os.getenv('OLT_CONFIG_FILE', os.path.join(test_path, '..', 'setup/olt_config.json'))
A R Karthickb7e80902016-05-17 09:38:31 -0700214 cpqd_path = os.path.join(test_path, '..', 'setup')
215 ovs_path = cpqd_path
A R Karthick65c4d722016-07-18 14:20:17 -0700216 test_services = ('IGMP', 'TRAFFIC')
A R Karthick338268f2016-06-21 17:12:13 -0700217 num_joins = 0
218 num_subscribers = 0
A.R Karthick517f7812017-05-18 11:22:46 -0700219 leave_flag = True
A R Karthick338268f2016-06-21 17:12:13 -0700220 num_channels = 0
221 recv_timeout = False
A R Karthick4e0c0912016-08-17 16:57:42 -0700222 onos_restartable = bool(int(os.getenv('ONOS_RESTART', 0)))
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700223 INTF_TX_DEFAULT = 'veth2'
224 INTF_RX_DEFAULT = 'veth0'
225 SUBSCRIBER_TIMEOUT = 300
226
227 CLIENT_CERT = """-----BEGIN CERTIFICATE-----
228MIICuDCCAiGgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
229CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
230IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
231RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwNjA2MjExMjI3WhcN
232MTcwNjAxMjExMjI3WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
233BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
234hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
235gYEAwvXiSzb9LZ6c7uNziUfKvoHO7wu/uiFC5YUpXbmVGuGZizbVrny0xnR85Dfe
236+9R4diansfDhIhzOUl1XjN3YDeSS9OeF5YWNNE8XDhlz2d3rVzaN6hIhdotBkUjg
237rUewjTg5OFR31QEyG3v8xR3CLgiE9xQELjZbSA07pD79zuUCAwEAAaNPME0wEwYD
238VR0lBAwwCgYIKwYBBQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5l
239eGFtcGxlLmNvbS9leGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOBgQDAjkrY
2406tDChmKbvr8w6Du/t8vHjTCoCIocHTN0qzWOeb1YsAGX89+TrWIuO1dFyYd+Z0KC
241PDKB5j/ygml9Na+AklSYAVJIjvlzXKZrOaPmhZqDufi+rXWti/utVqY4VMW2+HKC
242nXp37qWeuFLGyR1519Y1d6F/5XzqmvbwURuEug==
243-----END CERTIFICATE-----"""
244
245 CLIENT_CERT_INVALID = '''-----BEGIN CERTIFICATE-----
246MIIDvTCCAqWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
247CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
248IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
249RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwMzExMTg1MzM2WhcN
250MTcwMzA2MTg1MzM2WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
251BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
252hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
253AQoCggEBAOxemcBsPn9tZsCa5o2JA6sQDC7A6JgCNXXl2VFzKLNNvB9PS6D7ZBsQ
2545An0zEDMNzi51q7lnrYg1XyiE4S8FzMGAFr94RlGMQJUbRD9V/oqszMX4k++iAOK
255tIA1gr3x7Zi+0tkjVSVzXTmgNnhChAamdMsjYUG5+CY9WAicXyy+VEV3zTphZZDR
256OjcjEp4m/TSXVPYPgYDXI40YZKX5BdvqykWtT/tIgZb48RS1NPyN/XkCYzl3bv21
257qx7Mc0fcEbsJBIIRYTUkfxnsilcnmLxSYO+p+DZ9uBLBzcQt+4Rd5pLSfi21WM39
2582Z2oOi3vs/OYAPAqgmi2JWOv3mePa/8CAwEAAaNPME0wEwYDVR0lBAwwCgYIKwYB
259BQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5leGFtcGxlLmNvbS9l
260eGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOCAQEALBzMPDTIB6sLyPl0T6JV
261MjOkyldAVhXWiQsTjaGQGJUUe1cmUJyZbUZEc13MygXMPOM4x7z6VpXGuq1c/Vxn
262VzQ2fNnbJcIAHi/7G8W5/SQfPesIVDsHTEc4ZspPi5jlS/MVX3HOC+BDbOjdbwqP
263RX0JEr+uOyhjO+lRxG8ilMRACoBUbw1eDuVDoEBgErSUC44pq5ioDw2xelc+Y6hQ
264dmtYwfY0DbvwxHtA495frLyPcastDiT/zre7NL51MyUDPjjYjghNQEwvu66IKbQ3
265T1tJBrgI7/WI+dqhKBFolKGKTDWIHsZXQvZ1snGu/FRYzg1l+R/jT8cRB9BDwhUt
266yg==
267-----END CERTIFICATE-----'''
268
A.R Karthick4c4d0492017-05-26 19:23:05 -0700269 VOLTHA_HOST = None
270 VOLTHA_REST_PORT = 8881
271 VOLTHA_UPLINK_VLAN_MAP = { 'of:0000000000000001' : '222' }
272 VOLTHA_IGMP_ITERATIONS = 100
273 VOLTHA_CONFIG_FAKE = True
274 VOLTHA_OLT_TYPE = 'simulated_olt'
275 VOLTHA_OLT_MAC = '00:0c:e2:31:12:00'
276 VOLTHA_ENABLED = bool(int(os.getenv('VOLTHA_ENABLED', 0)))
A R Karthick9dc6e922017-07-12 14:40:16 -0700277 voltha_ctrl = None
278 voltha_device = None
279 voltha_switch_map = None
A.R Karthick4c4d0492017-05-26 19:23:05 -0700280
A R Karthickb7e80902016-05-17 09:38:31 -0700281 @classmethod
A R Karthickb608d402017-06-02 11:48:41 -0700282 def update_apps_version(cls):
283 version = Onos.getVersion()
284 major = int(version.split('.')[0])
285 minor = int(version.split('.')[1])
286 cordigmp_app_version = '2.0-SNAPSHOT'
287 olt_app_version = '1.2-SNAPSHOT'
288 if major > 1:
289 cordigmp_app_version = '3.0-SNAPSHOT'
290 olt_app_version = '2.0-SNAPSHOT'
291 elif major == 1:
292 if minor > 10:
293 cordigmp_app_version = '3.0-SNAPSHOT'
294 olt_app_version = '2.0-SNAPSHOT'
295 elif minor <= 8:
296 olt_app_version = '1.1-SNAPSHOT'
297 cls.app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-{}.oar'.format(cordigmp_app_version))
298 cls.table_app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-multitable-{}.oar'.format(cordigmp_app_version))
299 cls.olt_app_file = os.path.join(cls.test_path, '..', 'apps/olt-app-{}.oar'.format(olt_app_version))
300
301 @classmethod
A R Karthickd44cea12016-07-20 12:16:41 -0700302 def load_device_id(cls):
A R Karthickb03cecd2016-07-27 10:27:55 -0700303 '''Configure the device id'''
304 did = OnosCtrl.get_device_id()
A R Karthickd44cea12016-07-20 12:16:41 -0700305 #Set the default config
306 cls.device_id = did
307 cls.device_dict = { "devices" : {
308 "{}".format(did) : {
309 "basic" : {
310 "driver" : "pmc-olt"
311 }
312 }
313 },
314 }
315 return did
316
317 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700318 def setUpClass(cls):
319 '''Load the OLT config and activate relevant apps'''
A R Karthickb608d402017-06-02 11:48:41 -0700320 cls.update_apps_version()
A R Karthickb7e80902016-05-17 09:38:31 -0700321 cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700322 if cls.VOLTHA_ENABLED is False:
A R Karthick38d5df42017-07-10 13:33:26 -0700323 OnosCtrl.config_device_driver()
A.R Karthick4c4d0492017-05-26 19:23:05 -0700324 OnosCtrl.cord_olt_config(cls.olt)
A R Karthickb03cecd2016-07-27 10:27:55 -0700325 cls.port_map, cls.port_list = cls.olt.olt_port_map()
A R Karthick0f6b6842016-12-06 17:17:44 -0800326 cls.switches = cls.port_map['switches']
327 cls.num_ports = cls.port_map['num_ports']
328 if cls.num_ports > 1:
329 cls.num_ports -= 1 ##account for the tx port
A.R Karthickaa859b22017-06-12 14:50:35 -0700330 cls.activate_apps(cls.apps + cls.olt_apps, deactivate = True)
A R Karthickb7e80902016-05-17 09:38:31 -0700331
332 @classmethod
333 def tearDownClass(cls):
334 '''Deactivate the olt apps and restart OVS back'''
A R Karthick38d5df42017-07-10 13:33:26 -0700335 apps = cls.olt_apps
A R Karthickb7e80902016-05-17 09:38:31 -0700336 for app in apps:
337 onos_ctrl = OnosCtrl(app)
338 onos_ctrl.deactivate()
A R Karthick38d5df42017-07-10 13:33:26 -0700339 if cls.VOLTHA_ENABLED is False:
340 OnosCtrl.config_device_driver(driver = 'ovs')
A R Karthickb7e80902016-05-17 09:38:31 -0700341
342 @classmethod
A.R Karthickaa859b22017-06-12 14:50:35 -0700343 def activate_apps(cls, apps, deactivate = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700344 for app in apps:
345 onos_ctrl = OnosCtrl(app)
A.R Karthickaa859b22017-06-12 14:50:35 -0700346 if deactivate is True:
347 onos_ctrl.deactivate()
348 time.sleep(2)
A R Karthickb7e80902016-05-17 09:38:31 -0700349 status, _ = onos_ctrl.activate()
350 assert_equal(status, True)
351 time.sleep(2)
352
353 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700354 def start_onos(cls, network_cfg = None):
A R Karthicka478df42016-07-27 16:51:08 -0700355 if cls.onos_restartable is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700356 log_test.info('ONOS restart is disabled. Skipping ONOS restart')
A R Karthick65c4d722016-07-18 14:20:17 -0700357 return
A.R Karthick4c4d0492017-05-26 19:23:05 -0700358 if cls.VOLTHA_ENABLED is True:
359 log_test.info('ONOS restart skipped as VOLTHA is running')
360 return
A R Karthickb7e80902016-05-17 09:38:31 -0700361 if network_cfg is None:
A R Karthick4b72d4b2016-06-15 11:09:17 -0700362 network_cfg = cls.device_dict
A R Karthickb7e80902016-05-17 09:38:31 -0700363
364 if type(network_cfg) is tuple:
365 res = []
366 for v in network_cfg:
367 res += v.items()
368 config = dict(res)
369 else:
370 config = network_cfg
A R Karthick76a497a2017-04-12 10:59:39 -0700371 log_test.info('Restarting ONOS with new network configuration')
A R Karthick338268f2016-06-21 17:12:13 -0700372 return cord_test_onos_restart(config = config)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700373
374 @classmethod
375 def remove_onos_config(cls):
376 try:
377 os.unlink('{}/network-cfg.json'.format(cls.onos_config_path))
378 except: pass
A R Karthickb7e80902016-05-17 09:38:31 -0700379
380 @classmethod
381 def start_cpqd(cls, mac = '00:11:22:33:44:55'):
382 dpid = mac.replace(':', '')
383 cpqd_file = os.sep.join( (cls.cpqd_path, 'cpqd.sh') )
384 cpqd_cmd = '{} {}'.format(cpqd_file, dpid)
385 ret = os.system(cpqd_cmd)
386 assert_equal(ret, 0)
387 time.sleep(10)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700388 device_id = 'of:{}{}'.format('0'*4, dpid)
389 return device_id
A R Karthickb7e80902016-05-17 09:38:31 -0700390
391 @classmethod
392 def start_ovs(cls):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700393 ovs_file = os.sep.join( (cls.ovs_path, 'of-bridge.sh') )
A R Karthickb7e80902016-05-17 09:38:31 -0700394 ret = os.system(ovs_file)
395 assert_equal(ret, 0)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700396 time.sleep(30)
A R Karthickb7e80902016-05-17 09:38:31 -0700397
A R Karthicka013a272016-08-16 16:40:19 -0700398 @classmethod
399 def ovs_cleanup(cls):
400 ##For every test case, delete all the OVS groups
401 cmd = 'ovs-ofctl del-groups br-int -OOpenFlow11 >/dev/null 2>&1'
A R Karthicka013a272016-08-16 16:40:19 -0700402 try:
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700403 cord_test_shell(cmd)
404 ##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 -0700405 os.system(cmd)
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700406 finally:
407 return
A R Karthicka013a272016-08-16 16:40:19 -0700408
A R Karthickb7e80902016-05-17 09:38:31 -0700409 def onos_aaa_load(self):
410 if self.aaa_loaded:
411 return
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700412 aaa_dict = {'apps' : { 'org.opencord.aaa' : { 'AAA' : { 'radiusSecret': 'radius_password',
413 'radiusIp': '172.17.0.2' } } } }
A R Karthickb7e80902016-05-17 09:38:31 -0700414 radius_ip = os.getenv('ONOS_AAA_IP') or '172.17.0.2'
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700415 aaa_dict['apps']['org.opencord.aaa']['AAA']['radiusIp'] = radius_ip
416 self.onos_load_config('org.opencord.aaa', aaa_dict)
A R Karthickb7e80902016-05-17 09:38:31 -0700417 self.aaa_loaded = True
418
419 def onos_dhcp_table_load(self, config = None):
420 dhcp_dict = {'apps' : { 'org.onosproject.dhcp' : { 'dhcp' : copy.copy(self.dhcp_server_config) } } }
421 dhcp_config = dhcp_dict['apps']['org.onosproject.dhcp']['dhcp']
422 if config:
423 for k in config.keys():
424 if dhcp_config.has_key(k):
425 dhcp_config[k] = config[k]
426 self.onos_load_config('org.onosproject.dhcp', dhcp_dict)
427
428 def onos_load_config(self, app, config):
429 status, code = OnosCtrl.config(config)
430 if status is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700431 log_test.info('JSON config request for app %s returned status %d' %(app, code))
A R Karthickb7e80902016-05-17 09:38:31 -0700432 assert_equal(status, True)
433 time.sleep(2)
434
435 def dhcp_sndrcv(self, dhcp, update_seed = False):
436 cip, sip = dhcp.discover(update_seed = update_seed)
437 assert_not_equal(cip, None)
438 assert_not_equal(sip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700439 log_test.info('Got dhcp client IP %s from server %s for mac %s' %
A R Karthickb7e80902016-05-17 09:38:31 -0700440 (cip, sip, dhcp.get_mac(cip)[0]))
441 return cip,sip
442
443 def dhcp_request(self, subscriber, seed_ip = '10.10.10.1', update_seed = False):
444 config = {'startip':'10.10.10.20', 'endip':'10.10.10.200',
445 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
446 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
447 self.onos_dhcp_table_load(config)
448 dhcp = DHCPTest(seed_ip = seed_ip, iface = subscriber.iface)
449 cip, sip = self.dhcp_sndrcv(dhcp, update_seed = update_seed)
450 return cip, sip
451
452 def recv_channel_cb(self, pkt):
453 ##First verify that we have received the packet for the joined instance
454 chan = self.subscriber.caddr(pkt[IP].dst)
455 assert_equal(chan in self.subscriber.join_map.keys(), True)
456 recv_time = monotonic.monotonic() * 1000000
457 join_time = self.subscriber.join_map[chan][self.subscriber.STATS_JOIN].start
458 delta = recv_time - join_time
459 self.subscriber.join_rx_stats.update(packets=1, t = delta, usecs = True)
460 self.subscriber.channel_update(chan, self.subscriber.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700461 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 -0700462 self.test_status = True
463
A R Karthick65c4d722016-07-18 14:20:17 -0700464 def traffic_verify(self, subscriber):
465 if subscriber.has_service('TRAFFIC'):
466 url = 'http://www.google.com'
467 resp = requests.get(url)
468 self.test_status = resp.ok
469 if resp.ok == False:
A R Karthick76a497a2017-04-12 10:59:39 -0700470 log_test.info('Subscriber %s failed get from url %s with status code %d'
A R Karthick65c4d722016-07-18 14:20:17 -0700471 %(subscriber.name, url, resp.status_code))
472 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700473 log_test.info('GET request from %s succeeded for subscriber %s'
A R Karthick65c4d722016-07-18 14:20:17 -0700474 %(url, subscriber.name))
A R Karthicka013a272016-08-16 16:40:19 -0700475 return self.test_status
A R Karthick65c4d722016-07-18 14:20:17 -0700476
A R Karthickb7e80902016-05-17 09:38:31 -0700477 def tls_verify(self, subscriber):
A.R Karthick8a507cf2017-06-02 18:44:49 -0700478 def tls_fail_cb():
479 log_test.info('TLS verification failed')
A R Karthickb7e80902016-05-17 09:38:31 -0700480 if subscriber.has_service('TLS'):
A.R Karthickaa859b22017-06-12 14:50:35 -0700481 #OnosCtrl('org.opencord.aaa').deactivate()
482 #time.sleep(2)
483 #OnosCtrl('org.opencord.aaa').activate()
484 #time.sleep(5)
A.R Karthick8a507cf2017-06-02 18:44:49 -0700485 tls = TLSAuthTest(fail_cb = tls_fail_cb, intf = subscriber.rx_intf)
A R Karthick76a497a2017-04-12 10:59:39 -0700486 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700487 tls.runTest()
A.R Karthick8a507cf2017-06-02 18:44:49 -0700488 assert_equal(tls.failTest, False)
A R Karthickb7e80902016-05-17 09:38:31 -0700489 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700490 return self.test_status
491 else:
492 self.test_status = True
493 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700494
495 def dhcp_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700496 if subscriber.has_service('DHCP'):
497 cip, sip = self.dhcp_request(subscriber, update_seed = True)
A R Karthick76a497a2017-04-12 10:59:39 -0700498 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700499 subscriber.src_list = [cip]
500 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700501 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700502 else:
503 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
504 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700505 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700506
507 def dhcp_jump_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700508 if subscriber.has_service('DHCP'):
509 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.200.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700510 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700511 subscriber.src_list = [cip]
512 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700513 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700514 else:
515 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
516 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700517 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700518
519 def dhcp_next_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700520 if subscriber.has_service('DHCP'):
521 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.150.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700522 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700523 subscriber.src_list = [cip]
524 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700525 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700526 else:
527 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
528 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700529 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700530
531 def igmp_verify(self, subscriber):
532 chan = 0
533 if subscriber.has_service('IGMP'):
A R Karthick338268f2016-06-21 17:12:13 -0700534 ##We wait for all the subscribers to join before triggering leaves
535 if subscriber.rx_port > 1:
536 time.sleep(5)
537 subscriber.channel_join(chan, delay = 0)
538 self.num_joins += 1
539 while self.num_joins < self.num_subscribers:
540 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700541 log_test.info('All subscribers have joined the channel')
A R Karthick338268f2016-06-21 17:12:13 -0700542 for i in range(10):
543 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
A R Karthick76a497a2017-04-12 10:59:39 -0700544 log_test.info('Leaving channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700545 subscriber.channel_leave(chan)
A R Karthick338268f2016-06-21 17:12:13 -0700546 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700547 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 -0700548 #Should not receive packets for this subscriber
549 self.recv_timeout = True
550 subscriber.recv_timeout = True
551 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
552 subscriber.recv_timeout = False
553 self.recv_timeout = False
A R Karthick76a497a2017-04-12 10:59:39 -0700554 log_test.info('Joining channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthick338268f2016-06-21 17:12:13 -0700555 subscriber.channel_join(chan, delay = 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700556 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700557 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700558
559 def igmp_jump_verify(self, subscriber):
560 if subscriber.has_service('IGMP'):
561 for i in xrange(subscriber.num):
A R Karthick76a497a2017-04-12 10:59:39 -0700562 log_test.info('Subscriber %s jumping channel' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700563 chan = subscriber.channel_jump(delay=0)
564 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 1)
A R Karthick76a497a2017-04-12 10:59:39 -0700565 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700566 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700567 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 -0700568 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700569 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700570
571 def igmp_next_verify(self, subscriber):
572 if subscriber.has_service('IGMP'):
573 for i in xrange(subscriber.num):
574 if i:
A.R Karthick517f7812017-05-18 11:22:46 -0700575 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700576 else:
577 chan = subscriber.channel_join(i, delay=0)
A R Karthick76a497a2017-04-12 10:59:39 -0700578 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700579 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
A R Karthick76a497a2017-04-12 10:59:39 -0700580 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700581 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700582 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 -0700583 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700584 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700585
A.R Karthick4c4d0492017-05-26 19:23:05 -0700586 def voltha_igmp_next_verify(self, subscriber):
587 if subscriber.has_service('IGMP'):
588 for c in xrange(self.VOLTHA_IGMP_ITERATIONS):
589 for i in xrange(subscriber.num):
590 if i:
591 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
592 time.sleep(0.2)
593 else:
594 chan = subscriber.channel_join(i, delay=0)
595 time.sleep(0.2)
A.R Karthick56e59432017-06-06 18:05:46 -0700596 if subscriber.num == 1:
597 subscriber.channel_leave(chan)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700598 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
599 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
600 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
601 self.test_status = True
602 return self.test_status
603
A R Karthick31f1f342017-05-19 13:55:10 -0700604 def igmp_leave_verify(self, subscriber):
605 if subscriber.has_service('IGMP'):
606 for chan in xrange(subscriber.num):
A R Karthick78d1f492017-05-19 14:24:17 -0700607 subscriber.channel_leave(chan, force = True)
A R Karthick31f1f342017-05-19 13:55:10 -0700608 time.sleep(2)
609 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
610 #self.recv_timeout = True
611 #subscriber.recv_timeout = True
612 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
613 #self.recv_timeout = False
614 #subscriber.recv_timeout = False
615 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
616 #time.sleep(1)
617
618 self.test_status = True
619 return self.test_status
620
A R Karthickb7e80902016-05-17 09:38:31 -0700621 def generate_port_list(self, subscribers, channels):
622 return self.port_list[:subscribers]
623
A.R Karthick4c4d0492017-05-26 19:23:05 -0700624 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 -0700625 '''Load the subscriber from the database'''
A.R Karthick4c4d0492017-05-26 19:23:05 -0700626 test_services = services if services else self.test_services
627 self.subscriber_db = SubscriberDB(create = create, services = test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700628 if create is True:
629 self.subscriber_db.generate(num)
630 self.subscriber_info = self.subscriber_db.read(num)
631 self.subscriber_list = []
632 if not port_list:
633 port_list = self.generate_port_list(num, num_channels)
634
635 index = 0
636 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700637 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700638 service=info['Service'],
639 port_map = self.port_map,
640 num=num_channels,
641 channel_start = channel_start,
642 tx_port = port_list[index][0],
643 rx_port = port_list[index][1]))
644 if num_channels > 1:
645 channel_start += num_channels
646 index += 1
647
648 #load the ssm list for all subscriber channels
649 igmpChannel = IgmpChannel()
650 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
651 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
652 igmpChannel.igmp_load_ssm_config(ssm_list)
653
A.R Karthick95d044e2016-06-10 18:44:36 -0700654 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700655 channel_start = 0, cbs = None, port_list = [],
656 services = None, negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700657 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700658 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700659 subscribers_count = num_subscribers
660 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700661 self.subscriber_load(create = True, num = num_subscribers,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700662 num_channels = num_channels, channel_start = channel_start, port_list = port_list,
663 services = services)
A R Karthickb7e80902016-05-17 09:38:31 -0700664 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700665 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
666
A R Karthick338268f2016-06-21 17:12:13 -0700667 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800668 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700669 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700670 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700671 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700672 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700673 if services and 'IGMP' in services:
674 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700675 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
676 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
677 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
678 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
679 else:
680 cbs = cbs_negative
681 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700682 pool_object = subscriber_pool(subscriber, cbs)
683 self.thread_pool.addTask(pool_object.pool_cb)
684 self.thread_pool.cleanUpThreads()
685 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700686 if services and 'IGMP' in services:
687 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700688 if chan_leave is True:
689 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700690 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700691 return self.test_status
692
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700693 def tls_invalid_cert(self, subscriber):
694 if subscriber.has_service('TLS'):
695 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700696 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700697 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
698 tls.runTest()
699 if tls.failTest == True:
700 self.test_status = False
701 return self.test_status
702 else:
703 self.test_status = True
704 return self.test_status
705
706 def tls_no_cert(self, subscriber):
707 if subscriber.has_service('TLS'):
708 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700709 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700710 tls = TLSAuthTest(client_cert = '')
711 tls.runTest()
712 if tls.failTest == True:
713 self.test_status = False
714 return self.test_status
715 else:
716 self.test_status = True
717 return self.test_status
718
719 def tls_self_signed_cert(self, subscriber):
720 if subscriber.has_service('TLS'):
721 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700722 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700723 tls = TLSAuthTest(client_cert = self.CLIENT_CERT)
724 tls.runTest()
725 if tls.failTest == False:
726 self.test_status = True
727 return self.test_status
728 else:
729 self.test_status = True
730 return self.test_status
731
732 def tls_non_ca_authrized_cert(self, subscriber):
733 if subscriber.has_service('TLS'):
734 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700735 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700736 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
737 tls.runTest()
738 if tls.failTest == False:
739 self.test_status = True
740 return self.test_status
741 else:
742 self.test_status = True
743 return self.test_status
744
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700745 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
746 if subscriber.has_service('TLS'):
747 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700748 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700749 num_users = 3
750 for i in xrange(num_users):
751 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
752 tls.runTest()
753 if tls.failTest == False:
754 self.test_status = True
755 return self.test_status
756 else:
757 self.test_status = True
758 return self.test_status
759
760 def dhcp_discover_scenario(self, subscriber):
761 if subscriber.has_service('DHCP'):
762 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700763 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700764 t1 = self.subscriber_dhcp_1release()
765 self.test_status = True
766 return self.test_status
767 else:
768 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
769 self.test_status = True
770 return self.test_status
771
772 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700773 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
774 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
775 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
776 self.onos_dhcp_table_load(config)
777 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
778 cip, sip = self.send_recv()
779 log_test.info('Releasing ip %s to server %s' %(cip, sip))
780 assert_equal(self.dhcp.release(cip), True)
781 log_test.info('Triggering DHCP discover again after release')
782 cip2, sip2 = self.send_recv(update_seed = True)
783 log_test.info('Verifying released IP was given back on rediscover')
784 assert_equal(cip, cip2)
785 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
786 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700787
788 def dhcp_client_reboot_scenario(self, subscriber):
789 if subscriber.has_service('DHCP'):
790 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700791 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700792 tl = self.subscriber_dhcp_client_request_after_reboot()
793 self.test_status = True
794 return self.test_status
795 else:
796 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
797 self.test_status = True
798 return self.test_status
799
800 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
801 #''' Client sends DHCP Request after reboot.'''
802
803 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
804 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
805 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
806 self.onos_dhcp_table_load(config)
807 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
808 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700809 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700810 (cip, sip, mac) )
811
A R Karthick76a497a2017-04-12 10:59:39 -0700812 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 -0700813
814 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700815 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 -0700816 assert_not_equal(cip, None)
817
818 else:
819 new_cip, new_sip = self.dhcp.only_request(cip, mac)
820 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700821 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700822 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700823 log_test.info('Client goes down.')
824 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700825
826 time.sleep(5)
827
828 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700829 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700830
831 new_cip, new_sip = self.dhcp.only_request(cip, mac)
832 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700833 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700834 assert_not_equal(new_cip, None)
835 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700836 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700837
838 def dhcp_client_renew_scenario(self, subscriber):
839 if subscriber.has_service('DHCP'):
840 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700841 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700842 tl = self.subscriber_dhcp_client_renew_time()
843 self.test_status = True
844 return self.test_status
845 else:
846 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
847 self.test_status = True
848 return self.test_status
849
850 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
851 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
852 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
853 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
854 self.onos_dhcp_table_load(config)
855 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
856 cip, sip, mac , lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700857 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700858 (cip, sip, mac) )
859
A R Karthick76a497a2017-04-12 10:59:39 -0700860 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet. Those should not be none, which is expected.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700861 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700862 log_test.info("Verified that Client 's IP and mac in DHCP Offer packet are none, which is not expected behavior.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700863 assert_not_equal(cip, None)
864 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700865 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700866 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
867 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700868 log_test.info("Client 's Renewal time is :%s",lval)
869 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700870 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700871 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700872 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
873 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700874 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700875 (latest_cip, mac, latest_sip) )
876
877 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700878 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700879 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700880 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700881
882 def dhcp_server_reboot_scenario(self, subscriber):
883 if subscriber.has_service('DHCP'):
884 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700885 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700886 tl = self.subscriber_dhcp_server_after_reboot()
887 self.test_status = True
888 return self.test_status
889 else:
890 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
891 self.test_status = True
892 return self.test_status
893
894 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
895 ''' DHCP server goes down.'''
896 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
897 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
898 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
899 self.onos_dhcp_table_load(config)
900 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
901 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700902 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700903 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700904 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 -0700905 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700906 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 -0700907 assert_not_equal(cip, None)
908 else:
909 new_cip, new_sip = self.dhcp.only_request(cip, mac)
910 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700911 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700912 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700913 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700914 onos_ctrl = OnosCtrl(self.dhcp_app)
915 onos_ctrl.deactivate()
916 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700917 log_test.info("Sending DHCP Request.")
918 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700919 new_cip, new_sip = self.dhcp.only_request(cip, mac)
920 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700921 log_test.info('')
922 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700923 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700924 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700925 assert_equal(new_cip,None) #Neagtive Test Case
A R Karthick76a497a2017-04-12 10:59:39 -0700926 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700927# self.activate_apps(self.dhcp_app)
928 onos_ctrl = OnosCtrl(self.dhcp_app)
929 status, _ = onos_ctrl.activate()
930 assert_equal(status, True)
931 time.sleep(3)
932 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700933 log_test.info("Sending DHCP Request after DHCP server is up.")
934 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700935 new_cip, new_sip = self.dhcp.only_request(cip, mac)
936 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700937 log_test.info('')
938 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700939 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700940 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700941 assert_equal(new_cip,None) #Neagtive Test Case
942
943 def dhcp_client_rebind_scenario(self, subscriber):
944 if subscriber.has_service('DHCP'):
945 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700946 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700947 tl = self.subscriber_dhcp_client_rebind_time()
948 self.test_status = True
949 return self.test_status
950 else:
951 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
952 self.test_status = True
953 return self.test_status
954
955 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
956 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
957 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
958 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
959 self.onos_dhcp_table_load(config)
960 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
961 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700962 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700963 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700964 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 -0700965 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700966 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 -0700967 assert_not_equal(cip, None)
968 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700969 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700970 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
971 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700972 log_test.info("Client 's Rebind time is :%s",lval)
973 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700974 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700975 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700976 self.dhcp.after_T2 = True
977 for i in range(0,4):
978 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
979 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700980 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700981 (latest_cip, mac, latest_sip) )
982 break
983 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700984 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700985 assert_not_equal(latest_cip, None)
986 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700987 log_test.info("Got DHCP NAK.Lease not Renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700988
989 def dhcp_starvation_scenario(self, subscriber):
990 if subscriber.has_service('DHCP'):
991 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700992 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700993 tl = self.subscriber_dhcp_starvation()
994 self.test_status = True
995 return self.test_status
996 else:
997 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
998 self.test_status = True
999 return self.test_status
1000
1001 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
1002 '''DHCP starve'''
1003 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
1004 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
1005 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
1006 self.onos_dhcp_table_load(config)
1007 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001008 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001009 for x in xrange(50):
1010 mac = RandMAC()._fix()
1011 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -07001012 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001013 cip, sip = self.send_recv(update_seed = True, validate = False)
1014 assert_equal(cip, None)
1015 assert_equal(sip, None)
1016
1017 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
1018 if subscriber.has_service('DHCP'):
1019 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001020 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001021 tl = self.subscriber_dhcp_same_client_multiple_discover()
1022 self.test_status = True
1023 return self.test_status
1024 else:
1025 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1026 self.test_status = True
1027 return self.test_status
1028
1029 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
1030 ''' DHCP Client sending multiple discover . '''
1031 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1032 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1033 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1034 self.onos_dhcp_table_load(config)
1035 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
1036 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001037 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 -07001038 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001039 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001040 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
1041 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001042 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 -07001043 % (new_cip, new_sip, new_mac) )
1044 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001045 log_test.info('Ip after 1st discover %s' %cip)
1046 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001047 assert_equal(cip, new_cip)
1048
1049 def dhcp_same_client_multi_request_scenario(self, subscriber):
1050 if subscriber.has_service('DHCP'):
1051 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001052 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001053 tl = self.subscriber_dhcp_same_client_multiple_request()
1054 self.test_status = True
1055 return self.test_status
1056 else:
1057 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1058 self.test_status = True
1059 return self.test_status
1060
1061 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1062 ''' DHCP Client sending multiple repeat DHCP requests. '''
1063 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1064 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1065 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1066 self.onos_dhcp_table_load(config)
1067 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001068 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001069 cip, sip = self.send_recv()
1070 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001071 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001072 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1073 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001074 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 -07001075 % (new_cip, new_sip, mac) )
1076 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001077 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001078 assert_equal(new_cip, None)
1079 assert_equal(new_sip, None)
1080 else:
1081 print "Something went wrong."
1082
1083 def dhcp_client_desired_ip_scenario(self, subscriber):
1084 if subscriber.has_service('DHCP'):
1085 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001086 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001087 tl = self.subscriber_dhcp_client_desired_address()
1088 self.test_status = True
1089 return self.test_status
1090 else:
1091 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1092 self.test_status = True
1093 return self.test_status
1094
1095 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1096 '''DHCP Client asking for desired IP address.'''
1097 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1098 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1099 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1100 self.onos_dhcp_table_load(config)
1101 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1102 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001103 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001104 (cip, sip, mac) )
1105 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001106 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001107 (cip, sip, mac) )
1108 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001109 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001110 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001111 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001112 assert_equal(cip, self.dhcp.seed_ip)
1113
1114 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1115 if subscriber.has_service('DHCP'):
1116 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001117 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001118 tl = self.subscriber_dhcp_server_nak_packet()
1119 self.test_status = True
1120 return self.test_status
1121 else:
1122 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1123 self.test_status = True
1124 return self.test_status
1125
1126 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1127 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1128 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1129 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1130 self.onos_dhcp_table_load(config)
1131 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1132 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001133 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001134 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001135 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 -07001136 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001137 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 -07001138 assert_not_equal(cip, None)
1139 else:
1140 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1141 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001142 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001143 assert_equal(new_cip, None) #Negative Test Case
1144
1145 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1146 if subscriber.has_service('DHCP'):
1147 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001148 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001149 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1150 self.test_status = True
1151 return self.test_status
1152 else:
1153 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1154 self.test_status = True
1155 return self.test_status
1156
1157 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1158 '''DHCP Client asking for desired IP address from out of pool.'''
1159 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1160 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1161 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1162 self.onos_dhcp_table_load(config)
1163 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1164 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001165 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001166 (cip, sip, mac) )
1167 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001168 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001169 (cip, sip, mac) )
1170 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1171
1172 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001173 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001174 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001175 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001176 assert_not_equal(cip, self.dhcp.seed_ip)
1177
1178 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001179 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001180
1181 def dhcp_client_specific_lease_scenario(self, subscriber):
1182 if subscriber.has_service('DHCP'):
1183 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001184 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001185 tl = self.subscriber_dhcp_specific_lease_packet()
1186 self.test_status = True
1187 return self.test_status
1188 else:
1189 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1190 self.test_status = True
1191 return self.test_status
1192
1193 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1194 ''' Client sends DHCP Discover packet for particular lease time.'''
1195 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1196 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1197 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1198 self.onos_dhcp_table_load(config)
1199 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001200 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001201 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1202
A R Karthick76a497a2017-04-12 10:59:39 -07001203 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001204 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001205 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 -07001206 assert_not_equal(cip, None)
1207 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001208 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 -07001209 (cip, sip, mac, lval) )
1210 assert_not_equal(lval, 700)
1211
1212 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001213 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001214 self.num_subscribers = 5
1215 self.num_channels = 1
A R Karthick38d5df42017-07-10 13:33:26 -07001216 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1217 num_channels = self.num_channels,
1218 port_list = self.generate_port_list(self.num_subscribers,
1219 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001220 assert_equal(test_status, True)
1221
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001222 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001223 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001224 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001225 self.num_channels = 10
1226 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1227 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001228 cbs = (self.tls_verify, self.dhcp_jump_verify,
1229 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001230 port_list = self.generate_port_list(self.num_subscribers,
1231 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001232 assert_equal(test_status, True)
1233
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001234 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001235 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001236 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001237 self.num_channels = 10
1238 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1239 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001240 cbs = (self.tls_verify, self.dhcp_next_verify,
1241 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001242 port_list = self.generate_port_list(self.num_subscribers,
1243 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001244 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001245
A.R Karthick517f7812017-05-18 11:22:46 -07001246 def test_cord_subscriber_join_next_without_leave(self):
1247 """Test subscriber join next for channel surfing"""
1248 self.num_subscribers = self.num_ports * len(self.switches)
1249 self.num_channels = 5
1250 self.leave_flag = False
1251 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1252 num_channels = self.num_channels,
1253 cbs = (self.tls_verify, self.dhcp_next_verify,
1254 self.igmp_next_verify, self.traffic_verify),
1255 port_list = self.generate_port_list(self.num_subscribers,
1256 self.num_channels))
1257 self.leave_flag = True
1258 assert_equal(test_status, True)
1259
A R Karthick31f1f342017-05-19 13:55:10 -07001260 def test_cord_subscriber_leave(self):
1261 """Test subscriber leaves for all the join nexts before"""
1262 self.num_subscribers = self.num_ports * len(self.switches)
1263 self.num_channels = 5
1264 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1265 num_channels = self.num_channels,
1266 cbs = (self.tls_verify, self.dhcp_next_verify,
1267 self.igmp_leave_verify, self.traffic_verify),
1268 port_list = self.generate_port_list(self.num_subscribers,
1269 self.num_channels))
1270 assert_equal(test_status, True)
1271
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001272 #@deferred(SUBSCRIBER_TIMEOUT)
1273 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1274 ### """Test subscriber to auth with invalidCertification and join channel"""
1275 num_subscribers = 1
1276 num_channels = 1
1277 df = defer.Deferred()
1278 def sub_auth_invalid_cert(df):
1279 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1280 num_channels = num_channels,
1281 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1282 self.igmp_verify, self.traffic_verify),
1283 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1284 assert_equal(test_status, False)
1285 df.callback(0)
1286 reactor.callLater(0, sub_auth_invalid_cert, df)
1287 return df
1288
1289 #@deferred(SUBSCRIBER_TIMEOUT)
1290 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1291 ### """Test subscriber to auth with No Certification and join channel"""
1292 num_subscribers = 1
1293 num_channels = 1
1294 df = defer.Deferred()
1295 def sub_auth_no_cert(df):
1296 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1297 num_channels = num_channels,
1298 cbs = (self.tls_no_cert, self.dhcp_verify,
1299 self.igmp_verify, self.traffic_verify),
1300 port_list = self.generate_port_list(num_subscribers, num_channels),
1301 negative_subscriber_auth = 'all')
1302 assert_equal(test_status, False)
1303 df.callback(0)
1304 reactor.callLater(0, sub_auth_no_cert, df)
1305 return df
1306 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1307 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1308 num_subscribers = 1
1309 num_channels = 1
1310 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1311 num_channels = num_channels,
1312 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1313 self.igmp_verify, self.traffic_verify),
1314 port_list = self.generate_port_list(num_subscribers, num_channels),
1315 negative_subscriber_auth = 'all')
1316 assert_equal(test_status, True)
1317
1318 @deferred(SUBSCRIBER_TIMEOUT)
1319 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1320 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1321 num_subscribers = 2
1322 num_channels = 1
1323 df = defer.Deferred()
1324 def sub_auth_invalid_cert(df):
1325 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1326 num_channels = num_channels,
1327 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1328 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1329 assert_equal(test_status, True)
1330 df.callback(0)
1331 reactor.callLater(0, sub_auth_invalid_cert, df)
1332 return df
1333
1334 @deferred(SUBSCRIBER_TIMEOUT)
1335 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1336 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1337 num_subscribers = 2
1338 num_channels = 1
1339 df = defer.Deferred()
1340 def sub_auth_no_cert(df):
1341 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1342 num_channels = num_channels,
1343 cbs = (self.tls_no_cert, self.dhcp_verify,
1344 self.igmp_verify, self.traffic_verify),
1345 port_list = self.generate_port_list(num_subscribers, num_channels),
1346 negative_subscriber_auth = 'half')
1347 assert_equal(test_status, True)
1348 df.callback(0)
1349 reactor.callLater(0, sub_auth_no_cert, df)
1350 return df
1351
1352 @deferred(SUBSCRIBER_TIMEOUT)
1353 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1354 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1355 num_subscribers = 2
1356 num_channels = 1
1357 df = defer.Deferred()
1358 def sub_auth_no_cert(df):
1359 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1360 num_channels = num_channels,
1361 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1362 self.igmp_verify, self.traffic_verify),
1363 port_list = self.generate_port_list(num_subscribers, num_channels),
1364 negative_subscriber_auth = 'half')
1365 assert_equal(test_status, True)
1366 df.callback(0)
1367 reactor.callLater(0, sub_auth_no_cert, df)
1368 return df
1369
1370 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1371 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1372 num_subscribers = 1
1373 num_channels = 1
1374 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1375 num_channels = num_channels,
1376 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1377 self.igmp_verify, self.traffic_verify),
1378 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1379 assert_equal(test_status, True)
1380
1381 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1382 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1383 num_subscribers = 1
1384 num_channels = 1
1385 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1386 num_channels = num_channels,
1387 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1388 self.igmp_verify, self.traffic_verify),
1389 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1390 assert_equal(test_status, True)
1391
1392 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1393 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1394 num_subscribers = 1
1395 num_channels = 1
1396 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1397 num_channels = num_channels,
1398 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1399 self.igmp_verify, self.traffic_verify),
1400 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1401 assert_equal(test_status, True)
1402
1403 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1404 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1405 num_subscribers = 1
1406 num_channels = 1
1407 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1408 num_channels = num_channels,
1409 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1410 self.igmp_verify, self.traffic_verify),
1411 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1412 assert_equal(test_status, True)
1413
1414
1415 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1416 ### """Test subscriber auth , DHCP starvation and join channel"""
1417 num_subscribers = 1
1418 num_channels = 1
1419 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1420 num_channels = num_channels,
1421 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1422 self.igmp_verify, self.traffic_verify),
1423 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1424 assert_equal(test_status, True)
1425
1426 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1427 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1428 num_subscribers = 1
1429 num_channels = 1
1430 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1431 num_channels = num_channels,
1432 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1433 self.igmp_verify, self.traffic_verify),
1434 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1435 assert_equal(test_status, True)
1436
1437 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1438 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1439 num_subscribers = 1
1440 num_channels = 1
1441 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1442 num_channels = num_channels,
1443 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1444 self.igmp_verify, self.traffic_verify),
1445 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1446 assert_equal(test_status, True)
1447
1448 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1449 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1450 num_subscribers = 1
1451 num_channels = 1
1452 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1453 num_channels = num_channels,
1454 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1455 self.igmp_verify, self.traffic_verify),
1456 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1457 assert_equal(test_status, True)
1458
1459 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1460 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1461 num_subscribers = 1
1462 num_channels = 1
1463 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1464 num_channels = num_channels,
1465 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1466 self.igmp_verify, self.traffic_verify),
1467 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1468 assert_equal(test_status, True)
1469
1470 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1471 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1472 num_subscribers = 1
1473 num_channels = 1
1474 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1475 num_channels = num_channels,
1476 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1477 self.igmp_verify, self.traffic_verify),
1478 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1479 assert_equal(test_status, True)
1480
1481
1482 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1483 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1484 num_subscribers = 1
1485 num_channels = 1
1486 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1487 num_channels = num_channels,
1488 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1489 self.igmp_verify, self.traffic_verify),
1490 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1491 assert_equal(test_status, True)
1492
1493 #@deferred(SUBSCRIBER_TIMEOUT)
1494 @nottest
1495 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1496 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1497 num_subscribers = 1000
1498 num_channels = 1
1499 df = defer.Deferred()
1500 def sub_auth_invalid_cert(df):
1501 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1502 num_channels = num_channels,
1503 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1504 self.igmp_verify, self.traffic_verify),
1505 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1506 assert_equal(test_status, True)
1507 df.callback(0)
1508 reactor.callLater(0, sub_auth_invalid_cert, df)
1509 return df
1510
1511 @nottest
1512 @deferred(SUBSCRIBER_TIMEOUT)
1513 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1514 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1515 num_subscribers = 1000
1516 num_channels = 1
1517 df = defer.Deferred()
1518 def sub_auth_no_cert(df):
1519 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1520 num_channels = num_channels,
1521 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1522 port_list = self.generate_port_list(num_subscribers, num_channels),
1523 negative_subscriber_auth = 'half')
1524 assert_equal(test_status, True)
1525 df.callback(0)
1526 reactor.callLater(0, sub_auth_no_cert, df)
1527 return df
1528
1529 #@deferred(SUBSCRIBER_TIMEOUT)
1530 @nottest
1531 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1532 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1533 num_subscribers = 1000
1534 num_channels = 1
1535 df = defer.Deferred()
1536 def sub_auth_no_cert(df):
1537 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1538 num_channels = num_channels,
1539 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1540 port_list = self.generate_port_list(num_subscribers, num_channels),
1541 negative_subscriber_auth = 'half')
1542 assert_equal(test_status, True)
1543 df.callback(0)
1544 reactor.callLater(0, sub_auth_no_cert, df)
1545 return df
1546
1547 #@deferred(SUBSCRIBER_TIMEOUT)
1548 @nottest
1549 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1550 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1551 num_subscribers = 5000
1552 num_channels = 1
1553 df = defer.Deferred()
1554 def sub_auth_invalid_cert(df):
1555 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1556 num_channels = num_channels,
1557 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1558 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1559 assert_equal(test_status, True)
1560 df.callback(0)
1561 reactor.callLater(0, sub_auth_invalid_cert, df)
1562 return df
1563
1564 #@deferred(SUBSCRIBER_TIMEOUT)
1565 @nottest
1566 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1567 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1568 num_subscribers = 5000
1569 num_channels = 1
1570 df = defer.Deferred()
1571 def sub_auth_no_cert(df):
1572 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1573 num_channels = num_channels,
1574 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1575 port_list = self.generate_port_list(num_subscribers, num_channels),
1576 negative_subscriber_auth = 'half')
1577 assert_equal(test_status, True)
1578 df.callback(0)
1579 reactor.callLater(0, sub_auth_no_cert, df)
1580 return df
1581
1582 #@deferred(SUBSCRIBER_TIMEOUT)
1583 @nottest
1584 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1585 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1586 num_subscribers = 5000
1587 num_channels = 1
1588 df = defer.Deferred()
1589 def sub_auth_no_cert(df):
1590 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1591 num_channels = num_channels,
1592 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1593 port_list = self.generate_port_list(num_subscribers, num_channels),
1594 negative_subscriber_auth = 'half')
1595 assert_equal(test_status, True)
1596 df.callback(0)
1597 reactor.callLater(0, sub_auth_no_cert, df)
1598 return df
1599
1600 #@deferred(SUBSCRIBER_TIMEOUT)
1601 @nottest
1602 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1603 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1604 num_subscribers = 10000
1605 num_channels = 1
1606 df = defer.Deferred()
1607 def sub_auth_invalid_cert(df):
1608 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1609 num_channels = num_channels,
1610 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1611 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1612 assert_equal(test_status, True)
1613 df.callback(0)
1614 reactor.callLater(0, sub_auth_invalid_cert, df)
1615 return df
1616
1617 #@deferred(SUBSCRIBER_TIMEOUT)
1618 @nottest
1619 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1620 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1621 num_subscribers = 10000
1622 num_channels = 1
1623 df = defer.Deferred()
1624 def sub_auth_no_cert(df):
1625 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1626 num_channels = num_channels,
1627 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1628 port_list = self.generate_port_list(num_subscribers, num_channels),
1629 negative_subscriber_auth = 'onethird')
1630 assert_equal(test_status, True)
1631 df.callback(0)
1632 reactor.callLater(0, sub_auth_no_cert, df)
1633 return df
1634
1635 #@deferred(SUBSCRIBER_TIMEOUT)
1636 @nottest
1637 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1638 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1639 num_subscribers = 10000
1640 num_channels = 1
1641 df = defer.Deferred()
1642 def sub_auth_no_cert(df):
1643 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1644 num_channels = num_channels,
1645 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1646 port_list = self.generate_port_list(num_subscribers, num_channels),
1647 negative_subscriber_auth = 'onethird')
1648 assert_equal(test_status, False)
1649 assert_equal(test_status, True)
1650 df.callback(0)
1651 reactor.callLater(0, sub_auth_no_cert, df)
1652 return df
1653
1654 @nottest
1655 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1656 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1657 num_subscribers = 1000
1658 num_channels = 1
1659 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1660 num_channels = num_channels,
1661 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1662 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1663 assert_equal(test_status, True)
1664
1665 @nottest
1666 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1667 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1668 num_subscribers = 1000
1669 num_channels = 1
1670 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1671 num_channels = num_channels,
1672 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1673 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1674 assert_equal(test_status, True)
1675
1676 @nottest
1677 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1678 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1679 num_subscribers = 1000
1680 num_channels = 1
1681 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1682 num_channels = num_channels,
1683 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1684 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1685 assert_equal(test_status, True)
1686
1687 @nottest
1688 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1689 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1690 num_subscribers = 1000
1691 num_channels = 1
1692 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1693 num_channels = num_channels,
1694 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1695 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1696 assert_equal(test_status, True)
1697
1698 @nottest
1699 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1700 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1701 num_subscribers = 1000
1702 num_channels = 1
1703 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1704 num_channels = num_channels,
1705 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1706 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1707 assert_equal(test_status, True)
1708
1709 @nottest
1710 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1711 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1712 num_subscribers = 1000
1713 num_channels = 1
1714 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1715 num_channels = num_channels,
1716 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1717 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1718 assert_equal(test_status, True)
1719
1720 @nottest
1721 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1722 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1723 num_subscribers = 1000
1724 num_channels = 1
1725 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1726 num_channels = num_channels,
1727 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1728 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1729 assert_equal(test_status, True)
1730
1731 def test_4_cord_subscribers_join_recv_5channel(self):
1732 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1733 num_subscribers = 4
1734 num_channels = 5
1735 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1736 num_channels = num_channels,
1737 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1738 port_list = self.generate_port_list(num_subscribers, num_channels),
1739 negative_subscriber_auth = 'all')
1740 assert_equal(test_status, True)
1741
1742 def test_4_cord_subscribers_join_jump_5channel(self):
1743 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1744 num_subscribers = 4
1745 num_channels = 5
1746 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1747 num_channels = num_channels,
1748 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1749 port_list = self.generate_port_list(num_subscribers, num_channels),
1750 negative_subscriber_auth = 'all')
1751 assert_equal(test_status, True)
1752
1753 def test_4_cord_subscribers_join_next_5channel(self):
1754 ###"""Test 4 subscribers join next for 5 channels"""
1755 num_subscribers = 4
1756 num_channels = 5
1757 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1758 num_channels = num_channels,
1759 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1760 port_list = self.generate_port_list(num_subscribers, num_channels),
1761 negative_subscriber_auth = 'all')
1762 assert_equal(test_status, True)
1763
1764 def test_10_cord_subscribers_join_recv_5channel(self):
1765 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1766 num_subscribers = 10
1767 num_channels = 5
1768 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1769 num_channels = num_channels,
1770 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1771 port_list = self.generate_port_list(num_subscribers, num_channels),
1772 negative_subscriber_auth = 'all')
1773 assert_equal(test_status, True)
1774
1775 def test_10_cord_subscribers_join_jump_5channel(self):
1776 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1777 num_subscribers = 10
1778 num_channels = 5
1779 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1780 num_channels = num_channels,
1781 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1782 port_list = self.generate_port_list(num_subscribers, num_channels),
1783 negative_subscriber_auth = 'all')
1784 assert_equal(test_status, True)
1785
1786
1787 def test_10_cord_subscribers_join_next_5channel(self):
1788 ###"""Test 10 subscribers join next for 5 channels"""
1789 num_subscribers = 10
1790 num_channels = 5
1791 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1792 num_channels = num_channels,
1793 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1794 port_list = self.generate_port_list(num_subscribers, num_channels),
1795 negative_subscriber_auth = 'all')
1796 assert_equal(test_status, True)
1797
1798
1799
1800 def test_cord_subscriber_join_recv_100channels(self):
1801 num_subscribers = 1
1802 num_channels = 100
1803 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1804 num_channels = num_channels,
1805 cbs = (self.tls_verify, self.dhcp_verify,
1806 self.igmp_verify, self.traffic_verify),
1807 port_list = self.generate_port_list(num_subscribers, num_channels),
1808 negative_subscriber_auth = 'all')
1809 assert_equal(test_status, True)
1810
1811 def test_cord_subscriber_join_recv_400channels(self):
1812 num_subscribers = 1
1813 num_channels = 400
1814 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1815 num_channels = num_channels,
1816 cbs = (self.tls_verify, self.dhcp_verify,
1817 self.igmp_verify, self.traffic_verify),
1818 port_list = self.generate_port_list(num_subscribers, num_channels),
1819 negative_subscriber_auth = 'all')
1820 assert_equal(test_status, True)
1821
1822 def test_cord_subscriber_join_recv_800channels(self):
1823 num_subscribers = 1
1824 num_channels = 800
1825 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1826 num_channels = num_channels,
1827 cbs = (self.tls_verify, self.dhcp_verify,
1828 self.igmp_verify, self.traffic_verify),
1829 port_list = self.generate_port_list(num_subscribers, num_channels),
1830 negative_subscriber_auth = 'all')
1831 assert_equal(test_status, True)
1832
1833 def test_cord_subscriber_join_recv_1200channels(self):
1834 num_subscribers = 1
1835 num_channels = 1200
1836 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1837 num_channels = num_channels,
1838 cbs = (self.tls_verify, self.dhcp_verify,
1839 self.igmp_verify, self.traffic_verify),
1840 port_list = self.generate_port_list(num_subscribers, num_channels),
1841 negative_subscriber_auth = 'all')
1842 assert_equal(test_status, True)
1843
1844 def test_cord_subscriber_join_recv_1500channels(self):
1845 num_subscribers = 1
1846 num_channels = 1500
1847 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1848 num_channels = num_channels,
1849 cbs = (self.tls_verify, self.dhcp_verify,
1850 self.igmp_verify, self.traffic_verify),
1851 port_list = self.generate_port_list(num_subscribers, num_channels),
1852 negative_subscriber_auth = 'all')
1853 assert_equal(test_status, True)
1854
1855 def test_cord_subscriber_join_jump_100channels(self):
1856 num_subscribers = 1
1857 num_channels = 100
1858 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1859 num_channels = num_channels,
1860 cbs = (self.tls_verify, self.dhcp_jump_verify,
1861 self.igmp_jump_verify, self.traffic_verify),
1862 port_list = self.generate_port_list(num_subscribers, num_channels),
1863 negative_subscriber_auth = 'all')
1864 assert_equal(test_status, True)
1865 def test_cord_subscriber_join_jump_400channels(self):
1866 num_subscribers = 1
1867 num_channels = 400
1868 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1869 num_channels = num_channels,
1870 cbs = (self.tls_verify, self.dhcp_jump_verify,
1871 self.igmp_jump_verify, self.traffic_verify),
1872 port_list = self.generate_port_list(num_subscribers, num_channels),
1873 negative_subscriber_auth = 'all')
1874 assert_equal(test_status, True)
1875
1876 def test_cord_subscriber_join_jump_800channels(self):
1877 num_subscribers = 1
1878 num_channels = 800
1879 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1880 num_channels = num_channels,
1881 cbs = (self.tls_verify, self.dhcp_jump_verify,
1882 self.igmp_jump_verify, self.traffic_verify),
1883 port_list = self.generate_port_list(num_subscribers, num_channels),
1884 negative_subscriber_auth = 'all')
1885 assert_equal(test_status, True)
1886 def test_cord_subscriber_join_jump_1200channel(sself):
1887 num_subscribers = 1
1888 num_channels = 1200
1889 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1890 num_channels = num_channels,
1891 cbs = (self.tls_verify, self.dhcp_jump_verify,
1892 self.igmp_jump_verify, self.traffic_verify),
1893 port_list = self.generate_port_list(num_subscribers, num_channels),
1894 negative_subscriber_auth = 'all')
1895 assert_equal(test_status, True)
1896 def test_cord_subscriber_join_jump_1500channels(self):
1897 num_subscribers = 1
1898 num_channels = 1500
1899 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1900 num_channels = num_channels,
1901 cbs = (self.tls_verify, self.dhcp_jump_verify,
1902 self.igmp_jump_verify, self.traffic_verify),
1903 port_list = self.generate_port_list(num_subscribers, num_channels),
1904 negative_subscriber_auth = 'all')
1905 assert_equal(test_status, True)
1906
1907 def test_cord_subscriber_join_next_100channels(self):
1908 num_subscribers = 1
1909 num_channels = 100
1910 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1911 num_channels = num_channels,
1912 cbs = (self.tls_verify, self.dhcp_next_verify,
1913 self.igmp_next_verify, self.traffic_verify),
1914 port_list = self.generate_port_list(num_subscribers, num_channels),
1915 negative_subscriber_auth = 'all')
1916 assert_equal(test_status, True)
1917
1918 def test_cord_subscriber_join_next_400channels(self):
1919 num_subscribers = 1
1920 num_channels = 400
1921 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1922 num_channels = num_channels,
1923 cbs = (self.tls_verify, self.dhcp_next_verify,
1924 self.igmp_next_verify, self.traffic_verify),
1925 port_list = self.generate_port_list(num_subscribers, num_channels),
1926 negative_subscriber_auth = 'all')
1927 assert_equal(test_status, True)
1928
1929 def test_cord_subscriber_join_next_800channels(self):
1930 num_subscribers = 1
1931 num_channels = 800
1932 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1933 num_channels = num_channels,
1934 cbs = (self.tls_verify, self.dhcp_next_verify,
1935 self.igmp_next_verify, self.traffic_verify),
1936 port_list = self.generate_port_list(num_subscribers, num_channels),
1937 negative_subscriber_auth = 'all')
1938 assert_equal(test_status, True)
1939
1940
1941 def test_cord_subscriber_join_next_1200channels(self):
1942 num_subscribers = 1
1943 num_channels = 1200
1944 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1945 num_channels = num_channels,
1946 cbs = (self.tls_verify, self.dhcp_next_verify,
1947 self.igmp_next_verify, self.traffic_verify),
1948 port_list = self.generate_port_list(num_subscribers, num_channels),
1949 negative_subscriber_auth = 'all')
1950 assert_equal(test_status, True)
1951
1952 def test_cord_subscriber_join_next_1500channels(self):
1953 num_subscribers = 1
1954 num_channels = 1500
1955 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1956 num_channels = num_channels,
1957 cbs = (self.tls_verify, self.dhcp_next_verify,
1958 self.igmp_next_verify, self.traffic_verify),
1959 port_list = self.generate_port_list(num_subscribers, num_channels),
1960 negative_subscriber_auth = 'all')
1961 assert_equal(test_status, True)
1962
1963 @nottest
1964 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1965 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1966 num_subscribers = 1000
1967 num_channels = 1
1968 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1969 num_channels = num_channels,
1970 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
1971 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1972 assert_equal(test_status, True)
1973
1974 @nottest
1975 def test_1k_cord_subscribers_join_recv_100channel(self):
1976 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
1977 num_subscribers = 1000
1978 num_channels = 100
1979 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1980 num_channels = num_channels,
1981 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1982 port_list = self.generate_port_list(num_subscribers, num_channels),
1983 negative_subscriber_auth = 'all')
1984 assert_equal(test_status, True)
1985
1986 @nottest
1987 def test_1k_cord_subscribers_join_jump_100channel(self):
1988 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
1989 num_subscribers = 1000
1990 num_channels = 100
1991 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1992 num_channels = num_channels,
1993 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1994 port_list = self.generate_port_list(num_subscribers, num_channels),
1995 negative_subscriber_auth = 'all')
1996 assert_equal(test_status, True)
1997
1998 @nottest
1999 def test_1k_cord_subscribers_join_next_100channel(self):
2000 ###"""Test 1k subscribers join next for 100 channels"""
2001 num_subscribers = 1000
2002 num_channels = 100
2003 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2004 num_channels = num_channels,
2005 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2006 port_list = self.generate_port_list(num_subscribers, num_channels),
2007 negative_subscriber_auth = 'all')
2008 assert_equal(test_status, True)
2009
2010 @nottest
2011 def test_1k_cord_subscribers_join_recv_400channel(self):
2012 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
2013 num_subscribers = 1000
2014 num_channels = 400
2015 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2016 num_channels = num_channels,
2017 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2018 port_list = self.generate_port_list(num_subscribers, num_channels),
2019 negative_subscriber_auth = 'all')
2020 assert_equal(test_status, True)
2021
2022 @nottest
2023 def test_1k_cord_subscribers_join_jump_400channel(self):
2024 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
2025 num_subscribers = 1000
2026 num_channels = 400
2027 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2028 num_channels = num_channels,
2029 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2030 port_list = self.generate_port_list(num_subscribers, num_channels),
2031 negative_subscriber_auth = 'all')
2032 assert_equal(test_status, True)
2033
2034 @nottest
2035 def test_1k_cord_subscribers_join_next_400channel(self):
2036 ###"""Test 1k subscribers join next for 400 channels"""
2037 num_subscribers = 1000
2038 num_channels = 400
2039 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2040 num_channels = num_channels,
2041 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2042 port_list = self.generate_port_list(num_subscribers, num_channels),
2043 negative_subscriber_auth = 'all')
2044 assert_equal(test_status, True)
2045
2046 @nottest
2047 def test_1k_cord_subscribers_join_recv_800channel(self):
2048 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2049 num_subscribers = 1000
2050 num_channels = 800
2051 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2052 num_channels = num_channels,
2053 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2054 port_list = self.generate_port_list(num_subscribers, num_channels),
2055 negative_subscriber_auth = 'all')
2056 assert_equal(test_status, True)
2057
2058 @nottest
2059 def test_1k_cord_subscribers_join_jump_800channel(self):
2060 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2061 num_subscribers = 1000
2062 num_channels = 800
2063 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2064 num_channels = num_channels,
2065 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2066 port_list = self.generate_port_list(num_subscribers, num_channels),
2067 negative_subscriber_auth = 'all')
2068 assert_equal(test_status, True)
2069
2070 @nottest
2071 def test_1k_cord_subscribers_join_next_800channel(self):
2072 ###"""Test 1k subscribers join next for 800 channels"""
2073 num_subscribers = 1000
2074 num_channels = 800
2075 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2076 num_channels = num_channels,
2077 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2078 port_list = self.generate_port_list(num_subscribers, num_channels),
2079 negative_subscriber_auth = 'all')
2080 assert_equal(test_status, True)
2081
2082 @nottest
2083 def test_1k_cord_subscribers_join_recv_1200channel(self):
2084 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2085 num_subscribers = 1000
2086 num_channels = 1200
2087 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2088 num_channels = num_channels,
2089 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2090 port_list = self.generate_port_list(num_subscribers, num_channels),
2091 negative_subscriber_auth = 'all')
2092 assert_equal(test_status, True)
2093
2094 @nottest
2095 def test_1k_cord_subscribers_join_jump_1200channel(self):
2096 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2097 num_subscribers = 1000
2098 num_channels = 1200
2099 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2100 num_channels = num_channels,
2101 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2102 port_list = self.generate_port_list(num_subscribers, num_channels),
2103 negative_subscriber_auth = 'all')
2104 assert_equal(test_status, True)
2105
2106 @nottest
2107 def test_1k_cord_subscribers_join_next_1200channel(self):
2108 ###"""Test 1k subscribers join next for 1200 channels"""
2109 num_subscribers = 1000
2110 num_channels = 1200
2111 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2112 num_channels = num_channels,
2113 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2114 port_list = self.generate_port_list(num_subscribers, num_channels),
2115 negative_subscriber_auth = 'all')
2116 assert_equal(test_status, True)
2117
2118 @nottest
2119 def test_1k_cord_subscribers_join_recv_1500channel(self):
2120 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2121 num_subscribers = 1000
2122 num_channels = 1500
2123 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2124 num_channels = num_channels,
2125 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2126 port_list = self.generate_port_list(num_subscribers, num_channels),
2127 negative_subscriber_auth = 'all')
2128 assert_equal(test_status, True)
2129
2130 @nottest
2131 def test_1k_cord_subscribers_join_jump_1500channel(self):
2132 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2133 num_subscribers = 1000
2134 num_channels = 1500
2135 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2136 num_channels = num_channels,
2137 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2138 port_list = self.generate_port_list(num_subscribers, num_channels),
2139 negative_subscriber_auth = 'all')
2140 assert_equal(test_status, True)
2141
2142 @nottest
2143 def test_1k_cord_subscribers_join_next_1500channel(self):
2144 ###"""Test 1k subscribers join next for 1500 channels"""
2145 num_subscribers = 1000
2146 num_channels = 1500
2147 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2148 num_channels = num_channels,
2149 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2150 port_list = self.generate_port_list(num_subscribers, num_channels),
2151 negative_subscriber_auth = 'all')
2152 assert_equal(test_status, True)
2153
2154 @nottest
2155 def test_5k_cord_subscribers_join_recv_100channel(self):
2156 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2157 num_subscribers = 5000
2158 num_channels = 100
2159 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2160 num_channels = num_channels,
2161 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2162 port_list = self.generate_port_list(num_subscribers, num_channels),
2163 negative_subscriber_auth = 'all')
2164 assert_equal(test_status, True)
2165
2166 @nottest
2167 def test_5k_cord_subscribers_join_jump_100channel(self):
2168 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2169 num_subscribers = 5000
2170 num_channels = 100
2171 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2172 num_channels = num_channels,
2173 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2174 port_list = self.generate_port_list(num_subscribers, num_channels),
2175 negative_subscriber_auth = 'all')
2176 assert_equal(test_status, True)
2177
2178 @nottest
2179 def test_5k_cord_subscribers_join_next_100channel(self):
2180 ###"""Test 5k subscribers join next for 100 channels"""
2181 num_subscribers = 5000
2182 num_channels = 100
2183 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2184 num_channels = num_channels,
2185 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2186 port_list = self.generate_port_list(num_subscribers, num_channels),
2187 negative_subscriber_auth = 'all')
2188 assert_equal(test_status, True)
2189
2190 @nottest
2191 def test_5k_cord_subscribers_join_recv_400channel(self):
2192 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2193 num_subscribers = 5000
2194 num_channels = 400
2195 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2196 num_channels = num_channels,
2197 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2198 port_list = self.generate_port_list(num_subscribers, num_channels),
2199 negative_subscriber_auth = 'all')
2200 assert_equal(test_status, True)
2201
2202 @nottest
2203 def test_5k_cord_subscribers_join_jump_400channel(self):
2204 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2205 num_subscribers = 5000
2206 num_channels = 400
2207 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2208 num_channels = num_channels,
2209 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2210 port_list = self.generate_port_list(num_subscribers, num_channels),
2211 negative_subscriber_auth = 'all')
2212 assert_equal(test_status, True)
2213
2214 @nottest
2215 def test_5k_cord_subscribers_join_next_400channel(self):
2216 ###"""Test 5k subscribers join next for 400 channels"""
2217 num_subscribers = 5000
2218 num_channels = 400
2219 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2220 num_channels = num_channels,
2221 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2222 port_list = self.generate_port_list(num_subscribers, num_channels),
2223 negative_subscriber_auth = 'all')
2224 assert_equal(test_status, True)
2225
2226 @nottest
2227 def test_5k_cord_subscribers_join_recv_800channel(self):
2228 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2229 num_subscribers = 5000
2230 num_channels = 800
2231 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2232 num_channels = num_channels,
2233 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2234 port_list = self.generate_port_list(num_subscribers, num_channels),
2235 negative_subscriber_auth = 'all')
2236 assert_equal(test_status, True)
2237
2238 @nottest
2239 def test_5k_cord_subscribers_join_jump_800channel(self):
2240 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2241 num_subscribers = 5000
2242 num_channels = 800
2243 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2244 num_channels = num_channels,
2245 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2246 port_list = self.generate_port_list(num_subscribers, num_channels),
2247 negative_subscriber_auth = 'all')
2248 assert_equal(test_status, True)
2249
2250 @nottest
2251 def test_5k_cord_subscribers_join_next_800channel(self):
2252 ###"""Test 5k subscribers join next for 800 channels"""
2253 num_subscribers = 5000
2254 num_channels = 800
2255 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2256 num_channels = num_channels,
2257 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2258 port_list = self.generate_port_list(num_subscribers, num_channels),
2259 negative_subscriber_auth = 'all')
2260 assert_equal(test_status, True)
2261
2262 @nottest
2263 def test_5k_cord_subscribers_join_recv_1200channel(self):
2264 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2265 num_subscribers = 5000
2266 num_channels = 1200
2267 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2268 num_channels = num_channels,
2269 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2270 port_list = self.generate_port_list(num_subscribers, num_channels),
2271 negative_subscriber_auth = 'all')
2272 assert_equal(test_status, True)
2273
2274 @nottest
2275 def test_5k_cord_subscribers_join_jump_1200channel(self):
2276 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2277 num_subscribers = 5000
2278 num_channels = 1200
2279 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2280 num_channels = num_channels,
2281 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2282 port_list = self.generate_port_list(num_subscribers, num_channels),
2283 negative_subscriber_auth = 'all')
2284 assert_equal(test_status, True)
2285
2286 @nottest
2287 def test_5k_cord_subscribers_join_next_1200channel(self):
2288 ###"""Test 5k subscribers join next for 1200 channels"""
2289 num_subscribers = 5000
2290 num_channels = 1200
2291 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2292 num_channels = num_channels,
2293 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2294 port_list = self.generate_port_list(num_subscribers, num_channels),
2295 negative_subscriber_auth = 'all')
2296 assert_equal(test_status, True)
2297
2298 @nottest
2299 def test_5k_cord_subscribers_join_recv_1500channel(self):
2300 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2301 num_subscribers = 5000
2302 num_channels = 1500
2303 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2304 num_channels = num_channels,
2305 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2306 port_list = self.generate_port_list(num_subscribers, num_channels),
2307 negative_subscriber_auth = 'all')
2308 assert_equal(test_status, True)
2309
2310 @nottest
2311 def test_5k_cord_subscribers_join_jump_1500channel(self):
2312 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2313 num_subscribers = 5000
2314 num_channels = 1500
2315 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2316 num_channels = num_channels,
2317 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2318 port_list = self.generate_port_list(num_subscribers, num_channels),
2319 negative_subscriber_auth = 'all')
2320 assert_equal(test_status, True)
2321
2322 @nottest
2323 def test_5k_cord_subscribers_join_next_1500channel(self):
2324 ###"""Test 5k subscribers join next for 1500 channels"""
2325 num_subscribers = 5000
2326 num_channels = 1500
2327 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2328 num_channels = num_channels,
2329 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2330 port_list = self.generate_port_list(num_subscribers, num_channels),
2331 negative_subscriber_auth = 'all')
2332 assert_equal(test_status, True)
2333
2334 @nottest
2335 def test_10k_cord_subscribers_join_recv_100channel(self):
2336 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2337 num_subscribers = 10000
2338 num_channels = 100
2339 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2340 num_channels = num_channels,
2341 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2342 port_list = self.generate_port_list(num_subscribers, num_channels),
2343 negative_subscriber_auth = 'all')
2344 assert_equal(test_status, True)
2345
2346 @nottest
2347 def test_10k_cord_subscribers_join_jump_100channel(self):
2348 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2349 num_subscribers = 10000
2350 num_channels = 100
2351 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2352 num_channels = num_channels,
2353 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2354 port_list = self.generate_port_list(num_subscribers, num_channels),
2355 negative_subscriber_auth = 'all')
2356 assert_equal(test_status, True)
2357
2358 @nottest
2359 def test_10k_cord_subscribers_join_next_100channel(self):
2360 ###"""Test 10k subscribers join next for 100 channels"""
2361 num_subscribers = 10000
2362 num_channels = 100
2363 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2364 num_channels = num_channels,
2365 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2366 port_list = self.generate_port_list(num_subscribers, num_channels),
2367 negative_subscriber_auth = 'all')
2368 assert_equal(test_status, True)
2369
2370 @nottest
2371 def test_100k_cord_subscribers_join_recv_100channel(self):
2372 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2373 num_subscribers = 100000
2374 num_channels = 100
2375 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2376 num_channels = num_channels,
2377 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2378 port_list = self.generate_port_list(num_subscribers, num_channels),
2379 negative_subscriber_auth = 'all')
2380 assert_equal(test_status, True)
2381
2382 @nottest
2383 def test_100k_cord_subscribers_join_jump_100channel(self):
2384 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2385 num_subscribers = 100000
2386 num_channels = 100
2387 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2388 num_channels = num_channels,
2389 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2390 port_list = self.generate_port_list(num_subscribers, num_channels),
2391 negative_subscriber_auth = 'all')
2392 assert_equal(test_status, True)
2393
2394 @nottest
2395 def test_100k_cord_subscribers_join_next_100channel(self):
2396 ###"""Test 100k subscribers join next for 100 channels"""
2397 num_subscribers = 100000
2398 num_channels = 100
2399 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2400 num_channels = num_channels,
2401 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2402 port_list = self.generate_port_list(num_subscribers, num_channels),
2403 negative_subscriber_auth = 'all')
2404 assert_equal(test_status, True)
2405
2406 @nottest
2407 def test_10k_cord_subscribers_join_recv_400channel(self):
2408 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2409 num_subscribers = 10000
2410 num_channels = 400
2411 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2412 num_channels = num_channels,
2413 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2414 port_list = self.generate_port_list(num_subscribers, num_channels),
2415 negative_subscriber_auth = 'all')
2416 assert_equal(test_status, True)
2417
2418 @nottest
2419 def test_10k_cord_subscribers_join_jump_400channel(self):
2420 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2421 num_subscribers = 10000
2422 num_channels = 400
2423 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2424 num_channels = num_channels,
2425 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2426 port_list = self.generate_port_list(num_subscribers, num_channels),
2427 negative_subscriber_auth = 'all')
2428 assert_equal(test_status, True)
2429
2430 @nottest
2431 def test_10k_cord_subscribers_join_next_400channel(self):
2432 ###"""Test 10k subscribers join next for 400 channels"""
2433 num_subscribers = 10000
2434 num_channels = 400
2435 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2436 num_channels = num_channels,
2437 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2438 port_list = self.generate_port_list(num_subscribers, num_channels),
2439 negative_subscriber_auth = 'all')
2440 assert_equal(test_status, True)
2441
2442 @nottest
2443 def test_10k_cord_subscribers_join_recv_800channel(self):
2444 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2445 num_subscribers = 10000
2446 num_channels = 800
2447 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2448 num_channels = num_channels,
2449 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2450 port_list = self.generate_port_list(num_subscribers, num_channels),
2451 negative_subscriber_auth = 'all')
2452 assert_equal(test_status, True)
2453
2454 @nottest
2455 def test_10k_cord_subscribers_join_jump_800channel(self):
2456 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2457 num_subscribers = 10000
2458 num_channels = 800
2459 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2460 num_channels = num_channels,
2461 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2462 port_list = self.generate_port_list(num_subscribers, num_channels),
2463 negative_subscriber_auth = 'all')
2464 assert_equal(test_status, True)
2465
2466 @nottest
2467 def test_10k_cord_subscribers_join_next_800channel(self):
2468 ###"""Test 10k subscribers join next for 800 channels"""
2469 num_subscribers = 10000
2470 num_channels = 800
2471 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2472 num_channels = num_channels,
2473 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2474 port_list = self.generate_port_list(num_subscribers, num_channels),
2475 negative_subscriber_auth = 'all')
2476 assert_equal(test_status, True)
2477
2478 @nottest
2479 def test_10k_cord_subscribers_join_recv_1200channel(self):
2480 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2481 num_subscribers = 10000
2482 num_channels = 1200
2483 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2484 num_channels = num_channels,
2485 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2486 port_list = self.generate_port_list(num_subscribers, num_channels),
2487 negative_subscriber_auth = 'all')
2488 assert_equal(test_status, True)
2489
2490 @nottest
2491 def test_10k_cord_subscribers_join_jump_1200channel(self):
2492 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2493 num_subscribers = 10000
2494 num_channels = 1200
2495 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2496 num_channels = num_channels,
2497 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2498 port_list = self.generate_port_list(num_subscribers, num_channels),
2499 negative_subscriber_auth = 'all')
2500 assert_equal(test_status, True)
2501
2502 @nottest
2503 def test_10k_cord_subscribers_join_next_1200channel(self):
2504 ###"""Test 10k subscribers join next for 1200 channels"""
2505 num_subscribers = 10000
2506 num_channels = 1200
2507 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2508 num_channels = num_channels,
2509 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2510 port_list = self.generate_port_list(num_subscribers, num_channels),
2511 negative_subscriber_auth = 'all')
2512 assert_equal(test_status, True)
2513
2514 @nottest
2515 def test_10k_cord_subscribers_join_recv_1500channel(self):
2516 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2517 num_subscribers = 10000
2518 num_channels = 1500
2519 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2520 num_channels = num_channels,
2521 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2522 port_list = self.generate_port_list(num_subscribers, num_channels),
2523 negative_subscriber_auth = 'all')
2524 assert_equal(test_status, True)
2525
2526 @nottest
2527 def test_10k_cord_subscribers_join_jump_1500channel(self):
2528 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2529 num_subscribers = 10000
2530 num_channels = 1500
2531 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2532 num_channels = num_channels,
2533 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2534 port_list = self.generate_port_list(num_subscribers, num_channels),
2535 negative_subscriber_auth = 'all')
2536 assert_equal(test_status, True)
2537
2538 @nottest
2539 def test_10k_cord_subscribers_join_next_1500channel(self):
2540 ###"""Test 10k subscribers join next for 1500 channels"""
2541 num_subscribers = 10000
2542 num_channels = 1500
2543 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2544 num_channels = num_channels,
2545 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2546 port_list = self.generate_port_list(num_subscribers, num_channels),
2547 negative_subscriber_auth = 'all')
2548 assert_equal(test_status, True)
2549
2550 @nottest
2551 def test_100k_cord_subscribers_join_recv_1500channel(self):
2552 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2553 num_subscribers = 100000
2554 num_channels = 1500
2555 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2556 num_channels = num_channels,
2557 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2558 port_list = self.generate_port_list(num_subscribers, num_channels),
2559 negative_subscriber_auth = 'all')
2560 assert_equal(test_status, True)
2561
2562 @nottest
2563 def test_100k_cord_subscribers_join_jump_1500channel(self):
2564 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2565 num_subscribers = 100000
2566 num_channels = 1500
2567 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2568 num_channels = num_channels,
2569 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2570 port_list = self.generate_port_list(num_subscribers, num_channels),
2571 negative_subscriber_auth = 'all')
2572 assert_equal(test_status, True)
2573
2574 @nottest
2575 def test_100k_cord_subscribers_join_next_1500channel(self):
2576 ###"""Test 10k subscribers join next for 1500 channels"""
2577 num_subscribers = 100000
2578 num_channels = 1500
2579 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2580 num_channels = num_channels,
2581 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2582 port_list = self.generate_port_list(num_subscribers, num_channels),
2583 negative_subscriber_auth = 'all')
2584 assert_equal(test_status, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002585
2586
2587
A.R Karthick8a507cf2017-06-02 18:44:49 -07002588 def remove_olt(self, switch_map):
2589 controller = get_controller()
2590 auth = ('karaf', 'karaf')
2591 #remove subscriber for every port on all the voltha devices
2592 for device, device_map in switch_map.iteritems():
2593 uni_ports = device_map['ports']
2594 uplink_vlan = device_map['uplink_vlan']
2595 for port in uni_ports:
2596 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}'.format(controller,
2597 device,
2598 port)
2599 resp = requests.delete(rest_url, auth = auth)
2600 if resp.status_code not in [204, 202, 200]:
2601 log_test.error('Error deleting subscriber for device %s on port %s' %(device, port))
2602 else:
2603 log_test.info('Deleted subscriber for device %s on port %s' %(device, port))
A.R Karthick4c4d0492017-05-26 19:23:05 -07002604
2605 def config_olt(self, switch_map):
2606 controller = get_controller()
A.R Karthick4c4d0492017-05-26 19:23:05 -07002607 auth = ('karaf', 'karaf')
2608 #configure 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 vlan = port
2614 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}/{}'.format(controller,
2615 device,
2616 port,
2617 vlan)
A.R Karthick4bd5f532017-06-06 11:37:27 -07002618 requests.post(rest_url, auth = auth)
2619 #assert_equal(resp.ok, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002620
A.R Karthick56e59432017-06-06 18:05:46 -07002621 def cord_subscriber_voltha(self, services, cbs = None, num_subscribers = 1, num_channels = 1):
A.R Karthick4c4d0492017-05-26 19:23:05 -07002622 """Test subscriber join next for channel surfing"""
2623 if self.VOLTHA_HOST is None:
2624 log_test.info('Skipping test as no voltha host')
2625 return
A.R Karthick8a507cf2017-06-02 18:44:49 -07002626 switch_map = None
2627 olt_configured = False
2628 try:
A R Karthick9dc6e922017-07-12 14:40:16 -07002629 switch_map = self.voltha_switch_map
A.R Karthick8a507cf2017-06-02 18:44:49 -07002630 if not switch_map:
2631 log_test.info('No voltha devices found')
2632 return
A.R Karthick8a507cf2017-06-02 18:44:49 -07002633 log_test.info('Adding subscribers through OLT app')
2634 self.config_olt(switch_map)
2635 olt_configured = True
2636 time.sleep(5)
A.R Karthick56e59432017-06-06 18:05:46 -07002637 self.num_subscribers = num_subscribers
2638 self.num_channels = num_channels
A.R Karthick8a507cf2017-06-02 18:44:49 -07002639 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
2640 num_channels = self.num_channels,
A.R Karthick56e59432017-06-06 18:05:46 -07002641 cbs = cbs,
A.R Karthick8a507cf2017-06-02 18:44:49 -07002642 port_list = self.generate_port_list(self.num_subscribers,
2643 self.num_channels),
2644 services = services)
2645 assert_equal(test_status, True)
2646 finally:
2647 if switch_map is not None:
2648 if olt_configured is True:
2649 self.remove_olt(switch_map)
A.R Karthick56e59432017-06-06 18:05:46 -07002650
2651 def test_cord_subscriber_voltha_tls(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002652 """Test subscriber TLS authentication with voltha"""
A.R Karthick56e59432017-06-06 18:05:46 -07002653 if self.VOLTHA_HOST is None:
2654 log_test.info('Skipping test as no voltha host')
2655 return
2656 num_subscribers = 1
2657 num_channels = 1
2658 services = ('TLS',)
2659 cbs = ( self.tls_verify, )
2660 self.cord_subscriber_voltha(services, cbs = cbs,
2661 num_subscribers = num_subscribers,
2662 num_channels = num_channels)
2663
2664 def test_cord_subscriber_voltha_tls_igmp(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002665 """Test subscriber TLS and IGMP with voltha with 1 channel"""
A.R Karthick56e59432017-06-06 18:05:46 -07002666 if self.VOLTHA_HOST is None:
2667 log_test.info('Skipping test as no voltha host')
2668 return
2669 num_subscribers = 1
2670 num_channels = 1
2671 services = ('TLS','IGMP',)
2672 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2673 self.cord_subscriber_voltha(services, cbs = cbs,
2674 num_subscribers = num_subscribers,
2675 num_channels = num_channels)
A.R Karthick4f583842017-06-09 17:15:47 -07002676
2677 def test_cord_subscriber_voltha_tls_igmp_3(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002678 """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 -07002679 if self.VOLTHA_HOST is None:
2680 log_test.info('Skipping test as no voltha host')
2681 return
2682 num_subscribers = 3
2683 num_channels = 3
2684 services = ('TLS','IGMP',)
2685 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2686 self.cord_subscriber_voltha(services, cbs = cbs,
2687 num_subscribers = num_subscribers,
2688 num_channels = num_channels)