blob: f4f5df84112334d8dd5b2393c704e5bb810cf613 [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
A.R Karthick4c4d0492017-05-26 19:23:05 -070030from VolthaCtrl import VolthaCtrl
A R Karthickb7e80902016-05-17 09:38:31 -070031from DHCP import DHCPTest
32from EapTLS import TLSAuthTest
33from Channels import Channels, IgmpChannel
34from subscriberDb import SubscriberDB
35from threadPool import ThreadPool
A.R Karthick95d044e2016-06-10 18:44:36 -070036from portmaps import g_subscriber_port_map
A R Karthickb7e80902016-05-17 09:38:31 -070037from OltConfig import *
A R Karthicka013a272016-08-16 16:40:19 -070038from CordTestServer import cord_test_onos_restart, cord_test_shell
A.R Karthick4c4d0492017-05-26 19:23:05 -070039from CordTestUtils import log_test, get_controller
A R Karthick9313b762016-11-07 13:14:35 -080040from CordLogger import CordLogger
A.R Karthick4c4d0492017-05-26 19:23:05 -070041from CordTestConfig import setup_module
A R Karthickb608d402017-06-02 11:48:41 -070042from CordContainer import Onos
A R Karthickb7e80902016-05-17 09:38:31 -070043
A R Karthick76a497a2017-04-12 10:59:39 -070044log_test.setLevel('INFO')
A R Karthickb7e80902016-05-17 09:38:31 -070045
46class Subscriber(Channels):
47 PORT_TX_DEFAULT = 2
48 PORT_RX_DEFAULT = 1
49 INTF_TX_DEFAULT = 'veth2'
50 INTF_RX_DEFAULT = 'veth0'
51 STATS_RX = 0
52 STATS_TX = 1
53 STATS_JOIN = 2
54 STATS_LEAVE = 3
55 SUBSCRIBER_SERVICES = 'DHCP IGMP TLS'
A.R Karthick4c4d0492017-05-26 19:23:05 -070056
A R Karthickb7e80902016-05-17 09:38:31 -070057 def __init__(self, name = 'sub', service = SUBSCRIBER_SERVICES, port_map = None,
58 num = 1, channel_start = 0,
59 tx_port = PORT_TX_DEFAULT, rx_port = PORT_RX_DEFAULT,
60 iface = INTF_RX_DEFAULT, iface_mcast = INTF_TX_DEFAULT,
61 mcast_cb = None, loginType = 'wireless'):
62 self.tx_port = tx_port
63 self.rx_port = rx_port
64 self.port_map = port_map or g_subscriber_port_map
65 try:
66 self.tx_intf = self.port_map[tx_port]
67 self.rx_intf = self.port_map[rx_port]
68 except:
69 self.tx_intf = self.port_map[self.PORT_TX_DEFAULT]
70 self.rx_intf = self.port_map[self.PORT_RX_DEFAULT]
71
A R Karthick76a497a2017-04-12 10:59:39 -070072 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 -070073 Channels.__init__(self, num, channel_start = channel_start,
A R Karthickb7e80902016-05-17 09:38:31 -070074 iface = self.rx_intf, iface_mcast = self.tx_intf, mcast_cb = mcast_cb)
75 self.name = name
76 self.service = service
77 self.service_map = {}
78 services = self.service.strip().split(' ')
79 for s in services:
80 self.service_map[s] = True
81 self.loginType = loginType
82 ##start streaming channels
83 self.join_map = {}
84 ##accumulated join recv stats
85 self.join_rx_stats = Stats()
A R Karthick338268f2016-06-21 17:12:13 -070086 self.recv_timeout = False
A R Karthickb7e80902016-05-17 09:38:31 -070087
88 def has_service(self, service):
89 if self.service_map.has_key(service):
90 return self.service_map[service]
91 if self.service_map.has_key(service.upper()):
92 return self.service_map[service.upper()]
93 return False
94
95 def channel_join_update(self, chan, join_time):
96 self.join_map[chan] = ( Stats(), Stats(), Stats(), Stats() )
97 self.channel_update(chan, self.STATS_JOIN, 1, t = join_time)
98
99 def channel_join(self, chan = 0, delay = 2):
100 '''Join a channel and create a send/recv stats map'''
101 if self.join_map.has_key(chan):
102 del self.join_map[chan]
103 self.delay = delay
104 chan, join_time = self.join(chan)
105 self.channel_join_update(chan, join_time)
106 return chan
107
A.R Karthick517f7812017-05-18 11:22:46 -0700108 def channel_join_next(self, delay = 2, leave_flag = True):
A R Karthickb7e80902016-05-17 09:38:31 -0700109 '''Joins the next channel leaving the last channel'''
110 if self.last_chan:
111 if self.join_map.has_key(self.last_chan):
112 del self.join_map[self.last_chan]
113 self.delay = delay
A.R Karthick517f7812017-05-18 11:22:46 -0700114 chan, join_time = self.join_next(leave_flag = leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700115 self.channel_join_update(chan, join_time)
116 return chan
117
118 def channel_jump(self, delay = 2):
119 '''Jumps randomly to the next channel leaving the last channel'''
120 if self.last_chan is not None:
121 if self.join_map.has_key(self.last_chan):
122 del self.join_map[self.last_chan]
123 self.delay = delay
124 chan, join_time = self.jump()
125 self.channel_join_update(chan, join_time)
126 return chan
127
A R Karthick78d1f492017-05-19 14:24:17 -0700128 def channel_leave(self, chan = 0, force = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700129 if self.join_map.has_key(chan):
130 del self.join_map[chan]
A R Karthick78d1f492017-05-19 14:24:17 -0700131 self.leave(chan, force = force)
A R Karthickb7e80902016-05-17 09:38:31 -0700132
133 def channel_update(self, chan, stats_type, packets, t=0):
134 if type(chan) == type(0):
135 chan_list = (chan,)
136 else:
137 chan_list = chan
A.R Karthick95d044e2016-06-10 18:44:36 -0700138 for c in chan_list:
A R Karthickb7e80902016-05-17 09:38:31 -0700139 if self.join_map.has_key(c):
140 self.join_map[c][stats_type].update(packets = packets, t = t)
141
A R Karthick338268f2016-06-21 17:12:13 -0700142 def channel_receive(self, chan, cb = None, count = 1, timeout = 5):
A R Karthick76a497a2017-04-12 10:59:39 -0700143 log_test.info('Subscriber %s on port %s receiving from group %s, channel %d' %
A R Karthick338268f2016-06-21 17:12:13 -0700144 (self.name, self.rx_intf, self.gaddr(chan), chan))
145 r = self.recv(chan, cb = cb, count = count, timeout = timeout)
A R Karthicka013a272016-08-16 16:40:19 -0700146 if len(r) == 0:
A R Karthick76a497a2017-04-12 10:59:39 -0700147 log_test.info('Subscriber %s on port %s timed out' %(self.name, self.rx_intf))
A R Karthicka013a272016-08-16 16:40:19 -0700148 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700149 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 -0700150 if self.recv_timeout:
151 ##Negative test case is disabled for now
152 assert_equal(len(r), 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700153
154 def recv_channel_cb(self, pkt):
155 ##First verify that we have received the packet for the joined instance
A R Karthick76a497a2017-04-12 10:59:39 -0700156 log_test.info('Packet received for group %s, subscriber %s, port %s' %
A R Karthick338268f2016-06-21 17:12:13 -0700157 (pkt[IP].dst, self.name, self.rx_intf))
158 if self.recv_timeout:
159 return
A R Karthickb7e80902016-05-17 09:38:31 -0700160 chan = self.caddr(pkt[IP].dst)
161 assert_equal(chan in self.join_map.keys(), True)
162 recv_time = monotonic.monotonic() * 1000000
163 join_time = self.join_map[chan][self.STATS_JOIN].start
164 delta = recv_time - join_time
165 self.join_rx_stats.update(packets=1, t = delta, usecs = True)
166 self.channel_update(chan, self.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700167 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 -0700168
169class subscriber_pool:
170
171 def __init__(self, subscriber, test_cbs):
172 self.subscriber = subscriber
173 self.test_cbs = test_cbs
174
175 def pool_cb(self):
176 for cb in self.test_cbs:
177 if cb:
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700178 self.test_status = cb(self.subscriber)
179 if self.test_status is not True:
180 ## This is chaning for other sub status has to check again
181 self.test_status = True
A R Karthick76a497a2017-04-12 10:59:39 -0700182 log_test.info('This service is failed and other services will not run for this subscriber')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700183 break
A R Karthick76a497a2017-04-12 10:59:39 -0700184 log_test.info('This Subscriber is tested for multiple service eligibility ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700185 self.test_status = True
186
A.R Karthick95d044e2016-06-10 18:44:36 -0700187
A R Karthick9313b762016-11-07 13:14:35 -0800188class subscriber_exchange(CordLogger):
A R Karthickb7e80902016-05-17 09:38:31 -0700189
A.R Karthick95d044e2016-06-10 18:44:36 -0700190 apps = ('org.opencord.aaa', 'org.onosproject.dhcp')
191 olt_apps = () #'org.opencord.cordmcast')
A R Karthicka013a272016-08-16 16:40:19 -0700192 vtn_app = 'org.opencord.vtn'
A R Karthickb7e80902016-05-17 09:38:31 -0700193 table_app = 'org.ciena.cordigmp'
194 dhcp_server_config = {
195 "ip": "10.1.11.50",
196 "mac": "ca:fe:ca:fe:ca:fe",
197 "subnet": "255.255.252.0",
198 "broadcast": "10.1.11.255",
199 "router": "10.1.8.1",
200 "domain": "8.8.8.8",
201 "ttl": "63",
202 "delay": "2",
203 "startip": "10.1.11.51",
204 "endip": "10.1.11.100"
205 }
206
207 aaa_loaded = False
208 test_path = os.path.dirname(os.path.realpath(__file__))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700209 table_app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-multitable-2.0-SNAPSHOT.oar')
210 app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-2.0-SNAPSHOT.oar')
A.R Karthick4c4d0492017-05-26 19:23:05 -0700211 olt_app_file = os.path.join(test_path, '..', 'apps/olt-app-1.2-SNAPSHOT.oar')
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)))
277
A R Karthickb7e80902016-05-17 09:38:31 -0700278 @classmethod
A R Karthickb608d402017-06-02 11:48:41 -0700279 def update_apps_version(cls):
280 version = Onos.getVersion()
281 major = int(version.split('.')[0])
282 minor = int(version.split('.')[1])
283 cordigmp_app_version = '2.0-SNAPSHOT'
284 olt_app_version = '1.2-SNAPSHOT'
285 if major > 1:
286 cordigmp_app_version = '3.0-SNAPSHOT'
287 olt_app_version = '2.0-SNAPSHOT'
288 elif major == 1:
289 if minor > 10:
290 cordigmp_app_version = '3.0-SNAPSHOT'
291 olt_app_version = '2.0-SNAPSHOT'
292 elif minor <= 8:
293 olt_app_version = '1.1-SNAPSHOT'
294 cls.app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-{}.oar'.format(cordigmp_app_version))
295 cls.table_app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-multitable-{}.oar'.format(cordigmp_app_version))
296 cls.olt_app_file = os.path.join(cls.test_path, '..', 'apps/olt-app-{}.oar'.format(olt_app_version))
297
298 @classmethod
A R Karthickd44cea12016-07-20 12:16:41 -0700299 def load_device_id(cls):
A R Karthickb03cecd2016-07-27 10:27:55 -0700300 '''Configure the device id'''
301 did = OnosCtrl.get_device_id()
A R Karthickd44cea12016-07-20 12:16:41 -0700302 #Set the default config
303 cls.device_id = did
304 cls.device_dict = { "devices" : {
305 "{}".format(did) : {
306 "basic" : {
307 "driver" : "pmc-olt"
308 }
309 }
310 },
311 }
312 return did
313
314 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700315 def setUpClass(cls):
316 '''Load the OLT config and activate relevant apps'''
A R Karthickb608d402017-06-02 11:48:41 -0700317 cls.update_apps_version()
A R Karthick0f6b6842016-12-06 17:17:44 -0800318 dids = OnosCtrl.get_device_ids()
319 device_map = {}
320 for did in dids:
321 device_map[did] = { 'basic' : { 'driver' : 'pmc-olt' } }
322 network_cfg = {}
323 network_cfg = { 'devices' : device_map }
A R Karthick4b72d4b2016-06-15 11:09:17 -0700324 ## Restart ONOS with cpqd driver config for OVS
325 cls.start_onos(network_cfg = network_cfg)
A R Karthickb7e80902016-05-17 09:38:31 -0700326 cls.install_app_table()
A R Karthickb7e80902016-05-17 09:38:31 -0700327 cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700328 if cls.VOLTHA_ENABLED is False:
329 OnosCtrl.cord_olt_config(cls.olt)
A R Karthickb03cecd2016-07-27 10:27:55 -0700330 cls.port_map, cls.port_list = cls.olt.olt_port_map()
A R Karthick0f6b6842016-12-06 17:17:44 -0800331 cls.switches = cls.port_map['switches']
332 cls.num_ports = cls.port_map['num_ports']
333 if cls.num_ports > 1:
334 cls.num_ports -= 1 ##account for the tx port
A R Karthickb7e80902016-05-17 09:38:31 -0700335 cls.activate_apps(cls.apps + cls.olt_apps)
336
337 @classmethod
338 def tearDownClass(cls):
339 '''Deactivate the olt apps and restart OVS back'''
340 apps = cls.olt_apps + ( cls.table_app,)
341 for app in apps:
342 onos_ctrl = OnosCtrl(app)
343 onos_ctrl.deactivate()
A R Karthicke0f33fa2016-06-22 13:36:02 -0700344 cls.start_onos(network_cfg = {})
A R Karthicke5939f02016-11-16 12:08:07 -0800345 cls.install_app_igmp()
A R Karthickb7e80902016-05-17 09:38:31 -0700346
347 @classmethod
348 def activate_apps(cls, apps):
349 for app in apps:
350 onos_ctrl = OnosCtrl(app)
351 status, _ = onos_ctrl.activate()
352 assert_equal(status, True)
353 time.sleep(2)
354
355 @classmethod
356 def install_app_table(cls):
357 ##Uninstall the existing app if any
358 OnosCtrl.uninstall_app(cls.table_app)
359 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700360 log_test.info('Installing the multi table app %s for subscriber test' %(cls.table_app_file))
A R Karthickb7e80902016-05-17 09:38:31 -0700361 OnosCtrl.install_app(cls.table_app_file)
362 time.sleep(3)
A R Karthickedab01c2016-09-08 14:05:44 -0700363 #onos_ctrl = OnosCtrl(cls.vtn_app)
364 #onos_ctrl.deactivate()
A R Karthickb7e80902016-05-17 09:38:31 -0700365
366 @classmethod
A R Karthicke5939f02016-11-16 12:08:07 -0800367 def install_app_igmp(cls):
A R Karthickb7e80902016-05-17 09:38:31 -0700368 ##Uninstall the table app on class exit
369 OnosCtrl.uninstall_app(cls.table_app)
370 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700371 log_test.info('Installing back the cord igmp app %s for subscriber test on exit' %(cls.app_file))
A R Karthickb7e80902016-05-17 09:38:31 -0700372 OnosCtrl.install_app(cls.app_file)
A R Karthickedab01c2016-09-08 14:05:44 -0700373 #onos_ctrl = OnosCtrl(cls.vtn_app)
374 #onos_ctrl.activate()
A R Karthickb7e80902016-05-17 09:38:31 -0700375
376 @classmethod
377 def start_onos(cls, network_cfg = None):
A R Karthicka478df42016-07-27 16:51:08 -0700378 if cls.onos_restartable is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700379 log_test.info('ONOS restart is disabled. Skipping ONOS restart')
A R Karthick65c4d722016-07-18 14:20:17 -0700380 return
A.R Karthick4c4d0492017-05-26 19:23:05 -0700381 if cls.VOLTHA_ENABLED is True:
382 log_test.info('ONOS restart skipped as VOLTHA is running')
383 return
A R Karthickb7e80902016-05-17 09:38:31 -0700384 if network_cfg is None:
A R Karthick4b72d4b2016-06-15 11:09:17 -0700385 network_cfg = cls.device_dict
A R Karthickb7e80902016-05-17 09:38:31 -0700386
387 if type(network_cfg) is tuple:
388 res = []
389 for v in network_cfg:
390 res += v.items()
391 config = dict(res)
392 else:
393 config = network_cfg
A R Karthick76a497a2017-04-12 10:59:39 -0700394 log_test.info('Restarting ONOS with new network configuration')
A R Karthick338268f2016-06-21 17:12:13 -0700395 return cord_test_onos_restart(config = config)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700396
397 @classmethod
398 def remove_onos_config(cls):
399 try:
400 os.unlink('{}/network-cfg.json'.format(cls.onos_config_path))
401 except: pass
A R Karthickb7e80902016-05-17 09:38:31 -0700402
403 @classmethod
404 def start_cpqd(cls, mac = '00:11:22:33:44:55'):
405 dpid = mac.replace(':', '')
406 cpqd_file = os.sep.join( (cls.cpqd_path, 'cpqd.sh') )
407 cpqd_cmd = '{} {}'.format(cpqd_file, dpid)
408 ret = os.system(cpqd_cmd)
409 assert_equal(ret, 0)
410 time.sleep(10)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700411 device_id = 'of:{}{}'.format('0'*4, dpid)
412 return device_id
A R Karthickb7e80902016-05-17 09:38:31 -0700413
414 @classmethod
415 def start_ovs(cls):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700416 ovs_file = os.sep.join( (cls.ovs_path, 'of-bridge.sh') )
A R Karthickb7e80902016-05-17 09:38:31 -0700417 ret = os.system(ovs_file)
418 assert_equal(ret, 0)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700419 time.sleep(30)
A R Karthickb7e80902016-05-17 09:38:31 -0700420
A R Karthicka013a272016-08-16 16:40:19 -0700421 @classmethod
422 def ovs_cleanup(cls):
423 ##For every test case, delete all the OVS groups
424 cmd = 'ovs-ofctl del-groups br-int -OOpenFlow11 >/dev/null 2>&1'
A R Karthicka013a272016-08-16 16:40:19 -0700425 try:
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700426 cord_test_shell(cmd)
427 ##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 -0700428 os.system(cmd)
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700429 finally:
430 return
A R Karthicka013a272016-08-16 16:40:19 -0700431
A R Karthickb7e80902016-05-17 09:38:31 -0700432 def onos_aaa_load(self):
433 if self.aaa_loaded:
434 return
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700435 aaa_dict = {'apps' : { 'org.opencord.aaa' : { 'AAA' : { 'radiusSecret': 'radius_password',
436 'radiusIp': '172.17.0.2' } } } }
A R Karthickb7e80902016-05-17 09:38:31 -0700437 radius_ip = os.getenv('ONOS_AAA_IP') or '172.17.0.2'
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700438 aaa_dict['apps']['org.opencord.aaa']['AAA']['radiusIp'] = radius_ip
439 self.onos_load_config('org.opencord.aaa', aaa_dict)
A R Karthickb7e80902016-05-17 09:38:31 -0700440 self.aaa_loaded = True
441
442 def onos_dhcp_table_load(self, config = None):
443 dhcp_dict = {'apps' : { 'org.onosproject.dhcp' : { 'dhcp' : copy.copy(self.dhcp_server_config) } } }
444 dhcp_config = dhcp_dict['apps']['org.onosproject.dhcp']['dhcp']
445 if config:
446 for k in config.keys():
447 if dhcp_config.has_key(k):
448 dhcp_config[k] = config[k]
449 self.onos_load_config('org.onosproject.dhcp', dhcp_dict)
450
451 def onos_load_config(self, app, config):
452 status, code = OnosCtrl.config(config)
453 if status is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700454 log_test.info('JSON config request for app %s returned status %d' %(app, code))
A R Karthickb7e80902016-05-17 09:38:31 -0700455 assert_equal(status, True)
456 time.sleep(2)
457
458 def dhcp_sndrcv(self, dhcp, update_seed = False):
459 cip, sip = dhcp.discover(update_seed = update_seed)
460 assert_not_equal(cip, None)
461 assert_not_equal(sip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700462 log_test.info('Got dhcp client IP %s from server %s for mac %s' %
A R Karthickb7e80902016-05-17 09:38:31 -0700463 (cip, sip, dhcp.get_mac(cip)[0]))
464 return cip,sip
465
466 def dhcp_request(self, subscriber, seed_ip = '10.10.10.1', update_seed = False):
467 config = {'startip':'10.10.10.20', 'endip':'10.10.10.200',
468 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
469 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
470 self.onos_dhcp_table_load(config)
471 dhcp = DHCPTest(seed_ip = seed_ip, iface = subscriber.iface)
472 cip, sip = self.dhcp_sndrcv(dhcp, update_seed = update_seed)
473 return cip, sip
474
475 def recv_channel_cb(self, pkt):
476 ##First verify that we have received the packet for the joined instance
477 chan = self.subscriber.caddr(pkt[IP].dst)
478 assert_equal(chan in self.subscriber.join_map.keys(), True)
479 recv_time = monotonic.monotonic() * 1000000
480 join_time = self.subscriber.join_map[chan][self.subscriber.STATS_JOIN].start
481 delta = recv_time - join_time
482 self.subscriber.join_rx_stats.update(packets=1, t = delta, usecs = True)
483 self.subscriber.channel_update(chan, self.subscriber.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700484 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 -0700485 self.test_status = True
486
A R Karthick65c4d722016-07-18 14:20:17 -0700487 def traffic_verify(self, subscriber):
488 if subscriber.has_service('TRAFFIC'):
489 url = 'http://www.google.com'
490 resp = requests.get(url)
491 self.test_status = resp.ok
492 if resp.ok == False:
A R Karthick76a497a2017-04-12 10:59:39 -0700493 log_test.info('Subscriber %s failed get from url %s with status code %d'
A R Karthick65c4d722016-07-18 14:20:17 -0700494 %(subscriber.name, url, resp.status_code))
495 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700496 log_test.info('GET request from %s succeeded for subscriber %s'
A R Karthick65c4d722016-07-18 14:20:17 -0700497 %(url, subscriber.name))
A R Karthicka013a272016-08-16 16:40:19 -0700498 return self.test_status
A R Karthick65c4d722016-07-18 14:20:17 -0700499
A R Karthickb7e80902016-05-17 09:38:31 -0700500 def tls_verify(self, subscriber):
501 if subscriber.has_service('TLS'):
502 time.sleep(2)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700503 tls = TLSAuthTest(intf = subscriber.rx_intf)
A R Karthick76a497a2017-04-12 10:59:39 -0700504 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700505 tls.runTest()
506 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700507 return self.test_status
508 else:
509 self.test_status = True
510 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700511
512 def dhcp_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700513 if subscriber.has_service('DHCP'):
514 cip, sip = self.dhcp_request(subscriber, update_seed = True)
A R Karthick76a497a2017-04-12 10:59:39 -0700515 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700516 subscriber.src_list = [cip]
517 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700518 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700519 else:
520 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
521 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700522 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700523
524 def dhcp_jump_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700525 if subscriber.has_service('DHCP'):
526 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.200.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700527 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700528 subscriber.src_list = [cip]
529 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700530 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700531 else:
532 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
533 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700534 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700535
536 def dhcp_next_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700537 if subscriber.has_service('DHCP'):
538 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.150.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700539 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700540 subscriber.src_list = [cip]
541 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700542 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700543 else:
544 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
545 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700546 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700547
548 def igmp_verify(self, subscriber):
549 chan = 0
550 if subscriber.has_service('IGMP'):
A R Karthick338268f2016-06-21 17:12:13 -0700551 ##We wait for all the subscribers to join before triggering leaves
552 if subscriber.rx_port > 1:
553 time.sleep(5)
554 subscriber.channel_join(chan, delay = 0)
555 self.num_joins += 1
556 while self.num_joins < self.num_subscribers:
557 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700558 log_test.info('All subscribers have joined the channel')
A R Karthick338268f2016-06-21 17:12:13 -0700559 for i in range(10):
560 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
A R Karthick76a497a2017-04-12 10:59:39 -0700561 log_test.info('Leaving channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700562 subscriber.channel_leave(chan)
A R Karthick338268f2016-06-21 17:12:13 -0700563 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700564 log_test.info('Interface %s Join RX stats for subscriber %s, %s' %(subscriber.iface, subscriber.name,subscriber.join_rx_stats))
A R Karthick338268f2016-06-21 17:12:13 -0700565 #Should not receive packets for this subscriber
566 self.recv_timeout = True
567 subscriber.recv_timeout = True
568 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
569 subscriber.recv_timeout = False
570 self.recv_timeout = False
A R Karthick76a497a2017-04-12 10:59:39 -0700571 log_test.info('Joining channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthick338268f2016-06-21 17:12:13 -0700572 subscriber.channel_join(chan, delay = 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700573 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700574 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700575
576 def igmp_jump_verify(self, subscriber):
577 if subscriber.has_service('IGMP'):
578 for i in xrange(subscriber.num):
A R Karthick76a497a2017-04-12 10:59:39 -0700579 log_test.info('Subscriber %s jumping channel' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700580 chan = subscriber.channel_jump(delay=0)
581 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 1)
A R Karthick76a497a2017-04-12 10:59:39 -0700582 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700583 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700584 log_test.info('Interface %s Jump RX stats for subscriber %s, %s' %(subscriber.iface, subscriber.name, subscriber.join_rx_stats))
A R Karthickb7e80902016-05-17 09:38:31 -0700585 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700586 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700587
588 def igmp_next_verify(self, subscriber):
589 if subscriber.has_service('IGMP'):
590 for i in xrange(subscriber.num):
591 if i:
A.R Karthick517f7812017-05-18 11:22:46 -0700592 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700593 else:
594 chan = subscriber.channel_join(i, delay=0)
A R Karthick76a497a2017-04-12 10:59:39 -0700595 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700596 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
A R Karthick76a497a2017-04-12 10:59:39 -0700597 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700598 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700599 log_test.info('Interface %s Join Next RX stats for subscriber %s, %s' %(subscriber.iface, subscriber.name, subscriber.join_rx_stats))
A R Karthickb7e80902016-05-17 09:38:31 -0700600 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700601 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700602
A.R Karthick4c4d0492017-05-26 19:23:05 -0700603 def voltha_igmp_next_verify(self, subscriber):
604 if subscriber.has_service('IGMP'):
605 for c in xrange(self.VOLTHA_IGMP_ITERATIONS):
606 for i in xrange(subscriber.num):
607 if i:
608 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
609 time.sleep(0.2)
610 else:
611 chan = subscriber.channel_join(i, delay=0)
612 time.sleep(0.2)
613 subscriber.channel_leave(chan)
614 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
615 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
616 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
617 self.test_status = True
618 return self.test_status
619
A R Karthick31f1f342017-05-19 13:55:10 -0700620 def igmp_leave_verify(self, subscriber):
621 if subscriber.has_service('IGMP'):
622 for chan in xrange(subscriber.num):
A R Karthick78d1f492017-05-19 14:24:17 -0700623 subscriber.channel_leave(chan, force = True)
A R Karthick31f1f342017-05-19 13:55:10 -0700624 time.sleep(2)
625 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
626 #self.recv_timeout = True
627 #subscriber.recv_timeout = True
628 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
629 #self.recv_timeout = False
630 #subscriber.recv_timeout = False
631 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
632 #time.sleep(1)
633
634 self.test_status = True
635 return self.test_status
636
A R Karthickb7e80902016-05-17 09:38:31 -0700637 def generate_port_list(self, subscribers, channels):
638 return self.port_list[:subscribers]
639
A.R Karthick4c4d0492017-05-26 19:23:05 -0700640 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 -0700641 '''Load the subscriber from the database'''
A.R Karthick4c4d0492017-05-26 19:23:05 -0700642 test_services = services if services else self.test_services
643 self.subscriber_db = SubscriberDB(create = create, services = test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700644 if create is True:
645 self.subscriber_db.generate(num)
646 self.subscriber_info = self.subscriber_db.read(num)
647 self.subscriber_list = []
648 if not port_list:
649 port_list = self.generate_port_list(num, num_channels)
650
651 index = 0
652 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700653 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700654 service=info['Service'],
655 port_map = self.port_map,
656 num=num_channels,
657 channel_start = channel_start,
658 tx_port = port_list[index][0],
659 rx_port = port_list[index][1]))
660 if num_channels > 1:
661 channel_start += num_channels
662 index += 1
663
664 #load the ssm list for all subscriber channels
665 igmpChannel = IgmpChannel()
666 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
667 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
668 igmpChannel.igmp_load_ssm_config(ssm_list)
669
A.R Karthick95d044e2016-06-10 18:44:36 -0700670 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700671 channel_start = 0, cbs = None, port_list = [],
672 services = None, negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700673 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700674 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700675 subscribers_count = num_subscribers
676 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700677 self.subscriber_load(create = True, num = num_subscribers,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700678 num_channels = num_channels, channel_start = channel_start, port_list = port_list,
679 services = services)
A R Karthickb7e80902016-05-17 09:38:31 -0700680 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700681 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
682
A R Karthick338268f2016-06-21 17:12:13 -0700683 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800684 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700685 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700686 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700687 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700688 for subscriber in self.subscriber_list:
689 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700690 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
691 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
692 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
693 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
694 else:
695 cbs = cbs_negative
696 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700697 pool_object = subscriber_pool(subscriber, cbs)
698 self.thread_pool.addTask(pool_object.pool_cb)
699 self.thread_pool.cleanUpThreads()
700 for subscriber in self.subscriber_list:
701 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700702 if chan_leave is True:
703 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700704 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700705 return self.test_status
706
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700707 def tls_invalid_cert(self, subscriber):
708 if subscriber.has_service('TLS'):
709 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700710 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700711 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
712 tls.runTest()
713 if tls.failTest == True:
714 self.test_status = False
715 return self.test_status
716 else:
717 self.test_status = True
718 return self.test_status
719
720 def tls_no_cert(self, subscriber):
721 if subscriber.has_service('TLS'):
722 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700723 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700724 tls = TLSAuthTest(client_cert = '')
725 tls.runTest()
726 if tls.failTest == True:
727 self.test_status = False
728 return self.test_status
729 else:
730 self.test_status = True
731 return self.test_status
732
733 def tls_self_signed_cert(self, subscriber):
734 if subscriber.has_service('TLS'):
735 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700736 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700737 tls = TLSAuthTest(client_cert = self.CLIENT_CERT)
738 tls.runTest()
739 if tls.failTest == False:
740 self.test_status = True
741 return self.test_status
742 else:
743 self.test_status = True
744 return self.test_status
745
746 def tls_non_ca_authrized_cert(self, subscriber):
747 if subscriber.has_service('TLS'):
748 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700749 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700750 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
751 tls.runTest()
752 if tls.failTest == False:
753 self.test_status = True
754 return self.test_status
755 else:
756 self.test_status = True
757 return self.test_status
758
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700759 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
760 if subscriber.has_service('TLS'):
761 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700762 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700763 num_users = 3
764 for i in xrange(num_users):
765 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
766 tls.runTest()
767 if tls.failTest == False:
768 self.test_status = True
769 return self.test_status
770 else:
771 self.test_status = True
772 return self.test_status
773
774 def dhcp_discover_scenario(self, subscriber):
775 if subscriber.has_service('DHCP'):
776 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700777 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700778 t1 = self.subscriber_dhcp_1release()
779 self.test_status = True
780 return self.test_status
781 else:
782 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
783 self.test_status = True
784 return self.test_status
785
786 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700787 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
788 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
789 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
790 self.onos_dhcp_table_load(config)
791 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
792 cip, sip = self.send_recv()
793 log_test.info('Releasing ip %s to server %s' %(cip, sip))
794 assert_equal(self.dhcp.release(cip), True)
795 log_test.info('Triggering DHCP discover again after release')
796 cip2, sip2 = self.send_recv(update_seed = True)
797 log_test.info('Verifying released IP was given back on rediscover')
798 assert_equal(cip, cip2)
799 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
800 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700801
802 def dhcp_client_reboot_scenario(self, subscriber):
803 if subscriber.has_service('DHCP'):
804 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700805 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700806 tl = self.subscriber_dhcp_client_request_after_reboot()
807 self.test_status = True
808 return self.test_status
809 else:
810 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
811 self.test_status = True
812 return self.test_status
813
814 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
815 #''' Client sends DHCP Request after reboot.'''
816
817 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
818 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
819 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
820 self.onos_dhcp_table_load(config)
821 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
822 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700823 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700824 (cip, sip, mac) )
825
A R Karthick76a497a2017-04-12 10:59:39 -0700826 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 -0700827
828 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700829 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 -0700830 assert_not_equal(cip, None)
831
832 else:
833 new_cip, new_sip = self.dhcp.only_request(cip, mac)
834 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700835 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700836 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700837 log_test.info('Client goes down.')
838 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700839
840 time.sleep(5)
841
842 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700843 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700844
845 new_cip, new_sip = self.dhcp.only_request(cip, mac)
846 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700847 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700848 assert_not_equal(new_cip, None)
849 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700850 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700851
852 def dhcp_client_renew_scenario(self, subscriber):
853 if subscriber.has_service('DHCP'):
854 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700855 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700856 tl = self.subscriber_dhcp_client_renew_time()
857 self.test_status = True
858 return self.test_status
859 else:
860 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
861 self.test_status = True
862 return self.test_status
863
864 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
865 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
866 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
867 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
868 self.onos_dhcp_table_load(config)
869 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
870 cip, sip, mac , lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700871 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700872 (cip, sip, mac) )
873
A R Karthick76a497a2017-04-12 10:59:39 -0700874 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 -0700875 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700876 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 -0700877 assert_not_equal(cip, None)
878 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700879 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700880 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
881 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700882 log_test.info("Client 's Renewal time is :%s",lval)
883 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700884 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700885 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700886 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
887 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700888 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700889 (latest_cip, mac, latest_sip) )
890
891 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700892 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700893 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700894 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700895
896 def dhcp_server_reboot_scenario(self, subscriber):
897 if subscriber.has_service('DHCP'):
898 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700899 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700900 tl = self.subscriber_dhcp_server_after_reboot()
901 self.test_status = True
902 return self.test_status
903 else:
904 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
905 self.test_status = True
906 return self.test_status
907
908 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
909 ''' DHCP server goes down.'''
910 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
911 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
912 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
913 self.onos_dhcp_table_load(config)
914 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
915 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700916 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700917 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700918 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 -0700919 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700920 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 -0700921 assert_not_equal(cip, None)
922 else:
923 new_cip, new_sip = self.dhcp.only_request(cip, mac)
924 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700925 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700926 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700927 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700928 onos_ctrl = OnosCtrl(self.dhcp_app)
929 onos_ctrl.deactivate()
930 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700931 log_test.info("Sending DHCP Request.")
932 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700933 new_cip, new_sip = self.dhcp.only_request(cip, mac)
934 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700935 log_test.info('')
936 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700937 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700938 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700939 assert_equal(new_cip,None) #Neagtive Test Case
A R Karthick76a497a2017-04-12 10:59:39 -0700940 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700941# self.activate_apps(self.dhcp_app)
942 onos_ctrl = OnosCtrl(self.dhcp_app)
943 status, _ = onos_ctrl.activate()
944 assert_equal(status, True)
945 time.sleep(3)
946 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700947 log_test.info("Sending DHCP Request after DHCP server is up.")
948 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700949 new_cip, new_sip = self.dhcp.only_request(cip, mac)
950 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700951 log_test.info('')
952 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700953 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700954 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700955 assert_equal(new_cip,None) #Neagtive Test Case
956
957 def dhcp_client_rebind_scenario(self, subscriber):
958 if subscriber.has_service('DHCP'):
959 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700960 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700961 tl = self.subscriber_dhcp_client_rebind_time()
962 self.test_status = True
963 return self.test_status
964 else:
965 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
966 self.test_status = True
967 return self.test_status
968
969 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
970 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
971 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
972 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
973 self.onos_dhcp_table_load(config)
974 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
975 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700976 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700977 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700978 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 -0700979 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700980 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 -0700981 assert_not_equal(cip, None)
982 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700983 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700984 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
985 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700986 log_test.info("Client 's Rebind time is :%s",lval)
987 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700988 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700989 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700990 self.dhcp.after_T2 = True
991 for i in range(0,4):
992 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
993 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700994 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700995 (latest_cip, mac, latest_sip) )
996 break
997 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700998 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700999 assert_not_equal(latest_cip, None)
1000 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001001 log_test.info("Got DHCP NAK.Lease not Renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001002
1003 def dhcp_starvation_scenario(self, subscriber):
1004 if subscriber.has_service('DHCP'):
1005 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001006 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001007 tl = self.subscriber_dhcp_starvation()
1008 self.test_status = True
1009 return self.test_status
1010 else:
1011 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1012 self.test_status = True
1013 return self.test_status
1014
1015 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
1016 '''DHCP starve'''
1017 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
1018 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
1019 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
1020 self.onos_dhcp_table_load(config)
1021 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001022 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001023 for x in xrange(50):
1024 mac = RandMAC()._fix()
1025 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -07001026 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001027 cip, sip = self.send_recv(update_seed = True, validate = False)
1028 assert_equal(cip, None)
1029 assert_equal(sip, None)
1030
1031 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
1032 if subscriber.has_service('DHCP'):
1033 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001034 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001035 tl = self.subscriber_dhcp_same_client_multiple_discover()
1036 self.test_status = True
1037 return self.test_status
1038 else:
1039 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1040 self.test_status = True
1041 return self.test_status
1042
1043 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
1044 ''' DHCP Client sending multiple discover . '''
1045 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1046 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1047 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1048 self.onos_dhcp_table_load(config)
1049 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
1050 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001051 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 -07001052 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001053 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001054 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
1055 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001056 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 -07001057 % (new_cip, new_sip, new_mac) )
1058 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001059 log_test.info('Ip after 1st discover %s' %cip)
1060 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001061 assert_equal(cip, new_cip)
1062
1063 def dhcp_same_client_multi_request_scenario(self, subscriber):
1064 if subscriber.has_service('DHCP'):
1065 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001066 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001067 tl = self.subscriber_dhcp_same_client_multiple_request()
1068 self.test_status = True
1069 return self.test_status
1070 else:
1071 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1072 self.test_status = True
1073 return self.test_status
1074
1075 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1076 ''' DHCP Client sending multiple repeat DHCP requests. '''
1077 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1078 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1079 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1080 self.onos_dhcp_table_load(config)
1081 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001082 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001083 cip, sip = self.send_recv()
1084 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001085 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001086 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1087 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001088 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 -07001089 % (new_cip, new_sip, mac) )
1090 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001091 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001092 assert_equal(new_cip, None)
1093 assert_equal(new_sip, None)
1094 else:
1095 print "Something went wrong."
1096
1097 def dhcp_client_desired_ip_scenario(self, subscriber):
1098 if subscriber.has_service('DHCP'):
1099 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001100 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001101 tl = self.subscriber_dhcp_client_desired_address()
1102 self.test_status = True
1103 return self.test_status
1104 else:
1105 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1106 self.test_status = True
1107 return self.test_status
1108
1109 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1110 '''DHCP Client asking for desired IP address.'''
1111 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1112 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1113 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1114 self.onos_dhcp_table_load(config)
1115 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1116 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001117 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001118 (cip, sip, mac) )
1119 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001120 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001121 (cip, sip, mac) )
1122 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001123 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001124 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001125 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001126 assert_equal(cip, self.dhcp.seed_ip)
1127
1128 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1129 if subscriber.has_service('DHCP'):
1130 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001131 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001132 tl = self.subscriber_dhcp_server_nak_packet()
1133 self.test_status = True
1134 return self.test_status
1135 else:
1136 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1137 self.test_status = True
1138 return self.test_status
1139
1140 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1141 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1142 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1143 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1144 self.onos_dhcp_table_load(config)
1145 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1146 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001147 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001148 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001149 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 -07001150 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001151 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 -07001152 assert_not_equal(cip, None)
1153 else:
1154 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1155 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001156 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001157 assert_equal(new_cip, None) #Negative Test Case
1158
1159 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1160 if subscriber.has_service('DHCP'):
1161 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001162 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001163 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1164 self.test_status = True
1165 return self.test_status
1166 else:
1167 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1168 self.test_status = True
1169 return self.test_status
1170
1171 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1172 '''DHCP Client asking for desired IP address from out of pool.'''
1173 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1174 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1175 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1176 self.onos_dhcp_table_load(config)
1177 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1178 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001179 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001180 (cip, sip, mac) )
1181 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001182 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001183 (cip, sip, mac) )
1184 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1185
1186 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001187 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001188 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001189 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001190 assert_not_equal(cip, self.dhcp.seed_ip)
1191
1192 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001193 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001194
1195 def dhcp_client_specific_lease_scenario(self, subscriber):
1196 if subscriber.has_service('DHCP'):
1197 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001198 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001199 tl = self.subscriber_dhcp_specific_lease_packet()
1200 self.test_status = True
1201 return self.test_status
1202 else:
1203 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1204 self.test_status = True
1205 return self.test_status
1206
1207 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1208 ''' Client sends DHCP Discover packet for particular lease time.'''
1209 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1210 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1211 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1212 self.onos_dhcp_table_load(config)
1213 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001214 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001215 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1216
A R Karthick76a497a2017-04-12 10:59:39 -07001217 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001218 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001219 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 -07001220 assert_not_equal(cip, None)
1221 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001222 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 -07001223 (cip, sip, mac, lval) )
1224 assert_not_equal(lval, 700)
1225
1226 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001227 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001228 self.num_subscribers = 5
1229 self.num_channels = 1
A R Karthicka478df42016-07-27 16:51:08 -07001230 test_status = True
1231 ##Run this test only if ONOS can be restarted as it incurs a network-cfg change
1232 if self.onos_restartable is True:
1233 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1234 num_channels = self.num_channels,
1235 port_list = self.generate_port_list(self.num_subscribers,
1236 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001237 assert_equal(test_status, True)
1238
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001239 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001240 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001241 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001242 self.num_channels = 10
1243 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1244 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001245 cbs = (self.tls_verify, self.dhcp_jump_verify,
1246 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001247 port_list = self.generate_port_list(self.num_subscribers,
1248 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001249 assert_equal(test_status, True)
1250
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001251 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001252 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001253 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001254 self.num_channels = 10
1255 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1256 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001257 cbs = (self.tls_verify, self.dhcp_next_verify,
1258 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001259 port_list = self.generate_port_list(self.num_subscribers,
1260 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001261 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001262
A.R Karthick517f7812017-05-18 11:22:46 -07001263 def test_cord_subscriber_join_next_without_leave(self):
1264 """Test subscriber join next for channel surfing"""
1265 self.num_subscribers = self.num_ports * len(self.switches)
1266 self.num_channels = 5
1267 self.leave_flag = False
1268 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1269 num_channels = self.num_channels,
1270 cbs = (self.tls_verify, self.dhcp_next_verify,
1271 self.igmp_next_verify, self.traffic_verify),
1272 port_list = self.generate_port_list(self.num_subscribers,
1273 self.num_channels))
1274 self.leave_flag = True
1275 assert_equal(test_status, True)
1276
A R Karthick31f1f342017-05-19 13:55:10 -07001277 def test_cord_subscriber_leave(self):
1278 """Test subscriber leaves for all the join nexts before"""
1279 self.num_subscribers = self.num_ports * len(self.switches)
1280 self.num_channels = 5
1281 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1282 num_channels = self.num_channels,
1283 cbs = (self.tls_verify, self.dhcp_next_verify,
1284 self.igmp_leave_verify, self.traffic_verify),
1285 port_list = self.generate_port_list(self.num_subscribers,
1286 self.num_channels))
1287 assert_equal(test_status, True)
1288
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001289 #@deferred(SUBSCRIBER_TIMEOUT)
1290 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1291 ### """Test subscriber to auth with invalidCertification and join channel"""
1292 num_subscribers = 1
1293 num_channels = 1
1294 df = defer.Deferred()
1295 def sub_auth_invalid_cert(df):
1296 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1297 num_channels = num_channels,
1298 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1299 self.igmp_verify, self.traffic_verify),
1300 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1301 assert_equal(test_status, False)
1302 df.callback(0)
1303 reactor.callLater(0, sub_auth_invalid_cert, df)
1304 return df
1305
1306 #@deferred(SUBSCRIBER_TIMEOUT)
1307 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1308 ### """Test subscriber to auth with No Certification and join channel"""
1309 num_subscribers = 1
1310 num_channels = 1
1311 df = defer.Deferred()
1312 def sub_auth_no_cert(df):
1313 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1314 num_channels = num_channels,
1315 cbs = (self.tls_no_cert, self.dhcp_verify,
1316 self.igmp_verify, self.traffic_verify),
1317 port_list = self.generate_port_list(num_subscribers, num_channels),
1318 negative_subscriber_auth = 'all')
1319 assert_equal(test_status, False)
1320 df.callback(0)
1321 reactor.callLater(0, sub_auth_no_cert, df)
1322 return df
1323 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1324 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1325 num_subscribers = 1
1326 num_channels = 1
1327 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1328 num_channels = num_channels,
1329 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1330 self.igmp_verify, self.traffic_verify),
1331 port_list = self.generate_port_list(num_subscribers, num_channels),
1332 negative_subscriber_auth = 'all')
1333 assert_equal(test_status, True)
1334
1335 @deferred(SUBSCRIBER_TIMEOUT)
1336 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1337 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1338 num_subscribers = 2
1339 num_channels = 1
1340 df = defer.Deferred()
1341 def sub_auth_invalid_cert(df):
1342 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1343 num_channels = num_channels,
1344 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1345 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1346 assert_equal(test_status, True)
1347 df.callback(0)
1348 reactor.callLater(0, sub_auth_invalid_cert, df)
1349 return df
1350
1351 @deferred(SUBSCRIBER_TIMEOUT)
1352 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1353 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1354 num_subscribers = 2
1355 num_channels = 1
1356 df = defer.Deferred()
1357 def sub_auth_no_cert(df):
1358 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1359 num_channels = num_channels,
1360 cbs = (self.tls_no_cert, self.dhcp_verify,
1361 self.igmp_verify, self.traffic_verify),
1362 port_list = self.generate_port_list(num_subscribers, num_channels),
1363 negative_subscriber_auth = 'half')
1364 assert_equal(test_status, True)
1365 df.callback(0)
1366 reactor.callLater(0, sub_auth_no_cert, df)
1367 return df
1368
1369 @deferred(SUBSCRIBER_TIMEOUT)
1370 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1371 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1372 num_subscribers = 2
1373 num_channels = 1
1374 df = defer.Deferred()
1375 def sub_auth_no_cert(df):
1376 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1377 num_channels = num_channels,
1378 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1379 self.igmp_verify, self.traffic_verify),
1380 port_list = self.generate_port_list(num_subscribers, num_channels),
1381 negative_subscriber_auth = 'half')
1382 assert_equal(test_status, True)
1383 df.callback(0)
1384 reactor.callLater(0, sub_auth_no_cert, df)
1385 return df
1386
1387 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1388 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1389 num_subscribers = 1
1390 num_channels = 1
1391 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1392 num_channels = num_channels,
1393 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1394 self.igmp_verify, self.traffic_verify),
1395 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1396 assert_equal(test_status, True)
1397
1398 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1399 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1400 num_subscribers = 1
1401 num_channels = 1
1402 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1403 num_channels = num_channels,
1404 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1405 self.igmp_verify, self.traffic_verify),
1406 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1407 assert_equal(test_status, True)
1408
1409 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1410 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1411 num_subscribers = 1
1412 num_channels = 1
1413 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1414 num_channels = num_channels,
1415 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1416 self.igmp_verify, self.traffic_verify),
1417 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1418 assert_equal(test_status, True)
1419
1420 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1421 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1422 num_subscribers = 1
1423 num_channels = 1
1424 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1425 num_channels = num_channels,
1426 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1427 self.igmp_verify, self.traffic_verify),
1428 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1429 assert_equal(test_status, True)
1430
1431
1432 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1433 ### """Test subscriber auth , DHCP starvation and join channel"""
1434 num_subscribers = 1
1435 num_channels = 1
1436 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1437 num_channels = num_channels,
1438 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1439 self.igmp_verify, self.traffic_verify),
1440 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1441 assert_equal(test_status, True)
1442
1443 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1444 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1445 num_subscribers = 1
1446 num_channels = 1
1447 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1448 num_channels = num_channels,
1449 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1450 self.igmp_verify, self.traffic_verify),
1451 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1452 assert_equal(test_status, True)
1453
1454 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1455 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1456 num_subscribers = 1
1457 num_channels = 1
1458 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1459 num_channels = num_channels,
1460 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1461 self.igmp_verify, self.traffic_verify),
1462 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1463 assert_equal(test_status, True)
1464
1465 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1466 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1467 num_subscribers = 1
1468 num_channels = 1
1469 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1470 num_channels = num_channels,
1471 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1472 self.igmp_verify, self.traffic_verify),
1473 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1474 assert_equal(test_status, True)
1475
1476 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1477 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1478 num_subscribers = 1
1479 num_channels = 1
1480 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1481 num_channels = num_channels,
1482 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1483 self.igmp_verify, self.traffic_verify),
1484 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1485 assert_equal(test_status, True)
1486
1487 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1488 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1489 num_subscribers = 1
1490 num_channels = 1
1491 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1492 num_channels = num_channels,
1493 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1494 self.igmp_verify, self.traffic_verify),
1495 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1496 assert_equal(test_status, True)
1497
1498
1499 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1500 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1501 num_subscribers = 1
1502 num_channels = 1
1503 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1504 num_channels = num_channels,
1505 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1506 self.igmp_verify, self.traffic_verify),
1507 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1508 assert_equal(test_status, True)
1509
1510 #@deferred(SUBSCRIBER_TIMEOUT)
1511 @nottest
1512 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1513 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1514 num_subscribers = 1000
1515 num_channels = 1
1516 df = defer.Deferred()
1517 def sub_auth_invalid_cert(df):
1518 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1519 num_channels = num_channels,
1520 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1521 self.igmp_verify, self.traffic_verify),
1522 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1523 assert_equal(test_status, True)
1524 df.callback(0)
1525 reactor.callLater(0, sub_auth_invalid_cert, df)
1526 return df
1527
1528 @nottest
1529 @deferred(SUBSCRIBER_TIMEOUT)
1530 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1531 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1532 num_subscribers = 1000
1533 num_channels = 1
1534 df = defer.Deferred()
1535 def sub_auth_no_cert(df):
1536 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1537 num_channels = num_channels,
1538 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1539 port_list = self.generate_port_list(num_subscribers, num_channels),
1540 negative_subscriber_auth = 'half')
1541 assert_equal(test_status, True)
1542 df.callback(0)
1543 reactor.callLater(0, sub_auth_no_cert, df)
1544 return df
1545
1546 #@deferred(SUBSCRIBER_TIMEOUT)
1547 @nottest
1548 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1549 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1550 num_subscribers = 1000
1551 num_channels = 1
1552 df = defer.Deferred()
1553 def sub_auth_no_cert(df):
1554 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1555 num_channels = num_channels,
1556 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1557 port_list = self.generate_port_list(num_subscribers, num_channels),
1558 negative_subscriber_auth = 'half')
1559 assert_equal(test_status, True)
1560 df.callback(0)
1561 reactor.callLater(0, sub_auth_no_cert, df)
1562 return df
1563
1564 #@deferred(SUBSCRIBER_TIMEOUT)
1565 @nottest
1566 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1567 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1568 num_subscribers = 5000
1569 num_channels = 1
1570 df = defer.Deferred()
1571 def sub_auth_invalid_cert(df):
1572 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1573 num_channels = num_channels,
1574 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1575 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1576 assert_equal(test_status, True)
1577 df.callback(0)
1578 reactor.callLater(0, sub_auth_invalid_cert, df)
1579 return df
1580
1581 #@deferred(SUBSCRIBER_TIMEOUT)
1582 @nottest
1583 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1584 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1585 num_subscribers = 5000
1586 num_channels = 1
1587 df = defer.Deferred()
1588 def sub_auth_no_cert(df):
1589 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1590 num_channels = num_channels,
1591 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1592 port_list = self.generate_port_list(num_subscribers, num_channels),
1593 negative_subscriber_auth = 'half')
1594 assert_equal(test_status, True)
1595 df.callback(0)
1596 reactor.callLater(0, sub_auth_no_cert, df)
1597 return df
1598
1599 #@deferred(SUBSCRIBER_TIMEOUT)
1600 @nottest
1601 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1602 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1603 num_subscribers = 5000
1604 num_channels = 1
1605 df = defer.Deferred()
1606 def sub_auth_no_cert(df):
1607 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1608 num_channels = num_channels,
1609 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1610 port_list = self.generate_port_list(num_subscribers, num_channels),
1611 negative_subscriber_auth = 'half')
1612 assert_equal(test_status, True)
1613 df.callback(0)
1614 reactor.callLater(0, sub_auth_no_cert, df)
1615 return df
1616
1617 #@deferred(SUBSCRIBER_TIMEOUT)
1618 @nottest
1619 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1620 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1621 num_subscribers = 10000
1622 num_channels = 1
1623 df = defer.Deferred()
1624 def sub_auth_invalid_cert(df):
1625 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1626 num_channels = num_channels,
1627 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1628 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1629 assert_equal(test_status, True)
1630 df.callback(0)
1631 reactor.callLater(0, sub_auth_invalid_cert, df)
1632 return df
1633
1634 #@deferred(SUBSCRIBER_TIMEOUT)
1635 @nottest
1636 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1637 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1638 num_subscribers = 10000
1639 num_channels = 1
1640 df = defer.Deferred()
1641 def sub_auth_no_cert(df):
1642 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1643 num_channels = num_channels,
1644 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1645 port_list = self.generate_port_list(num_subscribers, num_channels),
1646 negative_subscriber_auth = 'onethird')
1647 assert_equal(test_status, True)
1648 df.callback(0)
1649 reactor.callLater(0, sub_auth_no_cert, df)
1650 return df
1651
1652 #@deferred(SUBSCRIBER_TIMEOUT)
1653 @nottest
1654 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1655 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1656 num_subscribers = 10000
1657 num_channels = 1
1658 df = defer.Deferred()
1659 def sub_auth_no_cert(df):
1660 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1661 num_channels = num_channels,
1662 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1663 port_list = self.generate_port_list(num_subscribers, num_channels),
1664 negative_subscriber_auth = 'onethird')
1665 assert_equal(test_status, False)
1666 assert_equal(test_status, True)
1667 df.callback(0)
1668 reactor.callLater(0, sub_auth_no_cert, df)
1669 return df
1670
1671 @nottest
1672 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1673 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1674 num_subscribers = 1000
1675 num_channels = 1
1676 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1677 num_channels = num_channels,
1678 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1679 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1680 assert_equal(test_status, True)
1681
1682 @nottest
1683 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1684 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1685 num_subscribers = 1000
1686 num_channels = 1
1687 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1688 num_channels = num_channels,
1689 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1690 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1691 assert_equal(test_status, True)
1692
1693 @nottest
1694 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1695 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1696 num_subscribers = 1000
1697 num_channels = 1
1698 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1699 num_channels = num_channels,
1700 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1701 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1702 assert_equal(test_status, True)
1703
1704 @nottest
1705 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1706 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1707 num_subscribers = 1000
1708 num_channels = 1
1709 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1710 num_channels = num_channels,
1711 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1712 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1713 assert_equal(test_status, True)
1714
1715 @nottest
1716 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1717 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1718 num_subscribers = 1000
1719 num_channels = 1
1720 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1721 num_channels = num_channels,
1722 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1723 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1724 assert_equal(test_status, True)
1725
1726 @nottest
1727 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1728 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1729 num_subscribers = 1000
1730 num_channels = 1
1731 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1732 num_channels = num_channels,
1733 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1734 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1735 assert_equal(test_status, True)
1736
1737 @nottest
1738 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1739 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1740 num_subscribers = 1000
1741 num_channels = 1
1742 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1743 num_channels = num_channels,
1744 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1745 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1746 assert_equal(test_status, True)
1747
1748 def test_4_cord_subscribers_join_recv_5channel(self):
1749 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1750 num_subscribers = 4
1751 num_channels = 5
1752 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1753 num_channels = num_channels,
1754 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1755 port_list = self.generate_port_list(num_subscribers, num_channels),
1756 negative_subscriber_auth = 'all')
1757 assert_equal(test_status, True)
1758
1759 def test_4_cord_subscribers_join_jump_5channel(self):
1760 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1761 num_subscribers = 4
1762 num_channels = 5
1763 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1764 num_channels = num_channels,
1765 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1766 port_list = self.generate_port_list(num_subscribers, num_channels),
1767 negative_subscriber_auth = 'all')
1768 assert_equal(test_status, True)
1769
1770 def test_4_cord_subscribers_join_next_5channel(self):
1771 ###"""Test 4 subscribers join next for 5 channels"""
1772 num_subscribers = 4
1773 num_channels = 5
1774 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1775 num_channels = num_channels,
1776 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1777 port_list = self.generate_port_list(num_subscribers, num_channels),
1778 negative_subscriber_auth = 'all')
1779 assert_equal(test_status, True)
1780
1781 def test_10_cord_subscribers_join_recv_5channel(self):
1782 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1783 num_subscribers = 10
1784 num_channels = 5
1785 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1786 num_channels = num_channels,
1787 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1788 port_list = self.generate_port_list(num_subscribers, num_channels),
1789 negative_subscriber_auth = 'all')
1790 assert_equal(test_status, True)
1791
1792 def test_10_cord_subscribers_join_jump_5channel(self):
1793 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1794 num_subscribers = 10
1795 num_channels = 5
1796 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1797 num_channels = num_channels,
1798 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1799 port_list = self.generate_port_list(num_subscribers, num_channels),
1800 negative_subscriber_auth = 'all')
1801 assert_equal(test_status, True)
1802
1803
1804 def test_10_cord_subscribers_join_next_5channel(self):
1805 ###"""Test 10 subscribers join next for 5 channels"""
1806 num_subscribers = 10
1807 num_channels = 5
1808 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1809 num_channels = num_channels,
1810 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1811 port_list = self.generate_port_list(num_subscribers, num_channels),
1812 negative_subscriber_auth = 'all')
1813 assert_equal(test_status, True)
1814
1815
1816
1817 def test_cord_subscriber_join_recv_100channels(self):
1818 num_subscribers = 1
1819 num_channels = 100
1820 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1821 num_channels = num_channels,
1822 cbs = (self.tls_verify, self.dhcp_verify,
1823 self.igmp_verify, self.traffic_verify),
1824 port_list = self.generate_port_list(num_subscribers, num_channels),
1825 negative_subscriber_auth = 'all')
1826 assert_equal(test_status, True)
1827
1828 def test_cord_subscriber_join_recv_400channels(self):
1829 num_subscribers = 1
1830 num_channels = 400
1831 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1832 num_channels = num_channels,
1833 cbs = (self.tls_verify, self.dhcp_verify,
1834 self.igmp_verify, self.traffic_verify),
1835 port_list = self.generate_port_list(num_subscribers, num_channels),
1836 negative_subscriber_auth = 'all')
1837 assert_equal(test_status, True)
1838
1839 def test_cord_subscriber_join_recv_800channels(self):
1840 num_subscribers = 1
1841 num_channels = 800
1842 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1843 num_channels = num_channels,
1844 cbs = (self.tls_verify, self.dhcp_verify,
1845 self.igmp_verify, self.traffic_verify),
1846 port_list = self.generate_port_list(num_subscribers, num_channels),
1847 negative_subscriber_auth = 'all')
1848 assert_equal(test_status, True)
1849
1850 def test_cord_subscriber_join_recv_1200channels(self):
1851 num_subscribers = 1
1852 num_channels = 1200
1853 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1854 num_channels = num_channels,
1855 cbs = (self.tls_verify, self.dhcp_verify,
1856 self.igmp_verify, self.traffic_verify),
1857 port_list = self.generate_port_list(num_subscribers, num_channels),
1858 negative_subscriber_auth = 'all')
1859 assert_equal(test_status, True)
1860
1861 def test_cord_subscriber_join_recv_1500channels(self):
1862 num_subscribers = 1
1863 num_channels = 1500
1864 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1865 num_channels = num_channels,
1866 cbs = (self.tls_verify, self.dhcp_verify,
1867 self.igmp_verify, self.traffic_verify),
1868 port_list = self.generate_port_list(num_subscribers, num_channels),
1869 negative_subscriber_auth = 'all')
1870 assert_equal(test_status, True)
1871
1872 def test_cord_subscriber_join_jump_100channels(self):
1873 num_subscribers = 1
1874 num_channels = 100
1875 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1876 num_channels = num_channels,
1877 cbs = (self.tls_verify, self.dhcp_jump_verify,
1878 self.igmp_jump_verify, self.traffic_verify),
1879 port_list = self.generate_port_list(num_subscribers, num_channels),
1880 negative_subscriber_auth = 'all')
1881 assert_equal(test_status, True)
1882 def test_cord_subscriber_join_jump_400channels(self):
1883 num_subscribers = 1
1884 num_channels = 400
1885 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1886 num_channels = num_channels,
1887 cbs = (self.tls_verify, self.dhcp_jump_verify,
1888 self.igmp_jump_verify, self.traffic_verify),
1889 port_list = self.generate_port_list(num_subscribers, num_channels),
1890 negative_subscriber_auth = 'all')
1891 assert_equal(test_status, True)
1892
1893 def test_cord_subscriber_join_jump_800channels(self):
1894 num_subscribers = 1
1895 num_channels = 800
1896 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1897 num_channels = num_channels,
1898 cbs = (self.tls_verify, self.dhcp_jump_verify,
1899 self.igmp_jump_verify, self.traffic_verify),
1900 port_list = self.generate_port_list(num_subscribers, num_channels),
1901 negative_subscriber_auth = 'all')
1902 assert_equal(test_status, True)
1903 def test_cord_subscriber_join_jump_1200channel(sself):
1904 num_subscribers = 1
1905 num_channels = 1200
1906 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1907 num_channels = num_channels,
1908 cbs = (self.tls_verify, self.dhcp_jump_verify,
1909 self.igmp_jump_verify, self.traffic_verify),
1910 port_list = self.generate_port_list(num_subscribers, num_channels),
1911 negative_subscriber_auth = 'all')
1912 assert_equal(test_status, True)
1913 def test_cord_subscriber_join_jump_1500channels(self):
1914 num_subscribers = 1
1915 num_channels = 1500
1916 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1917 num_channels = num_channels,
1918 cbs = (self.tls_verify, self.dhcp_jump_verify,
1919 self.igmp_jump_verify, self.traffic_verify),
1920 port_list = self.generate_port_list(num_subscribers, num_channels),
1921 negative_subscriber_auth = 'all')
1922 assert_equal(test_status, True)
1923
1924 def test_cord_subscriber_join_next_100channels(self):
1925 num_subscribers = 1
1926 num_channels = 100
1927 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1928 num_channels = num_channels,
1929 cbs = (self.tls_verify, self.dhcp_next_verify,
1930 self.igmp_next_verify, self.traffic_verify),
1931 port_list = self.generate_port_list(num_subscribers, num_channels),
1932 negative_subscriber_auth = 'all')
1933 assert_equal(test_status, True)
1934
1935 def test_cord_subscriber_join_next_400channels(self):
1936 num_subscribers = 1
1937 num_channels = 400
1938 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1939 num_channels = num_channels,
1940 cbs = (self.tls_verify, self.dhcp_next_verify,
1941 self.igmp_next_verify, self.traffic_verify),
1942 port_list = self.generate_port_list(num_subscribers, num_channels),
1943 negative_subscriber_auth = 'all')
1944 assert_equal(test_status, True)
1945
1946 def test_cord_subscriber_join_next_800channels(self):
1947 num_subscribers = 1
1948 num_channels = 800
1949 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1950 num_channels = num_channels,
1951 cbs = (self.tls_verify, self.dhcp_next_verify,
1952 self.igmp_next_verify, self.traffic_verify),
1953 port_list = self.generate_port_list(num_subscribers, num_channels),
1954 negative_subscriber_auth = 'all')
1955 assert_equal(test_status, True)
1956
1957
1958 def test_cord_subscriber_join_next_1200channels(self):
1959 num_subscribers = 1
1960 num_channels = 1200
1961 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1962 num_channels = num_channels,
1963 cbs = (self.tls_verify, self.dhcp_next_verify,
1964 self.igmp_next_verify, self.traffic_verify),
1965 port_list = self.generate_port_list(num_subscribers, num_channels),
1966 negative_subscriber_auth = 'all')
1967 assert_equal(test_status, True)
1968
1969 def test_cord_subscriber_join_next_1500channels(self):
1970 num_subscribers = 1
1971 num_channels = 1500
1972 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1973 num_channels = num_channels,
1974 cbs = (self.tls_verify, self.dhcp_next_verify,
1975 self.igmp_next_verify, self.traffic_verify),
1976 port_list = self.generate_port_list(num_subscribers, num_channels),
1977 negative_subscriber_auth = 'all')
1978 assert_equal(test_status, True)
1979
1980 @nottest
1981 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1982 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1983 num_subscribers = 1000
1984 num_channels = 1
1985 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1986 num_channels = num_channels,
1987 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
1988 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1989 assert_equal(test_status, True)
1990
1991 @nottest
1992 def test_1k_cord_subscribers_join_recv_100channel(self):
1993 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
1994 num_subscribers = 1000
1995 num_channels = 100
1996 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1997 num_channels = num_channels,
1998 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1999 port_list = self.generate_port_list(num_subscribers, num_channels),
2000 negative_subscriber_auth = 'all')
2001 assert_equal(test_status, True)
2002
2003 @nottest
2004 def test_1k_cord_subscribers_join_jump_100channel(self):
2005 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
2006 num_subscribers = 1000
2007 num_channels = 100
2008 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2009 num_channels = num_channels,
2010 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2011 port_list = self.generate_port_list(num_subscribers, num_channels),
2012 negative_subscriber_auth = 'all')
2013 assert_equal(test_status, True)
2014
2015 @nottest
2016 def test_1k_cord_subscribers_join_next_100channel(self):
2017 ###"""Test 1k subscribers join next for 100 channels"""
2018 num_subscribers = 1000
2019 num_channels = 100
2020 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2021 num_channels = num_channels,
2022 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2023 port_list = self.generate_port_list(num_subscribers, num_channels),
2024 negative_subscriber_auth = 'all')
2025 assert_equal(test_status, True)
2026
2027 @nottest
2028 def test_1k_cord_subscribers_join_recv_400channel(self):
2029 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
2030 num_subscribers = 1000
2031 num_channels = 400
2032 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2033 num_channels = num_channels,
2034 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2035 port_list = self.generate_port_list(num_subscribers, num_channels),
2036 negative_subscriber_auth = 'all')
2037 assert_equal(test_status, True)
2038
2039 @nottest
2040 def test_1k_cord_subscribers_join_jump_400channel(self):
2041 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
2042 num_subscribers = 1000
2043 num_channels = 400
2044 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2045 num_channels = num_channels,
2046 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2047 port_list = self.generate_port_list(num_subscribers, num_channels),
2048 negative_subscriber_auth = 'all')
2049 assert_equal(test_status, True)
2050
2051 @nottest
2052 def test_1k_cord_subscribers_join_next_400channel(self):
2053 ###"""Test 1k subscribers join next for 400 channels"""
2054 num_subscribers = 1000
2055 num_channels = 400
2056 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2057 num_channels = num_channels,
2058 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2059 port_list = self.generate_port_list(num_subscribers, num_channels),
2060 negative_subscriber_auth = 'all')
2061 assert_equal(test_status, True)
2062
2063 @nottest
2064 def test_1k_cord_subscribers_join_recv_800channel(self):
2065 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2066 num_subscribers = 1000
2067 num_channels = 800
2068 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2069 num_channels = num_channels,
2070 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2071 port_list = self.generate_port_list(num_subscribers, num_channels),
2072 negative_subscriber_auth = 'all')
2073 assert_equal(test_status, True)
2074
2075 @nottest
2076 def test_1k_cord_subscribers_join_jump_800channel(self):
2077 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2078 num_subscribers = 1000
2079 num_channels = 800
2080 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2081 num_channels = num_channels,
2082 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2083 port_list = self.generate_port_list(num_subscribers, num_channels),
2084 negative_subscriber_auth = 'all')
2085 assert_equal(test_status, True)
2086
2087 @nottest
2088 def test_1k_cord_subscribers_join_next_800channel(self):
2089 ###"""Test 1k subscribers join next for 800 channels"""
2090 num_subscribers = 1000
2091 num_channels = 800
2092 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2093 num_channels = num_channels,
2094 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2095 port_list = self.generate_port_list(num_subscribers, num_channels),
2096 negative_subscriber_auth = 'all')
2097 assert_equal(test_status, True)
2098
2099 @nottest
2100 def test_1k_cord_subscribers_join_recv_1200channel(self):
2101 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2102 num_subscribers = 1000
2103 num_channels = 1200
2104 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2105 num_channels = num_channels,
2106 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2107 port_list = self.generate_port_list(num_subscribers, num_channels),
2108 negative_subscriber_auth = 'all')
2109 assert_equal(test_status, True)
2110
2111 @nottest
2112 def test_1k_cord_subscribers_join_jump_1200channel(self):
2113 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2114 num_subscribers = 1000
2115 num_channels = 1200
2116 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2117 num_channels = num_channels,
2118 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2119 port_list = self.generate_port_list(num_subscribers, num_channels),
2120 negative_subscriber_auth = 'all')
2121 assert_equal(test_status, True)
2122
2123 @nottest
2124 def test_1k_cord_subscribers_join_next_1200channel(self):
2125 ###"""Test 1k subscribers join next for 1200 channels"""
2126 num_subscribers = 1000
2127 num_channels = 1200
2128 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2129 num_channels = num_channels,
2130 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2131 port_list = self.generate_port_list(num_subscribers, num_channels),
2132 negative_subscriber_auth = 'all')
2133 assert_equal(test_status, True)
2134
2135 @nottest
2136 def test_1k_cord_subscribers_join_recv_1500channel(self):
2137 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2138 num_subscribers = 1000
2139 num_channels = 1500
2140 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2141 num_channels = num_channels,
2142 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2143 port_list = self.generate_port_list(num_subscribers, num_channels),
2144 negative_subscriber_auth = 'all')
2145 assert_equal(test_status, True)
2146
2147 @nottest
2148 def test_1k_cord_subscribers_join_jump_1500channel(self):
2149 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2150 num_subscribers = 1000
2151 num_channels = 1500
2152 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2153 num_channels = num_channels,
2154 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2155 port_list = self.generate_port_list(num_subscribers, num_channels),
2156 negative_subscriber_auth = 'all')
2157 assert_equal(test_status, True)
2158
2159 @nottest
2160 def test_1k_cord_subscribers_join_next_1500channel(self):
2161 ###"""Test 1k subscribers join next for 1500 channels"""
2162 num_subscribers = 1000
2163 num_channels = 1500
2164 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2165 num_channels = num_channels,
2166 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2167 port_list = self.generate_port_list(num_subscribers, num_channels),
2168 negative_subscriber_auth = 'all')
2169 assert_equal(test_status, True)
2170
2171 @nottest
2172 def test_5k_cord_subscribers_join_recv_100channel(self):
2173 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2174 num_subscribers = 5000
2175 num_channels = 100
2176 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2177 num_channels = num_channels,
2178 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2179 port_list = self.generate_port_list(num_subscribers, num_channels),
2180 negative_subscriber_auth = 'all')
2181 assert_equal(test_status, True)
2182
2183 @nottest
2184 def test_5k_cord_subscribers_join_jump_100channel(self):
2185 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2186 num_subscribers = 5000
2187 num_channels = 100
2188 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2189 num_channels = num_channels,
2190 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2191 port_list = self.generate_port_list(num_subscribers, num_channels),
2192 negative_subscriber_auth = 'all')
2193 assert_equal(test_status, True)
2194
2195 @nottest
2196 def test_5k_cord_subscribers_join_next_100channel(self):
2197 ###"""Test 5k subscribers join next for 100 channels"""
2198 num_subscribers = 5000
2199 num_channels = 100
2200 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2201 num_channels = num_channels,
2202 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2203 port_list = self.generate_port_list(num_subscribers, num_channels),
2204 negative_subscriber_auth = 'all')
2205 assert_equal(test_status, True)
2206
2207 @nottest
2208 def test_5k_cord_subscribers_join_recv_400channel(self):
2209 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2210 num_subscribers = 5000
2211 num_channels = 400
2212 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2213 num_channels = num_channels,
2214 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2215 port_list = self.generate_port_list(num_subscribers, num_channels),
2216 negative_subscriber_auth = 'all')
2217 assert_equal(test_status, True)
2218
2219 @nottest
2220 def test_5k_cord_subscribers_join_jump_400channel(self):
2221 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2222 num_subscribers = 5000
2223 num_channels = 400
2224 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2225 num_channels = num_channels,
2226 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2227 port_list = self.generate_port_list(num_subscribers, num_channels),
2228 negative_subscriber_auth = 'all')
2229 assert_equal(test_status, True)
2230
2231 @nottest
2232 def test_5k_cord_subscribers_join_next_400channel(self):
2233 ###"""Test 5k subscribers join next for 400 channels"""
2234 num_subscribers = 5000
2235 num_channels = 400
2236 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2237 num_channels = num_channels,
2238 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2239 port_list = self.generate_port_list(num_subscribers, num_channels),
2240 negative_subscriber_auth = 'all')
2241 assert_equal(test_status, True)
2242
2243 @nottest
2244 def test_5k_cord_subscribers_join_recv_800channel(self):
2245 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2246 num_subscribers = 5000
2247 num_channels = 800
2248 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2249 num_channels = num_channels,
2250 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2251 port_list = self.generate_port_list(num_subscribers, num_channels),
2252 negative_subscriber_auth = 'all')
2253 assert_equal(test_status, True)
2254
2255 @nottest
2256 def test_5k_cord_subscribers_join_jump_800channel(self):
2257 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2258 num_subscribers = 5000
2259 num_channels = 800
2260 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2261 num_channels = num_channels,
2262 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2263 port_list = self.generate_port_list(num_subscribers, num_channels),
2264 negative_subscriber_auth = 'all')
2265 assert_equal(test_status, True)
2266
2267 @nottest
2268 def test_5k_cord_subscribers_join_next_800channel(self):
2269 ###"""Test 5k subscribers join next for 800 channels"""
2270 num_subscribers = 5000
2271 num_channels = 800
2272 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2273 num_channels = num_channels,
2274 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2275 port_list = self.generate_port_list(num_subscribers, num_channels),
2276 negative_subscriber_auth = 'all')
2277 assert_equal(test_status, True)
2278
2279 @nottest
2280 def test_5k_cord_subscribers_join_recv_1200channel(self):
2281 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2282 num_subscribers = 5000
2283 num_channels = 1200
2284 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2285 num_channels = num_channels,
2286 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2287 port_list = self.generate_port_list(num_subscribers, num_channels),
2288 negative_subscriber_auth = 'all')
2289 assert_equal(test_status, True)
2290
2291 @nottest
2292 def test_5k_cord_subscribers_join_jump_1200channel(self):
2293 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2294 num_subscribers = 5000
2295 num_channels = 1200
2296 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2297 num_channels = num_channels,
2298 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2299 port_list = self.generate_port_list(num_subscribers, num_channels),
2300 negative_subscriber_auth = 'all')
2301 assert_equal(test_status, True)
2302
2303 @nottest
2304 def test_5k_cord_subscribers_join_next_1200channel(self):
2305 ###"""Test 5k subscribers join next for 1200 channels"""
2306 num_subscribers = 5000
2307 num_channels = 1200
2308 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2309 num_channels = num_channels,
2310 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2311 port_list = self.generate_port_list(num_subscribers, num_channels),
2312 negative_subscriber_auth = 'all')
2313 assert_equal(test_status, True)
2314
2315 @nottest
2316 def test_5k_cord_subscribers_join_recv_1500channel(self):
2317 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2318 num_subscribers = 5000
2319 num_channels = 1500
2320 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2321 num_channels = num_channels,
2322 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2323 port_list = self.generate_port_list(num_subscribers, num_channels),
2324 negative_subscriber_auth = 'all')
2325 assert_equal(test_status, True)
2326
2327 @nottest
2328 def test_5k_cord_subscribers_join_jump_1500channel(self):
2329 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2330 num_subscribers = 5000
2331 num_channels = 1500
2332 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2333 num_channels = num_channels,
2334 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2335 port_list = self.generate_port_list(num_subscribers, num_channels),
2336 negative_subscriber_auth = 'all')
2337 assert_equal(test_status, True)
2338
2339 @nottest
2340 def test_5k_cord_subscribers_join_next_1500channel(self):
2341 ###"""Test 5k subscribers join next for 1500 channels"""
2342 num_subscribers = 5000
2343 num_channels = 1500
2344 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2345 num_channels = num_channels,
2346 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2347 port_list = self.generate_port_list(num_subscribers, num_channels),
2348 negative_subscriber_auth = 'all')
2349 assert_equal(test_status, True)
2350
2351 @nottest
2352 def test_10k_cord_subscribers_join_recv_100channel(self):
2353 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2354 num_subscribers = 10000
2355 num_channels = 100
2356 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2357 num_channels = num_channels,
2358 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2359 port_list = self.generate_port_list(num_subscribers, num_channels),
2360 negative_subscriber_auth = 'all')
2361 assert_equal(test_status, True)
2362
2363 @nottest
2364 def test_10k_cord_subscribers_join_jump_100channel(self):
2365 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2366 num_subscribers = 10000
2367 num_channels = 100
2368 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2369 num_channels = num_channels,
2370 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2371 port_list = self.generate_port_list(num_subscribers, num_channels),
2372 negative_subscriber_auth = 'all')
2373 assert_equal(test_status, True)
2374
2375 @nottest
2376 def test_10k_cord_subscribers_join_next_100channel(self):
2377 ###"""Test 10k subscribers join next for 100 channels"""
2378 num_subscribers = 10000
2379 num_channels = 100
2380 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2381 num_channels = num_channels,
2382 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2383 port_list = self.generate_port_list(num_subscribers, num_channels),
2384 negative_subscriber_auth = 'all')
2385 assert_equal(test_status, True)
2386
2387 @nottest
2388 def test_100k_cord_subscribers_join_recv_100channel(self):
2389 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2390 num_subscribers = 100000
2391 num_channels = 100
2392 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2393 num_channels = num_channels,
2394 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2395 port_list = self.generate_port_list(num_subscribers, num_channels),
2396 negative_subscriber_auth = 'all')
2397 assert_equal(test_status, True)
2398
2399 @nottest
2400 def test_100k_cord_subscribers_join_jump_100channel(self):
2401 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2402 num_subscribers = 100000
2403 num_channels = 100
2404 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2405 num_channels = num_channels,
2406 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2407 port_list = self.generate_port_list(num_subscribers, num_channels),
2408 negative_subscriber_auth = 'all')
2409 assert_equal(test_status, True)
2410
2411 @nottest
2412 def test_100k_cord_subscribers_join_next_100channel(self):
2413 ###"""Test 100k subscribers join next for 100 channels"""
2414 num_subscribers = 100000
2415 num_channels = 100
2416 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2417 num_channels = num_channels,
2418 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2419 port_list = self.generate_port_list(num_subscribers, num_channels),
2420 negative_subscriber_auth = 'all')
2421 assert_equal(test_status, True)
2422
2423 @nottest
2424 def test_10k_cord_subscribers_join_recv_400channel(self):
2425 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2426 num_subscribers = 10000
2427 num_channels = 400
2428 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2429 num_channels = num_channels,
2430 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2431 port_list = self.generate_port_list(num_subscribers, num_channels),
2432 negative_subscriber_auth = 'all')
2433 assert_equal(test_status, True)
2434
2435 @nottest
2436 def test_10k_cord_subscribers_join_jump_400channel(self):
2437 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2438 num_subscribers = 10000
2439 num_channels = 400
2440 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2441 num_channels = num_channels,
2442 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2443 port_list = self.generate_port_list(num_subscribers, num_channels),
2444 negative_subscriber_auth = 'all')
2445 assert_equal(test_status, True)
2446
2447 @nottest
2448 def test_10k_cord_subscribers_join_next_400channel(self):
2449 ###"""Test 10k subscribers join next for 400 channels"""
2450 num_subscribers = 10000
2451 num_channels = 400
2452 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2453 num_channels = num_channels,
2454 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2455 port_list = self.generate_port_list(num_subscribers, num_channels),
2456 negative_subscriber_auth = 'all')
2457 assert_equal(test_status, True)
2458
2459 @nottest
2460 def test_10k_cord_subscribers_join_recv_800channel(self):
2461 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2462 num_subscribers = 10000
2463 num_channels = 800
2464 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2465 num_channels = num_channels,
2466 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2467 port_list = self.generate_port_list(num_subscribers, num_channels),
2468 negative_subscriber_auth = 'all')
2469 assert_equal(test_status, True)
2470
2471 @nottest
2472 def test_10k_cord_subscribers_join_jump_800channel(self):
2473 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2474 num_subscribers = 10000
2475 num_channels = 800
2476 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2477 num_channels = num_channels,
2478 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2479 port_list = self.generate_port_list(num_subscribers, num_channels),
2480 negative_subscriber_auth = 'all')
2481 assert_equal(test_status, True)
2482
2483 @nottest
2484 def test_10k_cord_subscribers_join_next_800channel(self):
2485 ###"""Test 10k subscribers join next for 800 channels"""
2486 num_subscribers = 10000
2487 num_channels = 800
2488 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2489 num_channels = num_channels,
2490 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2491 port_list = self.generate_port_list(num_subscribers, num_channels),
2492 negative_subscriber_auth = 'all')
2493 assert_equal(test_status, True)
2494
2495 @nottest
2496 def test_10k_cord_subscribers_join_recv_1200channel(self):
2497 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2498 num_subscribers = 10000
2499 num_channels = 1200
2500 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2501 num_channels = num_channels,
2502 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2503 port_list = self.generate_port_list(num_subscribers, num_channels),
2504 negative_subscriber_auth = 'all')
2505 assert_equal(test_status, True)
2506
2507 @nottest
2508 def test_10k_cord_subscribers_join_jump_1200channel(self):
2509 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2510 num_subscribers = 10000
2511 num_channels = 1200
2512 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2513 num_channels = num_channels,
2514 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2515 port_list = self.generate_port_list(num_subscribers, num_channels),
2516 negative_subscriber_auth = 'all')
2517 assert_equal(test_status, True)
2518
2519 @nottest
2520 def test_10k_cord_subscribers_join_next_1200channel(self):
2521 ###"""Test 10k subscribers join next for 1200 channels"""
2522 num_subscribers = 10000
2523 num_channels = 1200
2524 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2525 num_channels = num_channels,
2526 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2527 port_list = self.generate_port_list(num_subscribers, num_channels),
2528 negative_subscriber_auth = 'all')
2529 assert_equal(test_status, True)
2530
2531 @nottest
2532 def test_10k_cord_subscribers_join_recv_1500channel(self):
2533 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2534 num_subscribers = 10000
2535 num_channels = 1500
2536 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2537 num_channels = num_channels,
2538 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2539 port_list = self.generate_port_list(num_subscribers, num_channels),
2540 negative_subscriber_auth = 'all')
2541 assert_equal(test_status, True)
2542
2543 @nottest
2544 def test_10k_cord_subscribers_join_jump_1500channel(self):
2545 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2546 num_subscribers = 10000
2547 num_channels = 1500
2548 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2549 num_channels = num_channels,
2550 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2551 port_list = self.generate_port_list(num_subscribers, num_channels),
2552 negative_subscriber_auth = 'all')
2553 assert_equal(test_status, True)
2554
2555 @nottest
2556 def test_10k_cord_subscribers_join_next_1500channel(self):
2557 ###"""Test 10k subscribers join next for 1500 channels"""
2558 num_subscribers = 10000
2559 num_channels = 1500
2560 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2561 num_channels = num_channels,
2562 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2563 port_list = self.generate_port_list(num_subscribers, num_channels),
2564 negative_subscriber_auth = 'all')
2565 assert_equal(test_status, True)
2566
2567 @nottest
2568 def test_100k_cord_subscribers_join_recv_1500channel(self):
2569 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2570 num_subscribers = 100000
2571 num_channels = 1500
2572 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2573 num_channels = num_channels,
2574 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2575 port_list = self.generate_port_list(num_subscribers, num_channels),
2576 negative_subscriber_auth = 'all')
2577 assert_equal(test_status, True)
2578
2579 @nottest
2580 def test_100k_cord_subscribers_join_jump_1500channel(self):
2581 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2582 num_subscribers = 100000
2583 num_channels = 1500
2584 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2585 num_channels = num_channels,
2586 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2587 port_list = self.generate_port_list(num_subscribers, num_channels),
2588 negative_subscriber_auth = 'all')
2589 assert_equal(test_status, True)
2590
2591 @nottest
2592 def test_100k_cord_subscribers_join_next_1500channel(self):
2593 ###"""Test 10k subscribers join next for 1500 channels"""
2594 num_subscribers = 100000
2595 num_channels = 1500
2596 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2597 num_channels = num_channels,
2598 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2599 port_list = self.generate_port_list(num_subscribers, num_channels),
2600 negative_subscriber_auth = 'all')
2601 assert_equal(test_status, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002602
2603
2604
2605 def remove_olt(self):
A.R Karthick4c4d0492017-05-26 19:23:05 -07002606 OnosCtrl.uninstall_app(self.olt_app_file)
2607
2608 def config_olt(self, switch_map):
2609 controller = get_controller()
2610 OnosCtrl.install_app(self.olt_app_file)
2611 time.sleep(5)
2612 auth = ('karaf', 'karaf')
2613 #configure subscriber for every port on all the voltha devices
2614 for device, device_map in switch_map.iteritems():
2615 uni_ports = device_map['ports']
2616 uplink_vlan = device_map['uplink_vlan']
2617 for port in uni_ports:
2618 vlan = port
2619 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}/{}'.format(controller,
2620 device,
2621 port,
2622 vlan)
2623 resp = requests.post(rest_url, auth = auth)
2624 assert_equal(resp.ok, True)
2625
2626 def test_cord_subscriber_voltha(self):
2627 """Test subscriber join next for channel surfing"""
2628 if self.VOLTHA_HOST is None:
2629 log_test.info('Skipping test as no voltha host')
2630 return
2631 voltha = VolthaCtrl(self.VOLTHA_HOST,
2632 rest_port = self.VOLTHA_REST_PORT,
2633 uplink_vlan_map = self.VOLTHA_UPLINK_VLAN_MAP)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002634 if self.VOLTHA_OLT_TYPE.startswith('ponsim'):
2635 ponsim_address = '{}:50060'.format(self.VOLTHA_HOST)
2636 log_test.info('Enabling ponsim olt')
2637 status = voltha.enable_device(self.VOLTHA_OLT_TYPE, address = ponsim_address)
2638 else:
2639 log_test.info('Enabling OLT instance for %s with mac %s' %(self.VOLTHA_OLT_TYPE, self.VOLTHA_OLT_MAC))
2640 status = voltha.enable_device(self.VOLTHA_OLT_TYPE, self.VOLTHA_OLT_MAC)
2641
A.R Karthick4c4d0492017-05-26 19:23:05 -07002642 assert_equal(status, True)
2643 time.sleep(10)
2644 switch_map = voltha.config(fake = self.VOLTHA_CONFIG_FAKE)
2645 if not switch_map:
2646 log_test.info('No voltha devices found')
2647 return
2648 log_test.info('Adding subscribers through OLT app')
2649 self.config_olt(switch_map)
2650 time.sleep(5)
2651 self.num_subscribers = 1
2652 self.num_channels = 1
2653 services = ('TLS', 'IGMP')
2654 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
2655 num_channels = self.num_channels,
2656 cbs = (self.tls_verify, self.dhcp_next_verify,
2657 self.voltha_igmp_next_verify, self.traffic_verify),
2658 port_list = self.generate_port_list(self.num_subscribers,
2659 self.num_channels),
2660 services = services)
2661 assert_equal(test_status, True)