blob: 453a505c1311d069a02a0f682c991a74c0444efd [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 Karthick8a507cf2017-06-02 18:44:49 -070038from CordTestServer import cord_test_onos_restart, cord_test_shell, cord_test_radius_restart
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 Karthick8a507cf2017-06-02 18:44:49 -0700212 olt_app_name = 'org.onosproject.olt'
A R Karthickb7e80902016-05-17 09:38:31 -0700213 onos_config_path = os.path.join(test_path, '..', 'setup/onos-config')
A.R Karthick5968e0d2017-05-16 14:50:46 -0700214 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 -0700215 cpqd_path = os.path.join(test_path, '..', 'setup')
216 ovs_path = cpqd_path
A R Karthick65c4d722016-07-18 14:20:17 -0700217 test_services = ('IGMP', 'TRAFFIC')
A R Karthick338268f2016-06-21 17:12:13 -0700218 num_joins = 0
219 num_subscribers = 0
A.R Karthick517f7812017-05-18 11:22:46 -0700220 leave_flag = True
A R Karthick338268f2016-06-21 17:12:13 -0700221 num_channels = 0
222 recv_timeout = False
A R Karthick4e0c0912016-08-17 16:57:42 -0700223 onos_restartable = bool(int(os.getenv('ONOS_RESTART', 0)))
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700224 INTF_TX_DEFAULT = 'veth2'
225 INTF_RX_DEFAULT = 'veth0'
226 SUBSCRIBER_TIMEOUT = 300
227
228 CLIENT_CERT = """-----BEGIN CERTIFICATE-----
229MIICuDCCAiGgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
230CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
231IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
232RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwNjA2MjExMjI3WhcN
233MTcwNjAxMjExMjI3WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
234BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
235hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
236gYEAwvXiSzb9LZ6c7uNziUfKvoHO7wu/uiFC5YUpXbmVGuGZizbVrny0xnR85Dfe
237+9R4diansfDhIhzOUl1XjN3YDeSS9OeF5YWNNE8XDhlz2d3rVzaN6hIhdotBkUjg
238rUewjTg5OFR31QEyG3v8xR3CLgiE9xQELjZbSA07pD79zuUCAwEAAaNPME0wEwYD
239VR0lBAwwCgYIKwYBBQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5l
240eGFtcGxlLmNvbS9leGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOBgQDAjkrY
2416tDChmKbvr8w6Du/t8vHjTCoCIocHTN0qzWOeb1YsAGX89+TrWIuO1dFyYd+Z0KC
242PDKB5j/ygml9Na+AklSYAVJIjvlzXKZrOaPmhZqDufi+rXWti/utVqY4VMW2+HKC
243nXp37qWeuFLGyR1519Y1d6F/5XzqmvbwURuEug==
244-----END CERTIFICATE-----"""
245
246 CLIENT_CERT_INVALID = '''-----BEGIN CERTIFICATE-----
247MIIDvTCCAqWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
248CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
249IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
250RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwMzExMTg1MzM2WhcN
251MTcwMzA2MTg1MzM2WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
252BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
253hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
254AQoCggEBAOxemcBsPn9tZsCa5o2JA6sQDC7A6JgCNXXl2VFzKLNNvB9PS6D7ZBsQ
2555An0zEDMNzi51q7lnrYg1XyiE4S8FzMGAFr94RlGMQJUbRD9V/oqszMX4k++iAOK
256tIA1gr3x7Zi+0tkjVSVzXTmgNnhChAamdMsjYUG5+CY9WAicXyy+VEV3zTphZZDR
257OjcjEp4m/TSXVPYPgYDXI40YZKX5BdvqykWtT/tIgZb48RS1NPyN/XkCYzl3bv21
258qx7Mc0fcEbsJBIIRYTUkfxnsilcnmLxSYO+p+DZ9uBLBzcQt+4Rd5pLSfi21WM39
2592Z2oOi3vs/OYAPAqgmi2JWOv3mePa/8CAwEAAaNPME0wEwYDVR0lBAwwCgYIKwYB
260BQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5leGFtcGxlLmNvbS9l
261eGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOCAQEALBzMPDTIB6sLyPl0T6JV
262MjOkyldAVhXWiQsTjaGQGJUUe1cmUJyZbUZEc13MygXMPOM4x7z6VpXGuq1c/Vxn
263VzQ2fNnbJcIAHi/7G8W5/SQfPesIVDsHTEc4ZspPi5jlS/MVX3HOC+BDbOjdbwqP
264RX0JEr+uOyhjO+lRxG8ilMRACoBUbw1eDuVDoEBgErSUC44pq5ioDw2xelc+Y6hQ
265dmtYwfY0DbvwxHtA495frLyPcastDiT/zre7NL51MyUDPjjYjghNQEwvu66IKbQ3
266T1tJBrgI7/WI+dqhKBFolKGKTDWIHsZXQvZ1snGu/FRYzg1l+R/jT8cRB9BDwhUt
267yg==
268-----END CERTIFICATE-----'''
269
A.R Karthick4c4d0492017-05-26 19:23:05 -0700270 VOLTHA_HOST = None
271 VOLTHA_REST_PORT = 8881
272 VOLTHA_UPLINK_VLAN_MAP = { 'of:0000000000000001' : '222' }
273 VOLTHA_IGMP_ITERATIONS = 100
274 VOLTHA_CONFIG_FAKE = True
275 VOLTHA_OLT_TYPE = 'simulated_olt'
276 VOLTHA_OLT_MAC = '00:0c:e2:31:12:00'
277 VOLTHA_ENABLED = bool(int(os.getenv('VOLTHA_ENABLED', 0)))
278
A R Karthickb7e80902016-05-17 09:38:31 -0700279 @classmethod
A R Karthickb608d402017-06-02 11:48:41 -0700280 def update_apps_version(cls):
281 version = Onos.getVersion()
282 major = int(version.split('.')[0])
283 minor = int(version.split('.')[1])
284 cordigmp_app_version = '2.0-SNAPSHOT'
285 olt_app_version = '1.2-SNAPSHOT'
286 if major > 1:
287 cordigmp_app_version = '3.0-SNAPSHOT'
288 olt_app_version = '2.0-SNAPSHOT'
289 elif major == 1:
290 if minor > 10:
291 cordigmp_app_version = '3.0-SNAPSHOT'
292 olt_app_version = '2.0-SNAPSHOT'
293 elif minor <= 8:
294 olt_app_version = '1.1-SNAPSHOT'
295 cls.app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-{}.oar'.format(cordigmp_app_version))
296 cls.table_app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-multitable-{}.oar'.format(cordigmp_app_version))
297 cls.olt_app_file = os.path.join(cls.test_path, '..', 'apps/olt-app-{}.oar'.format(olt_app_version))
298
299 @classmethod
A R Karthickd44cea12016-07-20 12:16:41 -0700300 def load_device_id(cls):
A R Karthickb03cecd2016-07-27 10:27:55 -0700301 '''Configure the device id'''
302 did = OnosCtrl.get_device_id()
A R Karthickd44cea12016-07-20 12:16:41 -0700303 #Set the default config
304 cls.device_id = did
305 cls.device_dict = { "devices" : {
306 "{}".format(did) : {
307 "basic" : {
308 "driver" : "pmc-olt"
309 }
310 }
311 },
312 }
313 return did
314
315 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700316 def setUpClass(cls):
317 '''Load the OLT config and activate relevant apps'''
A R Karthickb608d402017-06-02 11:48:41 -0700318 cls.update_apps_version()
A R Karthick0f6b6842016-12-06 17:17:44 -0800319 dids = OnosCtrl.get_device_ids()
320 device_map = {}
321 for did in dids:
322 device_map[did] = { 'basic' : { 'driver' : 'pmc-olt' } }
323 network_cfg = {}
324 network_cfg = { 'devices' : device_map }
A R Karthick4b72d4b2016-06-15 11:09:17 -0700325 ## Restart ONOS with cpqd driver config for OVS
326 cls.start_onos(network_cfg = network_cfg)
A R Karthickb7e80902016-05-17 09:38:31 -0700327 cls.install_app_table()
A R Karthickb7e80902016-05-17 09:38:31 -0700328 cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700329 if cls.VOLTHA_ENABLED is False:
330 OnosCtrl.cord_olt_config(cls.olt)
A R Karthickb03cecd2016-07-27 10:27:55 -0700331 cls.port_map, cls.port_list = cls.olt.olt_port_map()
A R Karthick0f6b6842016-12-06 17:17:44 -0800332 cls.switches = cls.port_map['switches']
333 cls.num_ports = cls.port_map['num_ports']
334 if cls.num_ports > 1:
335 cls.num_ports -= 1 ##account for the tx port
A.R Karthickaa859b22017-06-12 14:50:35 -0700336 cls.activate_apps(cls.apps + cls.olt_apps, deactivate = True)
A R Karthickb7e80902016-05-17 09:38:31 -0700337
338 @classmethod
339 def tearDownClass(cls):
340 '''Deactivate the olt apps and restart OVS back'''
341 apps = cls.olt_apps + ( cls.table_app,)
342 for app in apps:
343 onos_ctrl = OnosCtrl(app)
344 onos_ctrl.deactivate()
A R Karthicke0f33fa2016-06-22 13:36:02 -0700345 cls.start_onos(network_cfg = {})
A R Karthicke5939f02016-11-16 12:08:07 -0800346 cls.install_app_igmp()
A R Karthickb7e80902016-05-17 09:38:31 -0700347
348 @classmethod
A.R Karthickaa859b22017-06-12 14:50:35 -0700349 def activate_apps(cls, apps, deactivate = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700350 for app in apps:
351 onos_ctrl = OnosCtrl(app)
A.R Karthickaa859b22017-06-12 14:50:35 -0700352 if deactivate is True:
353 onos_ctrl.deactivate()
354 time.sleep(2)
A R Karthickb7e80902016-05-17 09:38:31 -0700355 status, _ = onos_ctrl.activate()
356 assert_equal(status, True)
357 time.sleep(2)
358
359 @classmethod
360 def install_app_table(cls):
361 ##Uninstall the existing app if any
362 OnosCtrl.uninstall_app(cls.table_app)
363 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700364 log_test.info('Installing the multi table app %s for subscriber test' %(cls.table_app_file))
A R Karthickb7e80902016-05-17 09:38:31 -0700365 OnosCtrl.install_app(cls.table_app_file)
366 time.sleep(3)
A R Karthickedab01c2016-09-08 14:05:44 -0700367 #onos_ctrl = OnosCtrl(cls.vtn_app)
368 #onos_ctrl.deactivate()
A R Karthickb7e80902016-05-17 09:38:31 -0700369
370 @classmethod
A R Karthicke5939f02016-11-16 12:08:07 -0800371 def install_app_igmp(cls):
A R Karthickb7e80902016-05-17 09:38:31 -0700372 ##Uninstall the table app on class exit
373 OnosCtrl.uninstall_app(cls.table_app)
374 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700375 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 -0700376 OnosCtrl.install_app(cls.app_file)
A R Karthickedab01c2016-09-08 14:05:44 -0700377 #onos_ctrl = OnosCtrl(cls.vtn_app)
378 #onos_ctrl.activate()
A R Karthickb7e80902016-05-17 09:38:31 -0700379
380 @classmethod
381 def start_onos(cls, network_cfg = None):
A R Karthicka478df42016-07-27 16:51:08 -0700382 if cls.onos_restartable is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700383 log_test.info('ONOS restart is disabled. Skipping ONOS restart')
A R Karthick65c4d722016-07-18 14:20:17 -0700384 return
A.R Karthick4c4d0492017-05-26 19:23:05 -0700385 if cls.VOLTHA_ENABLED is True:
386 log_test.info('ONOS restart skipped as VOLTHA is running')
387 return
A R Karthickb7e80902016-05-17 09:38:31 -0700388 if network_cfg is None:
A R Karthick4b72d4b2016-06-15 11:09:17 -0700389 network_cfg = cls.device_dict
A R Karthickb7e80902016-05-17 09:38:31 -0700390
391 if type(network_cfg) is tuple:
392 res = []
393 for v in network_cfg:
394 res += v.items()
395 config = dict(res)
396 else:
397 config = network_cfg
A R Karthick76a497a2017-04-12 10:59:39 -0700398 log_test.info('Restarting ONOS with new network configuration')
A R Karthick338268f2016-06-21 17:12:13 -0700399 return cord_test_onos_restart(config = config)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700400
401 @classmethod
402 def remove_onos_config(cls):
403 try:
404 os.unlink('{}/network-cfg.json'.format(cls.onos_config_path))
405 except: pass
A R Karthickb7e80902016-05-17 09:38:31 -0700406
407 @classmethod
408 def start_cpqd(cls, mac = '00:11:22:33:44:55'):
409 dpid = mac.replace(':', '')
410 cpqd_file = os.sep.join( (cls.cpqd_path, 'cpqd.sh') )
411 cpqd_cmd = '{} {}'.format(cpqd_file, dpid)
412 ret = os.system(cpqd_cmd)
413 assert_equal(ret, 0)
414 time.sleep(10)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700415 device_id = 'of:{}{}'.format('0'*4, dpid)
416 return device_id
A R Karthickb7e80902016-05-17 09:38:31 -0700417
418 @classmethod
419 def start_ovs(cls):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700420 ovs_file = os.sep.join( (cls.ovs_path, 'of-bridge.sh') )
A R Karthickb7e80902016-05-17 09:38:31 -0700421 ret = os.system(ovs_file)
422 assert_equal(ret, 0)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700423 time.sleep(30)
A R Karthickb7e80902016-05-17 09:38:31 -0700424
A R Karthicka013a272016-08-16 16:40:19 -0700425 @classmethod
426 def ovs_cleanup(cls):
427 ##For every test case, delete all the OVS groups
428 cmd = 'ovs-ofctl del-groups br-int -OOpenFlow11 >/dev/null 2>&1'
A R Karthicka013a272016-08-16 16:40:19 -0700429 try:
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700430 cord_test_shell(cmd)
431 ##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 -0700432 os.system(cmd)
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700433 finally:
434 return
A R Karthicka013a272016-08-16 16:40:19 -0700435
A R Karthickb7e80902016-05-17 09:38:31 -0700436 def onos_aaa_load(self):
437 if self.aaa_loaded:
438 return
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700439 aaa_dict = {'apps' : { 'org.opencord.aaa' : { 'AAA' : { 'radiusSecret': 'radius_password',
440 'radiusIp': '172.17.0.2' } } } }
A R Karthickb7e80902016-05-17 09:38:31 -0700441 radius_ip = os.getenv('ONOS_AAA_IP') or '172.17.0.2'
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700442 aaa_dict['apps']['org.opencord.aaa']['AAA']['radiusIp'] = radius_ip
443 self.onos_load_config('org.opencord.aaa', aaa_dict)
A R Karthickb7e80902016-05-17 09:38:31 -0700444 self.aaa_loaded = True
445
446 def onos_dhcp_table_load(self, config = None):
447 dhcp_dict = {'apps' : { 'org.onosproject.dhcp' : { 'dhcp' : copy.copy(self.dhcp_server_config) } } }
448 dhcp_config = dhcp_dict['apps']['org.onosproject.dhcp']['dhcp']
449 if config:
450 for k in config.keys():
451 if dhcp_config.has_key(k):
452 dhcp_config[k] = config[k]
453 self.onos_load_config('org.onosproject.dhcp', dhcp_dict)
454
455 def onos_load_config(self, app, config):
456 status, code = OnosCtrl.config(config)
457 if status is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700458 log_test.info('JSON config request for app %s returned status %d' %(app, code))
A R Karthickb7e80902016-05-17 09:38:31 -0700459 assert_equal(status, True)
460 time.sleep(2)
461
462 def dhcp_sndrcv(self, dhcp, update_seed = False):
463 cip, sip = dhcp.discover(update_seed = update_seed)
464 assert_not_equal(cip, None)
465 assert_not_equal(sip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700466 log_test.info('Got dhcp client IP %s from server %s for mac %s' %
A R Karthickb7e80902016-05-17 09:38:31 -0700467 (cip, sip, dhcp.get_mac(cip)[0]))
468 return cip,sip
469
470 def dhcp_request(self, subscriber, seed_ip = '10.10.10.1', update_seed = False):
471 config = {'startip':'10.10.10.20', 'endip':'10.10.10.200',
472 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
473 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
474 self.onos_dhcp_table_load(config)
475 dhcp = DHCPTest(seed_ip = seed_ip, iface = subscriber.iface)
476 cip, sip = self.dhcp_sndrcv(dhcp, update_seed = update_seed)
477 return cip, sip
478
479 def recv_channel_cb(self, pkt):
480 ##First verify that we have received the packet for the joined instance
481 chan = self.subscriber.caddr(pkt[IP].dst)
482 assert_equal(chan in self.subscriber.join_map.keys(), True)
483 recv_time = monotonic.monotonic() * 1000000
484 join_time = self.subscriber.join_map[chan][self.subscriber.STATS_JOIN].start
485 delta = recv_time - join_time
486 self.subscriber.join_rx_stats.update(packets=1, t = delta, usecs = True)
487 self.subscriber.channel_update(chan, self.subscriber.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700488 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 -0700489 self.test_status = True
490
A R Karthick65c4d722016-07-18 14:20:17 -0700491 def traffic_verify(self, subscriber):
492 if subscriber.has_service('TRAFFIC'):
493 url = 'http://www.google.com'
494 resp = requests.get(url)
495 self.test_status = resp.ok
496 if resp.ok == False:
A R Karthick76a497a2017-04-12 10:59:39 -0700497 log_test.info('Subscriber %s failed get from url %s with status code %d'
A R Karthick65c4d722016-07-18 14:20:17 -0700498 %(subscriber.name, url, resp.status_code))
499 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700500 log_test.info('GET request from %s succeeded for subscriber %s'
A R Karthick65c4d722016-07-18 14:20:17 -0700501 %(url, subscriber.name))
A R Karthicka013a272016-08-16 16:40:19 -0700502 return self.test_status
A R Karthick65c4d722016-07-18 14:20:17 -0700503
A R Karthickb7e80902016-05-17 09:38:31 -0700504 def tls_verify(self, subscriber):
A.R Karthick8a507cf2017-06-02 18:44:49 -0700505 def tls_fail_cb():
506 log_test.info('TLS verification failed')
A R Karthickb7e80902016-05-17 09:38:31 -0700507 if subscriber.has_service('TLS'):
A.R Karthickaa859b22017-06-12 14:50:35 -0700508 #OnosCtrl('org.opencord.aaa').deactivate()
509 #time.sleep(2)
510 #OnosCtrl('org.opencord.aaa').activate()
511 #time.sleep(5)
A.R Karthick8a507cf2017-06-02 18:44:49 -0700512 tls = TLSAuthTest(fail_cb = tls_fail_cb, intf = subscriber.rx_intf)
A R Karthick76a497a2017-04-12 10:59:39 -0700513 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700514 tls.runTest()
A.R Karthick8a507cf2017-06-02 18:44:49 -0700515 assert_equal(tls.failTest, False)
A R Karthickb7e80902016-05-17 09:38:31 -0700516 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700517 return self.test_status
518 else:
519 self.test_status = True
520 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700521
522 def dhcp_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700523 if subscriber.has_service('DHCP'):
524 cip, sip = self.dhcp_request(subscriber, update_seed = True)
A R Karthick76a497a2017-04-12 10:59:39 -0700525 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700526 subscriber.src_list = [cip]
527 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700528 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700529 else:
530 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
531 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700532 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700533
534 def dhcp_jump_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700535 if subscriber.has_service('DHCP'):
536 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.200.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700537 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700538 subscriber.src_list = [cip]
539 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700540 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700541 else:
542 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
543 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700544 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700545
546 def dhcp_next_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700547 if subscriber.has_service('DHCP'):
548 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.150.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700549 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700550 subscriber.src_list = [cip]
551 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700552 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700553 else:
554 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
555 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700556 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700557
558 def igmp_verify(self, subscriber):
559 chan = 0
560 if subscriber.has_service('IGMP'):
A R Karthick338268f2016-06-21 17:12:13 -0700561 ##We wait for all the subscribers to join before triggering leaves
562 if subscriber.rx_port > 1:
563 time.sleep(5)
564 subscriber.channel_join(chan, delay = 0)
565 self.num_joins += 1
566 while self.num_joins < self.num_subscribers:
567 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700568 log_test.info('All subscribers have joined the channel')
A R Karthick338268f2016-06-21 17:12:13 -0700569 for i in range(10):
570 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
A R Karthick76a497a2017-04-12 10:59:39 -0700571 log_test.info('Leaving channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700572 subscriber.channel_leave(chan)
A R Karthick338268f2016-06-21 17:12:13 -0700573 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700574 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 -0700575 #Should not receive packets for this subscriber
576 self.recv_timeout = True
577 subscriber.recv_timeout = True
578 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
579 subscriber.recv_timeout = False
580 self.recv_timeout = False
A R Karthick76a497a2017-04-12 10:59:39 -0700581 log_test.info('Joining channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthick338268f2016-06-21 17:12:13 -0700582 subscriber.channel_join(chan, delay = 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700583 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700584 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700585
586 def igmp_jump_verify(self, subscriber):
587 if subscriber.has_service('IGMP'):
588 for i in xrange(subscriber.num):
A R Karthick76a497a2017-04-12 10:59:39 -0700589 log_test.info('Subscriber %s jumping channel' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700590 chan = subscriber.channel_jump(delay=0)
591 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 1)
A R Karthick76a497a2017-04-12 10:59:39 -0700592 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700593 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700594 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 -0700595 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700596 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700597
598 def igmp_next_verify(self, subscriber):
599 if subscriber.has_service('IGMP'):
600 for i in xrange(subscriber.num):
601 if i:
A.R Karthick517f7812017-05-18 11:22:46 -0700602 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700603 else:
604 chan = subscriber.channel_join(i, delay=0)
A R Karthick76a497a2017-04-12 10:59:39 -0700605 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700606 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
A R Karthick76a497a2017-04-12 10:59:39 -0700607 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700608 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700609 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 -0700610 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700611 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700612
A.R Karthick4c4d0492017-05-26 19:23:05 -0700613 def voltha_igmp_next_verify(self, subscriber):
614 if subscriber.has_service('IGMP'):
615 for c in xrange(self.VOLTHA_IGMP_ITERATIONS):
616 for i in xrange(subscriber.num):
617 if i:
618 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
619 time.sleep(0.2)
620 else:
621 chan = subscriber.channel_join(i, delay=0)
622 time.sleep(0.2)
A.R Karthick56e59432017-06-06 18:05:46 -0700623 if subscriber.num == 1:
624 subscriber.channel_leave(chan)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700625 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
626 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
627 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
628 self.test_status = True
629 return self.test_status
630
A R Karthick31f1f342017-05-19 13:55:10 -0700631 def igmp_leave_verify(self, subscriber):
632 if subscriber.has_service('IGMP'):
633 for chan in xrange(subscriber.num):
A R Karthick78d1f492017-05-19 14:24:17 -0700634 subscriber.channel_leave(chan, force = True)
A R Karthick31f1f342017-05-19 13:55:10 -0700635 time.sleep(2)
636 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
637 #self.recv_timeout = True
638 #subscriber.recv_timeout = True
639 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
640 #self.recv_timeout = False
641 #subscriber.recv_timeout = False
642 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
643 #time.sleep(1)
644
645 self.test_status = True
646 return self.test_status
647
A R Karthickb7e80902016-05-17 09:38:31 -0700648 def generate_port_list(self, subscribers, channels):
649 return self.port_list[:subscribers]
650
A.R Karthick4c4d0492017-05-26 19:23:05 -0700651 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 -0700652 '''Load the subscriber from the database'''
A.R Karthick4c4d0492017-05-26 19:23:05 -0700653 test_services = services if services else self.test_services
654 self.subscriber_db = SubscriberDB(create = create, services = test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700655 if create is True:
656 self.subscriber_db.generate(num)
657 self.subscriber_info = self.subscriber_db.read(num)
658 self.subscriber_list = []
659 if not port_list:
660 port_list = self.generate_port_list(num, num_channels)
661
662 index = 0
663 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700664 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700665 service=info['Service'],
666 port_map = self.port_map,
667 num=num_channels,
668 channel_start = channel_start,
669 tx_port = port_list[index][0],
670 rx_port = port_list[index][1]))
671 if num_channels > 1:
672 channel_start += num_channels
673 index += 1
674
675 #load the ssm list for all subscriber channels
676 igmpChannel = IgmpChannel()
677 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
678 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
679 igmpChannel.igmp_load_ssm_config(ssm_list)
680
A.R Karthick95d044e2016-06-10 18:44:36 -0700681 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700682 channel_start = 0, cbs = None, port_list = [],
683 services = None, negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700684 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700685 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700686 subscribers_count = num_subscribers
687 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700688 self.subscriber_load(create = True, num = num_subscribers,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700689 num_channels = num_channels, channel_start = channel_start, port_list = port_list,
690 services = services)
A R Karthickb7e80902016-05-17 09:38:31 -0700691 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700692 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
693
A R Karthick338268f2016-06-21 17:12:13 -0700694 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800695 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700696 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700697 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700698 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700699 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700700 if services and 'IGMP' in services:
701 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700702 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
703 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
704 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
705 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
706 else:
707 cbs = cbs_negative
708 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700709 pool_object = subscriber_pool(subscriber, cbs)
710 self.thread_pool.addTask(pool_object.pool_cb)
711 self.thread_pool.cleanUpThreads()
712 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700713 if services and 'IGMP' in services:
714 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700715 if chan_leave is True:
716 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700717 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700718 return self.test_status
719
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700720 def tls_invalid_cert(self, subscriber):
721 if subscriber.has_service('TLS'):
722 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700723 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700724 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
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_no_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 = '')
738 tls.runTest()
739 if tls.failTest == True:
740 self.test_status = False
741 return self.test_status
742 else:
743 self.test_status = True
744 return self.test_status
745
746 def tls_self_signed_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)
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
759 def tls_non_ca_authrized_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 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
764 tls.runTest()
765 if tls.failTest == False:
766 self.test_status = True
767 return self.test_status
768 else:
769 self.test_status = True
770 return self.test_status
771
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700772 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
773 if subscriber.has_service('TLS'):
774 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700775 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700776 num_users = 3
777 for i in xrange(num_users):
778 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
779 tls.runTest()
780 if tls.failTest == False:
781 self.test_status = True
782 return self.test_status
783 else:
784 self.test_status = True
785 return self.test_status
786
787 def dhcp_discover_scenario(self, subscriber):
788 if subscriber.has_service('DHCP'):
789 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700790 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700791 t1 = self.subscriber_dhcp_1release()
792 self.test_status = True
793 return self.test_status
794 else:
795 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
796 self.test_status = True
797 return self.test_status
798
799 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700800 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
801 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
802 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
803 self.onos_dhcp_table_load(config)
804 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
805 cip, sip = self.send_recv()
806 log_test.info('Releasing ip %s to server %s' %(cip, sip))
807 assert_equal(self.dhcp.release(cip), True)
808 log_test.info('Triggering DHCP discover again after release')
809 cip2, sip2 = self.send_recv(update_seed = True)
810 log_test.info('Verifying released IP was given back on rediscover')
811 assert_equal(cip, cip2)
812 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
813 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700814
815 def dhcp_client_reboot_scenario(self, subscriber):
816 if subscriber.has_service('DHCP'):
817 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700818 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700819 tl = self.subscriber_dhcp_client_request_after_reboot()
820 self.test_status = True
821 return self.test_status
822 else:
823 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
824 self.test_status = True
825 return self.test_status
826
827 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
828 #''' Client sends DHCP Request after reboot.'''
829
830 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
831 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
832 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
833 self.onos_dhcp_table_load(config)
834 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
835 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700836 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700837 (cip, sip, mac) )
838
A R Karthick76a497a2017-04-12 10:59:39 -0700839 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 -0700840
841 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700842 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 -0700843 assert_not_equal(cip, None)
844
845 else:
846 new_cip, new_sip = self.dhcp.only_request(cip, mac)
847 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700848 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700849 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700850 log_test.info('Client goes down.')
851 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700852
853 time.sleep(5)
854
855 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700856 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700857
858 new_cip, new_sip = self.dhcp.only_request(cip, mac)
859 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700860 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700861 assert_not_equal(new_cip, None)
862 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700863 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700864
865 def dhcp_client_renew_scenario(self, subscriber):
866 if subscriber.has_service('DHCP'):
867 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700868 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700869 tl = self.subscriber_dhcp_client_renew_time()
870 self.test_status = True
871 return self.test_status
872 else:
873 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
874 self.test_status = True
875 return self.test_status
876
877 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
878 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
879 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
880 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
881 self.onos_dhcp_table_load(config)
882 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
883 cip, sip, mac , lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700884 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700885 (cip, sip, mac) )
886
A R Karthick76a497a2017-04-12 10:59:39 -0700887 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 -0700888 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700889 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 -0700890 assert_not_equal(cip, None)
891 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700892 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700893 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
894 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700895 log_test.info("Client 's Renewal time is :%s",lval)
896 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700897 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700898 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700899 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
900 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700901 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700902 (latest_cip, mac, latest_sip) )
903
904 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700905 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700906 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700907 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700908
909 def dhcp_server_reboot_scenario(self, subscriber):
910 if subscriber.has_service('DHCP'):
911 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700912 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700913 tl = self.subscriber_dhcp_server_after_reboot()
914 self.test_status = True
915 return self.test_status
916 else:
917 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
918 self.test_status = True
919 return self.test_status
920
921 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
922 ''' DHCP server goes down.'''
923 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
924 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
925 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
926 self.onos_dhcp_table_load(config)
927 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
928 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700929 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700930 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700931 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 -0700932 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700933 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 -0700934 assert_not_equal(cip, None)
935 else:
936 new_cip, new_sip = self.dhcp.only_request(cip, mac)
937 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700938 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700939 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700940 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700941 onos_ctrl = OnosCtrl(self.dhcp_app)
942 onos_ctrl.deactivate()
943 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700944 log_test.info("Sending DHCP Request.")
945 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700946 new_cip, new_sip = self.dhcp.only_request(cip, mac)
947 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700948 log_test.info('')
949 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700950 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700951 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700952 assert_equal(new_cip,None) #Neagtive Test Case
A R Karthick76a497a2017-04-12 10:59:39 -0700953 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700954# self.activate_apps(self.dhcp_app)
955 onos_ctrl = OnosCtrl(self.dhcp_app)
956 status, _ = onos_ctrl.activate()
957 assert_equal(status, True)
958 time.sleep(3)
959 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700960 log_test.info("Sending DHCP Request after DHCP server is up.")
961 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700962 new_cip, new_sip = self.dhcp.only_request(cip, mac)
963 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700964 log_test.info('')
965 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700966 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700967 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700968 assert_equal(new_cip,None) #Neagtive Test Case
969
970 def dhcp_client_rebind_scenario(self, subscriber):
971 if subscriber.has_service('DHCP'):
972 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700973 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700974 tl = self.subscriber_dhcp_client_rebind_time()
975 self.test_status = True
976 return self.test_status
977 else:
978 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
979 self.test_status = True
980 return self.test_status
981
982 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
983 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
984 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
985 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
986 self.onos_dhcp_table_load(config)
987 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
988 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700989 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700990 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700991 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 -0700992 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700993 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 -0700994 assert_not_equal(cip, None)
995 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700996 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700997 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
998 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700999 log_test.info("Client 's Rebind time is :%s",lval)
1000 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001001 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -07001002 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001003 self.dhcp.after_T2 = True
1004 for i in range(0,4):
1005 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
1006 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -07001007 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001008 (latest_cip, mac, latest_sip) )
1009 break
1010 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001011 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001012 assert_not_equal(latest_cip, None)
1013 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001014 log_test.info("Got DHCP NAK.Lease not Renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001015
1016 def dhcp_starvation_scenario(self, subscriber):
1017 if subscriber.has_service('DHCP'):
1018 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001019 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001020 tl = self.subscriber_dhcp_starvation()
1021 self.test_status = True
1022 return self.test_status
1023 else:
1024 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1025 self.test_status = True
1026 return self.test_status
1027
1028 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
1029 '''DHCP starve'''
1030 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
1031 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
1032 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
1033 self.onos_dhcp_table_load(config)
1034 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001035 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001036 for x in xrange(50):
1037 mac = RandMAC()._fix()
1038 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -07001039 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001040 cip, sip = self.send_recv(update_seed = True, validate = False)
1041 assert_equal(cip, None)
1042 assert_equal(sip, None)
1043
1044 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
1045 if subscriber.has_service('DHCP'):
1046 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001047 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001048 tl = self.subscriber_dhcp_same_client_multiple_discover()
1049 self.test_status = True
1050 return self.test_status
1051 else:
1052 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1053 self.test_status = True
1054 return self.test_status
1055
1056 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
1057 ''' DHCP Client sending multiple discover . '''
1058 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1059 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1060 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1061 self.onos_dhcp_table_load(config)
1062 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
1063 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001064 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 -07001065 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001066 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001067 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
1068 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001069 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 -07001070 % (new_cip, new_sip, new_mac) )
1071 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001072 log_test.info('Ip after 1st discover %s' %cip)
1073 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001074 assert_equal(cip, new_cip)
1075
1076 def dhcp_same_client_multi_request_scenario(self, subscriber):
1077 if subscriber.has_service('DHCP'):
1078 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001079 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001080 tl = self.subscriber_dhcp_same_client_multiple_request()
1081 self.test_status = True
1082 return self.test_status
1083 else:
1084 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1085 self.test_status = True
1086 return self.test_status
1087
1088 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1089 ''' DHCP Client sending multiple repeat DHCP requests. '''
1090 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1091 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1092 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1093 self.onos_dhcp_table_load(config)
1094 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001095 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001096 cip, sip = self.send_recv()
1097 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001098 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001099 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1100 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001101 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 -07001102 % (new_cip, new_sip, mac) )
1103 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001104 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001105 assert_equal(new_cip, None)
1106 assert_equal(new_sip, None)
1107 else:
1108 print "Something went wrong."
1109
1110 def dhcp_client_desired_ip_scenario(self, subscriber):
1111 if subscriber.has_service('DHCP'):
1112 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001113 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001114 tl = self.subscriber_dhcp_client_desired_address()
1115 self.test_status = True
1116 return self.test_status
1117 else:
1118 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1119 self.test_status = True
1120 return self.test_status
1121
1122 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1123 '''DHCP Client asking for desired IP address.'''
1124 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1125 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1126 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1127 self.onos_dhcp_table_load(config)
1128 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1129 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001130 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001131 (cip, sip, mac) )
1132 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001133 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001134 (cip, sip, mac) )
1135 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001136 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001137 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001138 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001139 assert_equal(cip, self.dhcp.seed_ip)
1140
1141 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1142 if subscriber.has_service('DHCP'):
1143 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001144 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001145 tl = self.subscriber_dhcp_server_nak_packet()
1146 self.test_status = True
1147 return self.test_status
1148 else:
1149 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1150 self.test_status = True
1151 return self.test_status
1152
1153 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1154 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1155 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1156 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1157 self.onos_dhcp_table_load(config)
1158 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1159 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001160 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001161 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001162 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 -07001163 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001164 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 -07001165 assert_not_equal(cip, None)
1166 else:
1167 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1168 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001169 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001170 assert_equal(new_cip, None) #Negative Test Case
1171
1172 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1173 if subscriber.has_service('DHCP'):
1174 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001175 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001176 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1177 self.test_status = True
1178 return self.test_status
1179 else:
1180 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1181 self.test_status = True
1182 return self.test_status
1183
1184 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1185 '''DHCP Client asking for desired IP address from out of pool.'''
1186 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1187 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1188 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1189 self.onos_dhcp_table_load(config)
1190 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1191 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001192 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001193 (cip, sip, mac) )
1194 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001195 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001196 (cip, sip, mac) )
1197 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1198
1199 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001200 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001201 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001202 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001203 assert_not_equal(cip, self.dhcp.seed_ip)
1204
1205 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001206 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001207
1208 def dhcp_client_specific_lease_scenario(self, subscriber):
1209 if subscriber.has_service('DHCP'):
1210 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001211 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001212 tl = self.subscriber_dhcp_specific_lease_packet()
1213 self.test_status = True
1214 return self.test_status
1215 else:
1216 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1217 self.test_status = True
1218 return self.test_status
1219
1220 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1221 ''' Client sends DHCP Discover packet for particular lease time.'''
1222 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1223 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1224 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1225 self.onos_dhcp_table_load(config)
1226 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001227 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001228 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1229
A R Karthick76a497a2017-04-12 10:59:39 -07001230 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001231 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001232 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 -07001233 assert_not_equal(cip, None)
1234 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001235 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 -07001236 (cip, sip, mac, lval) )
1237 assert_not_equal(lval, 700)
1238
1239 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001240 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001241 self.num_subscribers = 5
1242 self.num_channels = 1
A R Karthicka478df42016-07-27 16:51:08 -07001243 test_status = True
1244 ##Run this test only if ONOS can be restarted as it incurs a network-cfg change
1245 if self.onos_restartable is True:
1246 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1247 num_channels = self.num_channels,
1248 port_list = self.generate_port_list(self.num_subscribers,
1249 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001250 assert_equal(test_status, True)
1251
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001252 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001253 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001254 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001255 self.num_channels = 10
1256 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1257 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001258 cbs = (self.tls_verify, self.dhcp_jump_verify,
1259 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001260 port_list = self.generate_port_list(self.num_subscribers,
1261 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001262 assert_equal(test_status, True)
1263
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001264 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001265 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001266 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001267 self.num_channels = 10
1268 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1269 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001270 cbs = (self.tls_verify, self.dhcp_next_verify,
1271 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001272 port_list = self.generate_port_list(self.num_subscribers,
1273 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001274 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001275
A.R Karthick517f7812017-05-18 11:22:46 -07001276 def test_cord_subscriber_join_next_without_leave(self):
1277 """Test subscriber join next for channel surfing"""
1278 self.num_subscribers = self.num_ports * len(self.switches)
1279 self.num_channels = 5
1280 self.leave_flag = False
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_next_verify, self.traffic_verify),
1285 port_list = self.generate_port_list(self.num_subscribers,
1286 self.num_channels))
1287 self.leave_flag = True
1288 assert_equal(test_status, True)
1289
A R Karthick31f1f342017-05-19 13:55:10 -07001290 def test_cord_subscriber_leave(self):
1291 """Test subscriber leaves for all the join nexts before"""
1292 self.num_subscribers = self.num_ports * len(self.switches)
1293 self.num_channels = 5
1294 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1295 num_channels = self.num_channels,
1296 cbs = (self.tls_verify, self.dhcp_next_verify,
1297 self.igmp_leave_verify, self.traffic_verify),
1298 port_list = self.generate_port_list(self.num_subscribers,
1299 self.num_channels))
1300 assert_equal(test_status, True)
1301
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001302 #@deferred(SUBSCRIBER_TIMEOUT)
1303 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1304 ### """Test subscriber to auth with invalidCertification and join channel"""
1305 num_subscribers = 1
1306 num_channels = 1
1307 df = defer.Deferred()
1308 def sub_auth_invalid_cert(df):
1309 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1310 num_channels = num_channels,
1311 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1312 self.igmp_verify, self.traffic_verify),
1313 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1314 assert_equal(test_status, False)
1315 df.callback(0)
1316 reactor.callLater(0, sub_auth_invalid_cert, df)
1317 return df
1318
1319 #@deferred(SUBSCRIBER_TIMEOUT)
1320 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1321 ### """Test subscriber to auth with No Certification and join channel"""
1322 num_subscribers = 1
1323 num_channels = 1
1324 df = defer.Deferred()
1325 def sub_auth_no_cert(df):
1326 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1327 num_channels = num_channels,
1328 cbs = (self.tls_no_cert, self.dhcp_verify,
1329 self.igmp_verify, self.traffic_verify),
1330 port_list = self.generate_port_list(num_subscribers, num_channels),
1331 negative_subscriber_auth = 'all')
1332 assert_equal(test_status, False)
1333 df.callback(0)
1334 reactor.callLater(0, sub_auth_no_cert, df)
1335 return df
1336 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1337 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1338 num_subscribers = 1
1339 num_channels = 1
1340 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1341 num_channels = num_channels,
1342 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1343 self.igmp_verify, self.traffic_verify),
1344 port_list = self.generate_port_list(num_subscribers, num_channels),
1345 negative_subscriber_auth = 'all')
1346 assert_equal(test_status, True)
1347
1348 @deferred(SUBSCRIBER_TIMEOUT)
1349 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1350 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1351 num_subscribers = 2
1352 num_channels = 1
1353 df = defer.Deferred()
1354 def sub_auth_invalid_cert(df):
1355 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1356 num_channels = num_channels,
1357 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1358 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1359 assert_equal(test_status, True)
1360 df.callback(0)
1361 reactor.callLater(0, sub_auth_invalid_cert, df)
1362 return df
1363
1364 @deferred(SUBSCRIBER_TIMEOUT)
1365 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1366 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1367 num_subscribers = 2
1368 num_channels = 1
1369 df = defer.Deferred()
1370 def sub_auth_no_cert(df):
1371 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1372 num_channels = num_channels,
1373 cbs = (self.tls_no_cert, self.dhcp_verify,
1374 self.igmp_verify, self.traffic_verify),
1375 port_list = self.generate_port_list(num_subscribers, num_channels),
1376 negative_subscriber_auth = 'half')
1377 assert_equal(test_status, True)
1378 df.callback(0)
1379 reactor.callLater(0, sub_auth_no_cert, df)
1380 return df
1381
1382 @deferred(SUBSCRIBER_TIMEOUT)
1383 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1384 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1385 num_subscribers = 2
1386 num_channels = 1
1387 df = defer.Deferred()
1388 def sub_auth_no_cert(df):
1389 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1390 num_channels = num_channels,
1391 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1392 self.igmp_verify, self.traffic_verify),
1393 port_list = self.generate_port_list(num_subscribers, num_channels),
1394 negative_subscriber_auth = 'half')
1395 assert_equal(test_status, True)
1396 df.callback(0)
1397 reactor.callLater(0, sub_auth_no_cert, df)
1398 return df
1399
1400 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1401 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1402 num_subscribers = 1
1403 num_channels = 1
1404 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1405 num_channels = num_channels,
1406 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1407 self.igmp_verify, self.traffic_verify),
1408 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1409 assert_equal(test_status, True)
1410
1411 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1412 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1413 num_subscribers = 1
1414 num_channels = 1
1415 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1416 num_channels = num_channels,
1417 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1418 self.igmp_verify, self.traffic_verify),
1419 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1420 assert_equal(test_status, True)
1421
1422 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1423 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1424 num_subscribers = 1
1425 num_channels = 1
1426 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1427 num_channels = num_channels,
1428 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1429 self.igmp_verify, self.traffic_verify),
1430 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1431 assert_equal(test_status, True)
1432
1433 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1434 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1435 num_subscribers = 1
1436 num_channels = 1
1437 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1438 num_channels = num_channels,
1439 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1440 self.igmp_verify, self.traffic_verify),
1441 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1442 assert_equal(test_status, True)
1443
1444
1445 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1446 ### """Test subscriber auth , DHCP starvation and join channel"""
1447 num_subscribers = 1
1448 num_channels = 1
1449 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1450 num_channels = num_channels,
1451 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1452 self.igmp_verify, self.traffic_verify),
1453 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1454 assert_equal(test_status, True)
1455
1456 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1457 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1458 num_subscribers = 1
1459 num_channels = 1
1460 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1461 num_channels = num_channels,
1462 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1463 self.igmp_verify, self.traffic_verify),
1464 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1465 assert_equal(test_status, True)
1466
1467 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1468 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1469 num_subscribers = 1
1470 num_channels = 1
1471 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1472 num_channels = num_channels,
1473 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1474 self.igmp_verify, self.traffic_verify),
1475 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1476 assert_equal(test_status, True)
1477
1478 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1479 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1480 num_subscribers = 1
1481 num_channels = 1
1482 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1483 num_channels = num_channels,
1484 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1485 self.igmp_verify, self.traffic_verify),
1486 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1487 assert_equal(test_status, True)
1488
1489 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1490 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1491 num_subscribers = 1
1492 num_channels = 1
1493 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1494 num_channels = num_channels,
1495 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1496 self.igmp_verify, self.traffic_verify),
1497 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1498 assert_equal(test_status, True)
1499
1500 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1501 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1502 num_subscribers = 1
1503 num_channels = 1
1504 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1505 num_channels = num_channels,
1506 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1507 self.igmp_verify, self.traffic_verify),
1508 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1509 assert_equal(test_status, True)
1510
1511
1512 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1513 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1514 num_subscribers = 1
1515 num_channels = 1
1516 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1517 num_channels = num_channels,
1518 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1519 self.igmp_verify, self.traffic_verify),
1520 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1521 assert_equal(test_status, True)
1522
1523 #@deferred(SUBSCRIBER_TIMEOUT)
1524 @nottest
1525 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1526 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1527 num_subscribers = 1000
1528 num_channels = 1
1529 df = defer.Deferred()
1530 def sub_auth_invalid_cert(df):
1531 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1532 num_channels = num_channels,
1533 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1534 self.igmp_verify, self.traffic_verify),
1535 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1536 assert_equal(test_status, True)
1537 df.callback(0)
1538 reactor.callLater(0, sub_auth_invalid_cert, df)
1539 return df
1540
1541 @nottest
1542 @deferred(SUBSCRIBER_TIMEOUT)
1543 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1544 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1545 num_subscribers = 1000
1546 num_channels = 1
1547 df = defer.Deferred()
1548 def sub_auth_no_cert(df):
1549 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1550 num_channels = num_channels,
1551 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1552 port_list = self.generate_port_list(num_subscribers, num_channels),
1553 negative_subscriber_auth = 'half')
1554 assert_equal(test_status, True)
1555 df.callback(0)
1556 reactor.callLater(0, sub_auth_no_cert, df)
1557 return df
1558
1559 #@deferred(SUBSCRIBER_TIMEOUT)
1560 @nottest
1561 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1562 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1563 num_subscribers = 1000
1564 num_channels = 1
1565 df = defer.Deferred()
1566 def sub_auth_no_cert(df):
1567 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1568 num_channels = num_channels,
1569 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1570 port_list = self.generate_port_list(num_subscribers, num_channels),
1571 negative_subscriber_auth = 'half')
1572 assert_equal(test_status, True)
1573 df.callback(0)
1574 reactor.callLater(0, sub_auth_no_cert, df)
1575 return df
1576
1577 #@deferred(SUBSCRIBER_TIMEOUT)
1578 @nottest
1579 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1580 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1581 num_subscribers = 5000
1582 num_channels = 1
1583 df = defer.Deferred()
1584 def sub_auth_invalid_cert(df):
1585 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1586 num_channels = num_channels,
1587 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1588 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1589 assert_equal(test_status, True)
1590 df.callback(0)
1591 reactor.callLater(0, sub_auth_invalid_cert, df)
1592 return df
1593
1594 #@deferred(SUBSCRIBER_TIMEOUT)
1595 @nottest
1596 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1597 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1598 num_subscribers = 5000
1599 num_channels = 1
1600 df = defer.Deferred()
1601 def sub_auth_no_cert(df):
1602 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1603 num_channels = num_channels,
1604 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1605 port_list = self.generate_port_list(num_subscribers, num_channels),
1606 negative_subscriber_auth = 'half')
1607 assert_equal(test_status, True)
1608 df.callback(0)
1609 reactor.callLater(0, sub_auth_no_cert, df)
1610 return df
1611
1612 #@deferred(SUBSCRIBER_TIMEOUT)
1613 @nottest
1614 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1615 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1616 num_subscribers = 5000
1617 num_channels = 1
1618 df = defer.Deferred()
1619 def sub_auth_no_cert(df):
1620 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1621 num_channels = num_channels,
1622 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1623 port_list = self.generate_port_list(num_subscribers, num_channels),
1624 negative_subscriber_auth = 'half')
1625 assert_equal(test_status, True)
1626 df.callback(0)
1627 reactor.callLater(0, sub_auth_no_cert, df)
1628 return df
1629
1630 #@deferred(SUBSCRIBER_TIMEOUT)
1631 @nottest
1632 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1633 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1634 num_subscribers = 10000
1635 num_channels = 1
1636 df = defer.Deferred()
1637 def sub_auth_invalid_cert(df):
1638 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1639 num_channels = num_channels,
1640 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1641 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1642 assert_equal(test_status, True)
1643 df.callback(0)
1644 reactor.callLater(0, sub_auth_invalid_cert, df)
1645 return df
1646
1647 #@deferred(SUBSCRIBER_TIMEOUT)
1648 @nottest
1649 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1650 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1651 num_subscribers = 10000
1652 num_channels = 1
1653 df = defer.Deferred()
1654 def sub_auth_no_cert(df):
1655 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1656 num_channels = num_channels,
1657 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1658 port_list = self.generate_port_list(num_subscribers, num_channels),
1659 negative_subscriber_auth = 'onethird')
1660 assert_equal(test_status, True)
1661 df.callback(0)
1662 reactor.callLater(0, sub_auth_no_cert, df)
1663 return df
1664
1665 #@deferred(SUBSCRIBER_TIMEOUT)
1666 @nottest
1667 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1668 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1669 num_subscribers = 10000
1670 num_channels = 1
1671 df = defer.Deferred()
1672 def sub_auth_no_cert(df):
1673 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1674 num_channels = num_channels,
1675 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1676 port_list = self.generate_port_list(num_subscribers, num_channels),
1677 negative_subscriber_auth = 'onethird')
1678 assert_equal(test_status, False)
1679 assert_equal(test_status, True)
1680 df.callback(0)
1681 reactor.callLater(0, sub_auth_no_cert, df)
1682 return df
1683
1684 @nottest
1685 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1686 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1687 num_subscribers = 1000
1688 num_channels = 1
1689 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1690 num_channels = num_channels,
1691 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1692 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1693 assert_equal(test_status, True)
1694
1695 @nottest
1696 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1697 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1698 num_subscribers = 1000
1699 num_channels = 1
1700 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1701 num_channels = num_channels,
1702 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1703 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1704 assert_equal(test_status, True)
1705
1706 @nottest
1707 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1708 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1709 num_subscribers = 1000
1710 num_channels = 1
1711 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1712 num_channels = num_channels,
1713 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1714 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1715 assert_equal(test_status, True)
1716
1717 @nottest
1718 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1719 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1720 num_subscribers = 1000
1721 num_channels = 1
1722 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1723 num_channels = num_channels,
1724 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1725 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1726 assert_equal(test_status, True)
1727
1728 @nottest
1729 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1730 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1731 num_subscribers = 1000
1732 num_channels = 1
1733 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1734 num_channels = num_channels,
1735 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1736 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1737 assert_equal(test_status, True)
1738
1739 @nottest
1740 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1741 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1742 num_subscribers = 1000
1743 num_channels = 1
1744 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1745 num_channels = num_channels,
1746 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1747 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1748 assert_equal(test_status, True)
1749
1750 @nottest
1751 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1752 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1753 num_subscribers = 1000
1754 num_channels = 1
1755 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1756 num_channels = num_channels,
1757 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1758 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1759 assert_equal(test_status, True)
1760
1761 def test_4_cord_subscribers_join_recv_5channel(self):
1762 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1763 num_subscribers = 4
1764 num_channels = 5
1765 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1766 num_channels = num_channels,
1767 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1768 port_list = self.generate_port_list(num_subscribers, num_channels),
1769 negative_subscriber_auth = 'all')
1770 assert_equal(test_status, True)
1771
1772 def test_4_cord_subscribers_join_jump_5channel(self):
1773 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1774 num_subscribers = 4
1775 num_channels = 5
1776 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1777 num_channels = num_channels,
1778 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1779 port_list = self.generate_port_list(num_subscribers, num_channels),
1780 negative_subscriber_auth = 'all')
1781 assert_equal(test_status, True)
1782
1783 def test_4_cord_subscribers_join_next_5channel(self):
1784 ###"""Test 4 subscribers join next for 5 channels"""
1785 num_subscribers = 4
1786 num_channels = 5
1787 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1788 num_channels = num_channels,
1789 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1790 port_list = self.generate_port_list(num_subscribers, num_channels),
1791 negative_subscriber_auth = 'all')
1792 assert_equal(test_status, True)
1793
1794 def test_10_cord_subscribers_join_recv_5channel(self):
1795 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1796 num_subscribers = 10
1797 num_channels = 5
1798 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1799 num_channels = num_channels,
1800 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1801 port_list = self.generate_port_list(num_subscribers, num_channels),
1802 negative_subscriber_auth = 'all')
1803 assert_equal(test_status, True)
1804
1805 def test_10_cord_subscribers_join_jump_5channel(self):
1806 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1807 num_subscribers = 10
1808 num_channels = 5
1809 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1810 num_channels = num_channels,
1811 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1812 port_list = self.generate_port_list(num_subscribers, num_channels),
1813 negative_subscriber_auth = 'all')
1814 assert_equal(test_status, True)
1815
1816
1817 def test_10_cord_subscribers_join_next_5channel(self):
1818 ###"""Test 10 subscribers join next for 5 channels"""
1819 num_subscribers = 10
1820 num_channels = 5
1821 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1822 num_channels = num_channels,
1823 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_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
1829
1830 def test_cord_subscriber_join_recv_100channels(self):
1831 num_subscribers = 1
1832 num_channels = 100
1833 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1834 num_channels = num_channels,
1835 cbs = (self.tls_verify, self.dhcp_verify,
1836 self.igmp_verify, self.traffic_verify),
1837 port_list = self.generate_port_list(num_subscribers, num_channels),
1838 negative_subscriber_auth = 'all')
1839 assert_equal(test_status, True)
1840
1841 def test_cord_subscriber_join_recv_400channels(self):
1842 num_subscribers = 1
1843 num_channels = 400
1844 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1845 num_channels = num_channels,
1846 cbs = (self.tls_verify, self.dhcp_verify,
1847 self.igmp_verify, self.traffic_verify),
1848 port_list = self.generate_port_list(num_subscribers, num_channels),
1849 negative_subscriber_auth = 'all')
1850 assert_equal(test_status, True)
1851
1852 def test_cord_subscriber_join_recv_800channels(self):
1853 num_subscribers = 1
1854 num_channels = 800
1855 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1856 num_channels = num_channels,
1857 cbs = (self.tls_verify, self.dhcp_verify,
1858 self.igmp_verify, self.traffic_verify),
1859 port_list = self.generate_port_list(num_subscribers, num_channels),
1860 negative_subscriber_auth = 'all')
1861 assert_equal(test_status, True)
1862
1863 def test_cord_subscriber_join_recv_1200channels(self):
1864 num_subscribers = 1
1865 num_channels = 1200
1866 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1867 num_channels = num_channels,
1868 cbs = (self.tls_verify, self.dhcp_verify,
1869 self.igmp_verify, self.traffic_verify),
1870 port_list = self.generate_port_list(num_subscribers, num_channels),
1871 negative_subscriber_auth = 'all')
1872 assert_equal(test_status, True)
1873
1874 def test_cord_subscriber_join_recv_1500channels(self):
1875 num_subscribers = 1
1876 num_channels = 1500
1877 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1878 num_channels = num_channels,
1879 cbs = (self.tls_verify, self.dhcp_verify,
1880 self.igmp_verify, self.traffic_verify),
1881 port_list = self.generate_port_list(num_subscribers, num_channels),
1882 negative_subscriber_auth = 'all')
1883 assert_equal(test_status, True)
1884
1885 def test_cord_subscriber_join_jump_100channels(self):
1886 num_subscribers = 1
1887 num_channels = 100
1888 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1889 num_channels = num_channels,
1890 cbs = (self.tls_verify, self.dhcp_jump_verify,
1891 self.igmp_jump_verify, self.traffic_verify),
1892 port_list = self.generate_port_list(num_subscribers, num_channels),
1893 negative_subscriber_auth = 'all')
1894 assert_equal(test_status, True)
1895 def test_cord_subscriber_join_jump_400channels(self):
1896 num_subscribers = 1
1897 num_channels = 400
1898 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1899 num_channels = num_channels,
1900 cbs = (self.tls_verify, self.dhcp_jump_verify,
1901 self.igmp_jump_verify, self.traffic_verify),
1902 port_list = self.generate_port_list(num_subscribers, num_channels),
1903 negative_subscriber_auth = 'all')
1904 assert_equal(test_status, True)
1905
1906 def test_cord_subscriber_join_jump_800channels(self):
1907 num_subscribers = 1
1908 num_channels = 800
1909 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1910 num_channels = num_channels,
1911 cbs = (self.tls_verify, self.dhcp_jump_verify,
1912 self.igmp_jump_verify, self.traffic_verify),
1913 port_list = self.generate_port_list(num_subscribers, num_channels),
1914 negative_subscriber_auth = 'all')
1915 assert_equal(test_status, True)
1916 def test_cord_subscriber_join_jump_1200channel(sself):
1917 num_subscribers = 1
1918 num_channels = 1200
1919 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1920 num_channels = num_channels,
1921 cbs = (self.tls_verify, self.dhcp_jump_verify,
1922 self.igmp_jump_verify, self.traffic_verify),
1923 port_list = self.generate_port_list(num_subscribers, num_channels),
1924 negative_subscriber_auth = 'all')
1925 assert_equal(test_status, True)
1926 def test_cord_subscriber_join_jump_1500channels(self):
1927 num_subscribers = 1
1928 num_channels = 1500
1929 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1930 num_channels = num_channels,
1931 cbs = (self.tls_verify, self.dhcp_jump_verify,
1932 self.igmp_jump_verify, self.traffic_verify),
1933 port_list = self.generate_port_list(num_subscribers, num_channels),
1934 negative_subscriber_auth = 'all')
1935 assert_equal(test_status, True)
1936
1937 def test_cord_subscriber_join_next_100channels(self):
1938 num_subscribers = 1
1939 num_channels = 100
1940 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1941 num_channels = num_channels,
1942 cbs = (self.tls_verify, self.dhcp_next_verify,
1943 self.igmp_next_verify, self.traffic_verify),
1944 port_list = self.generate_port_list(num_subscribers, num_channels),
1945 negative_subscriber_auth = 'all')
1946 assert_equal(test_status, True)
1947
1948 def test_cord_subscriber_join_next_400channels(self):
1949 num_subscribers = 1
1950 num_channels = 400
1951 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1952 num_channels = num_channels,
1953 cbs = (self.tls_verify, self.dhcp_next_verify,
1954 self.igmp_next_verify, self.traffic_verify),
1955 port_list = self.generate_port_list(num_subscribers, num_channels),
1956 negative_subscriber_auth = 'all')
1957 assert_equal(test_status, True)
1958
1959 def test_cord_subscriber_join_next_800channels(self):
1960 num_subscribers = 1
1961 num_channels = 800
1962 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1963 num_channels = num_channels,
1964 cbs = (self.tls_verify, self.dhcp_next_verify,
1965 self.igmp_next_verify, self.traffic_verify),
1966 port_list = self.generate_port_list(num_subscribers, num_channels),
1967 negative_subscriber_auth = 'all')
1968 assert_equal(test_status, True)
1969
1970
1971 def test_cord_subscriber_join_next_1200channels(self):
1972 num_subscribers = 1
1973 num_channels = 1200
1974 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1975 num_channels = num_channels,
1976 cbs = (self.tls_verify, self.dhcp_next_verify,
1977 self.igmp_next_verify, self.traffic_verify),
1978 port_list = self.generate_port_list(num_subscribers, num_channels),
1979 negative_subscriber_auth = 'all')
1980 assert_equal(test_status, True)
1981
1982 def test_cord_subscriber_join_next_1500channels(self):
1983 num_subscribers = 1
1984 num_channels = 1500
1985 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1986 num_channels = num_channels,
1987 cbs = (self.tls_verify, self.dhcp_next_verify,
1988 self.igmp_next_verify, self.traffic_verify),
1989 port_list = self.generate_port_list(num_subscribers, num_channels),
1990 negative_subscriber_auth = 'all')
1991 assert_equal(test_status, True)
1992
1993 @nottest
1994 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1995 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1996 num_subscribers = 1000
1997 num_channels = 1
1998 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1999 num_channels = num_channels,
2000 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
2001 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
2002 assert_equal(test_status, True)
2003
2004 @nottest
2005 def test_1k_cord_subscribers_join_recv_100channel(self):
2006 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
2007 num_subscribers = 1000
2008 num_channels = 100
2009 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2010 num_channels = num_channels,
2011 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2012 port_list = self.generate_port_list(num_subscribers, num_channels),
2013 negative_subscriber_auth = 'all')
2014 assert_equal(test_status, True)
2015
2016 @nottest
2017 def test_1k_cord_subscribers_join_jump_100channel(self):
2018 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
2019 num_subscribers = 1000
2020 num_channels = 100
2021 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2022 num_channels = num_channels,
2023 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2024 port_list = self.generate_port_list(num_subscribers, num_channels),
2025 negative_subscriber_auth = 'all')
2026 assert_equal(test_status, True)
2027
2028 @nottest
2029 def test_1k_cord_subscribers_join_next_100channel(self):
2030 ###"""Test 1k subscribers join next for 100 channels"""
2031 num_subscribers = 1000
2032 num_channels = 100
2033 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2034 num_channels = num_channels,
2035 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2036 port_list = self.generate_port_list(num_subscribers, num_channels),
2037 negative_subscriber_auth = 'all')
2038 assert_equal(test_status, True)
2039
2040 @nottest
2041 def test_1k_cord_subscribers_join_recv_400channel(self):
2042 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
2043 num_subscribers = 1000
2044 num_channels = 400
2045 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2046 num_channels = num_channels,
2047 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2048 port_list = self.generate_port_list(num_subscribers, num_channels),
2049 negative_subscriber_auth = 'all')
2050 assert_equal(test_status, True)
2051
2052 @nottest
2053 def test_1k_cord_subscribers_join_jump_400channel(self):
2054 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
2055 num_subscribers = 1000
2056 num_channels = 400
2057 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2058 num_channels = num_channels,
2059 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2060 port_list = self.generate_port_list(num_subscribers, num_channels),
2061 negative_subscriber_auth = 'all')
2062 assert_equal(test_status, True)
2063
2064 @nottest
2065 def test_1k_cord_subscribers_join_next_400channel(self):
2066 ###"""Test 1k subscribers join next for 400 channels"""
2067 num_subscribers = 1000
2068 num_channels = 400
2069 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2070 num_channels = num_channels,
2071 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2072 port_list = self.generate_port_list(num_subscribers, num_channels),
2073 negative_subscriber_auth = 'all')
2074 assert_equal(test_status, True)
2075
2076 @nottest
2077 def test_1k_cord_subscribers_join_recv_800channel(self):
2078 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2079 num_subscribers = 1000
2080 num_channels = 800
2081 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2082 num_channels = num_channels,
2083 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2084 port_list = self.generate_port_list(num_subscribers, num_channels),
2085 negative_subscriber_auth = 'all')
2086 assert_equal(test_status, True)
2087
2088 @nottest
2089 def test_1k_cord_subscribers_join_jump_800channel(self):
2090 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2091 num_subscribers = 1000
2092 num_channels = 800
2093 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2094 num_channels = num_channels,
2095 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2096 port_list = self.generate_port_list(num_subscribers, num_channels),
2097 negative_subscriber_auth = 'all')
2098 assert_equal(test_status, True)
2099
2100 @nottest
2101 def test_1k_cord_subscribers_join_next_800channel(self):
2102 ###"""Test 1k subscribers join next for 800 channels"""
2103 num_subscribers = 1000
2104 num_channels = 800
2105 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2106 num_channels = num_channels,
2107 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2108 port_list = self.generate_port_list(num_subscribers, num_channels),
2109 negative_subscriber_auth = 'all')
2110 assert_equal(test_status, True)
2111
2112 @nottest
2113 def test_1k_cord_subscribers_join_recv_1200channel(self):
2114 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2115 num_subscribers = 1000
2116 num_channels = 1200
2117 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2118 num_channels = num_channels,
2119 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2120 port_list = self.generate_port_list(num_subscribers, num_channels),
2121 negative_subscriber_auth = 'all')
2122 assert_equal(test_status, True)
2123
2124 @nottest
2125 def test_1k_cord_subscribers_join_jump_1200channel(self):
2126 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2127 num_subscribers = 1000
2128 num_channels = 1200
2129 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2130 num_channels = num_channels,
2131 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2132 port_list = self.generate_port_list(num_subscribers, num_channels),
2133 negative_subscriber_auth = 'all')
2134 assert_equal(test_status, True)
2135
2136 @nottest
2137 def test_1k_cord_subscribers_join_next_1200channel(self):
2138 ###"""Test 1k subscribers join next for 1200 channels"""
2139 num_subscribers = 1000
2140 num_channels = 1200
2141 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2142 num_channels = num_channels,
2143 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2144 port_list = self.generate_port_list(num_subscribers, num_channels),
2145 negative_subscriber_auth = 'all')
2146 assert_equal(test_status, True)
2147
2148 @nottest
2149 def test_1k_cord_subscribers_join_recv_1500channel(self):
2150 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2151 num_subscribers = 1000
2152 num_channels = 1500
2153 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2154 num_channels = num_channels,
2155 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2156 port_list = self.generate_port_list(num_subscribers, num_channels),
2157 negative_subscriber_auth = 'all')
2158 assert_equal(test_status, True)
2159
2160 @nottest
2161 def test_1k_cord_subscribers_join_jump_1500channel(self):
2162 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2163 num_subscribers = 1000
2164 num_channels = 1500
2165 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2166 num_channels = num_channels,
2167 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2168 port_list = self.generate_port_list(num_subscribers, num_channels),
2169 negative_subscriber_auth = 'all')
2170 assert_equal(test_status, True)
2171
2172 @nottest
2173 def test_1k_cord_subscribers_join_next_1500channel(self):
2174 ###"""Test 1k subscribers join next for 1500 channels"""
2175 num_subscribers = 1000
2176 num_channels = 1500
2177 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2178 num_channels = num_channels,
2179 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2180 port_list = self.generate_port_list(num_subscribers, num_channels),
2181 negative_subscriber_auth = 'all')
2182 assert_equal(test_status, True)
2183
2184 @nottest
2185 def test_5k_cord_subscribers_join_recv_100channel(self):
2186 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2187 num_subscribers = 5000
2188 num_channels = 100
2189 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2190 num_channels = num_channels,
2191 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2192 port_list = self.generate_port_list(num_subscribers, num_channels),
2193 negative_subscriber_auth = 'all')
2194 assert_equal(test_status, True)
2195
2196 @nottest
2197 def test_5k_cord_subscribers_join_jump_100channel(self):
2198 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2199 num_subscribers = 5000
2200 num_channels = 100
2201 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2202 num_channels = num_channels,
2203 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2204 port_list = self.generate_port_list(num_subscribers, num_channels),
2205 negative_subscriber_auth = 'all')
2206 assert_equal(test_status, True)
2207
2208 @nottest
2209 def test_5k_cord_subscribers_join_next_100channel(self):
2210 ###"""Test 5k subscribers join next for 100 channels"""
2211 num_subscribers = 5000
2212 num_channels = 100
2213 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2214 num_channels = num_channels,
2215 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2216 port_list = self.generate_port_list(num_subscribers, num_channels),
2217 negative_subscriber_auth = 'all')
2218 assert_equal(test_status, True)
2219
2220 @nottest
2221 def test_5k_cord_subscribers_join_recv_400channel(self):
2222 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2223 num_subscribers = 5000
2224 num_channels = 400
2225 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2226 num_channels = num_channels,
2227 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2228 port_list = self.generate_port_list(num_subscribers, num_channels),
2229 negative_subscriber_auth = 'all')
2230 assert_equal(test_status, True)
2231
2232 @nottest
2233 def test_5k_cord_subscribers_join_jump_400channel(self):
2234 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2235 num_subscribers = 5000
2236 num_channels = 400
2237 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2238 num_channels = num_channels,
2239 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2240 port_list = self.generate_port_list(num_subscribers, num_channels),
2241 negative_subscriber_auth = 'all')
2242 assert_equal(test_status, True)
2243
2244 @nottest
2245 def test_5k_cord_subscribers_join_next_400channel(self):
2246 ###"""Test 5k subscribers join next for 400 channels"""
2247 num_subscribers = 5000
2248 num_channels = 400
2249 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2250 num_channels = num_channels,
2251 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2252 port_list = self.generate_port_list(num_subscribers, num_channels),
2253 negative_subscriber_auth = 'all')
2254 assert_equal(test_status, True)
2255
2256 @nottest
2257 def test_5k_cord_subscribers_join_recv_800channel(self):
2258 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2259 num_subscribers = 5000
2260 num_channels = 800
2261 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2262 num_channels = num_channels,
2263 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2264 port_list = self.generate_port_list(num_subscribers, num_channels),
2265 negative_subscriber_auth = 'all')
2266 assert_equal(test_status, True)
2267
2268 @nottest
2269 def test_5k_cord_subscribers_join_jump_800channel(self):
2270 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2271 num_subscribers = 5000
2272 num_channels = 800
2273 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2274 num_channels = num_channels,
2275 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2276 port_list = self.generate_port_list(num_subscribers, num_channels),
2277 negative_subscriber_auth = 'all')
2278 assert_equal(test_status, True)
2279
2280 @nottest
2281 def test_5k_cord_subscribers_join_next_800channel(self):
2282 ###"""Test 5k subscribers join next for 800 channels"""
2283 num_subscribers = 5000
2284 num_channels = 800
2285 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2286 num_channels = num_channels,
2287 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2288 port_list = self.generate_port_list(num_subscribers, num_channels),
2289 negative_subscriber_auth = 'all')
2290 assert_equal(test_status, True)
2291
2292 @nottest
2293 def test_5k_cord_subscribers_join_recv_1200channel(self):
2294 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2295 num_subscribers = 5000
2296 num_channels = 1200
2297 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2298 num_channels = num_channels,
2299 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2300 port_list = self.generate_port_list(num_subscribers, num_channels),
2301 negative_subscriber_auth = 'all')
2302 assert_equal(test_status, True)
2303
2304 @nottest
2305 def test_5k_cord_subscribers_join_jump_1200channel(self):
2306 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2307 num_subscribers = 5000
2308 num_channels = 1200
2309 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2310 num_channels = num_channels,
2311 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2312 port_list = self.generate_port_list(num_subscribers, num_channels),
2313 negative_subscriber_auth = 'all')
2314 assert_equal(test_status, True)
2315
2316 @nottest
2317 def test_5k_cord_subscribers_join_next_1200channel(self):
2318 ###"""Test 5k subscribers join next for 1200 channels"""
2319 num_subscribers = 5000
2320 num_channels = 1200
2321 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2322 num_channels = num_channels,
2323 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2324 port_list = self.generate_port_list(num_subscribers, num_channels),
2325 negative_subscriber_auth = 'all')
2326 assert_equal(test_status, True)
2327
2328 @nottest
2329 def test_5k_cord_subscribers_join_recv_1500channel(self):
2330 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2331 num_subscribers = 5000
2332 num_channels = 1500
2333 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2334 num_channels = num_channels,
2335 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2336 port_list = self.generate_port_list(num_subscribers, num_channels),
2337 negative_subscriber_auth = 'all')
2338 assert_equal(test_status, True)
2339
2340 @nottest
2341 def test_5k_cord_subscribers_join_jump_1500channel(self):
2342 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2343 num_subscribers = 5000
2344 num_channels = 1500
2345 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2346 num_channels = num_channels,
2347 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2348 port_list = self.generate_port_list(num_subscribers, num_channels),
2349 negative_subscriber_auth = 'all')
2350 assert_equal(test_status, True)
2351
2352 @nottest
2353 def test_5k_cord_subscribers_join_next_1500channel(self):
2354 ###"""Test 5k subscribers join next for 1500 channels"""
2355 num_subscribers = 5000
2356 num_channels = 1500
2357 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2358 num_channels = num_channels,
2359 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2360 port_list = self.generate_port_list(num_subscribers, num_channels),
2361 negative_subscriber_auth = 'all')
2362 assert_equal(test_status, True)
2363
2364 @nottest
2365 def test_10k_cord_subscribers_join_recv_100channel(self):
2366 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2367 num_subscribers = 10000
2368 num_channels = 100
2369 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2370 num_channels = num_channels,
2371 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2372 port_list = self.generate_port_list(num_subscribers, num_channels),
2373 negative_subscriber_auth = 'all')
2374 assert_equal(test_status, True)
2375
2376 @nottest
2377 def test_10k_cord_subscribers_join_jump_100channel(self):
2378 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2379 num_subscribers = 10000
2380 num_channels = 100
2381 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2382 num_channels = num_channels,
2383 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2384 port_list = self.generate_port_list(num_subscribers, num_channels),
2385 negative_subscriber_auth = 'all')
2386 assert_equal(test_status, True)
2387
2388 @nottest
2389 def test_10k_cord_subscribers_join_next_100channel(self):
2390 ###"""Test 10k subscribers join next for 100 channels"""
2391 num_subscribers = 10000
2392 num_channels = 100
2393 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2394 num_channels = num_channels,
2395 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2396 port_list = self.generate_port_list(num_subscribers, num_channels),
2397 negative_subscriber_auth = 'all')
2398 assert_equal(test_status, True)
2399
2400 @nottest
2401 def test_100k_cord_subscribers_join_recv_100channel(self):
2402 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2403 num_subscribers = 100000
2404 num_channels = 100
2405 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2406 num_channels = num_channels,
2407 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2408 port_list = self.generate_port_list(num_subscribers, num_channels),
2409 negative_subscriber_auth = 'all')
2410 assert_equal(test_status, True)
2411
2412 @nottest
2413 def test_100k_cord_subscribers_join_jump_100channel(self):
2414 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2415 num_subscribers = 100000
2416 num_channels = 100
2417 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2418 num_channels = num_channels,
2419 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2420 port_list = self.generate_port_list(num_subscribers, num_channels),
2421 negative_subscriber_auth = 'all')
2422 assert_equal(test_status, True)
2423
2424 @nottest
2425 def test_100k_cord_subscribers_join_next_100channel(self):
2426 ###"""Test 100k subscribers join next for 100 channels"""
2427 num_subscribers = 100000
2428 num_channels = 100
2429 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2430 num_channels = num_channels,
2431 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2432 port_list = self.generate_port_list(num_subscribers, num_channels),
2433 negative_subscriber_auth = 'all')
2434 assert_equal(test_status, True)
2435
2436 @nottest
2437 def test_10k_cord_subscribers_join_recv_400channel(self):
2438 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2439 num_subscribers = 10000
2440 num_channels = 400
2441 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2442 num_channels = num_channels,
2443 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2444 port_list = self.generate_port_list(num_subscribers, num_channels),
2445 negative_subscriber_auth = 'all')
2446 assert_equal(test_status, True)
2447
2448 @nottest
2449 def test_10k_cord_subscribers_join_jump_400channel(self):
2450 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2451 num_subscribers = 10000
2452 num_channels = 400
2453 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2454 num_channels = num_channels,
2455 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2456 port_list = self.generate_port_list(num_subscribers, num_channels),
2457 negative_subscriber_auth = 'all')
2458 assert_equal(test_status, True)
2459
2460 @nottest
2461 def test_10k_cord_subscribers_join_next_400channel(self):
2462 ###"""Test 10k subscribers join next for 400 channels"""
2463 num_subscribers = 10000
2464 num_channels = 400
2465 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2466 num_channels = num_channels,
2467 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2468 port_list = self.generate_port_list(num_subscribers, num_channels),
2469 negative_subscriber_auth = 'all')
2470 assert_equal(test_status, True)
2471
2472 @nottest
2473 def test_10k_cord_subscribers_join_recv_800channel(self):
2474 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2475 num_subscribers = 10000
2476 num_channels = 800
2477 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2478 num_channels = num_channels,
2479 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2480 port_list = self.generate_port_list(num_subscribers, num_channels),
2481 negative_subscriber_auth = 'all')
2482 assert_equal(test_status, True)
2483
2484 @nottest
2485 def test_10k_cord_subscribers_join_jump_800channel(self):
2486 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2487 num_subscribers = 10000
2488 num_channels = 800
2489 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2490 num_channels = num_channels,
2491 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2492 port_list = self.generate_port_list(num_subscribers, num_channels),
2493 negative_subscriber_auth = 'all')
2494 assert_equal(test_status, True)
2495
2496 @nottest
2497 def test_10k_cord_subscribers_join_next_800channel(self):
2498 ###"""Test 10k subscribers join next for 800 channels"""
2499 num_subscribers = 10000
2500 num_channels = 800
2501 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2502 num_channels = num_channels,
2503 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2504 port_list = self.generate_port_list(num_subscribers, num_channels),
2505 negative_subscriber_auth = 'all')
2506 assert_equal(test_status, True)
2507
2508 @nottest
2509 def test_10k_cord_subscribers_join_recv_1200channel(self):
2510 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2511 num_subscribers = 10000
2512 num_channels = 1200
2513 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2514 num_channels = num_channels,
2515 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2516 port_list = self.generate_port_list(num_subscribers, num_channels),
2517 negative_subscriber_auth = 'all')
2518 assert_equal(test_status, True)
2519
2520 @nottest
2521 def test_10k_cord_subscribers_join_jump_1200channel(self):
2522 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2523 num_subscribers = 10000
2524 num_channels = 1200
2525 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2526 num_channels = num_channels,
2527 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2528 port_list = self.generate_port_list(num_subscribers, num_channels),
2529 negative_subscriber_auth = 'all')
2530 assert_equal(test_status, True)
2531
2532 @nottest
2533 def test_10k_cord_subscribers_join_next_1200channel(self):
2534 ###"""Test 10k subscribers join next for 1200 channels"""
2535 num_subscribers = 10000
2536 num_channels = 1200
2537 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2538 num_channels = num_channels,
2539 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2540 port_list = self.generate_port_list(num_subscribers, num_channels),
2541 negative_subscriber_auth = 'all')
2542 assert_equal(test_status, True)
2543
2544 @nottest
2545 def test_10k_cord_subscribers_join_recv_1500channel(self):
2546 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2547 num_subscribers = 10000
2548 num_channels = 1500
2549 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2550 num_channels = num_channels,
2551 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2552 port_list = self.generate_port_list(num_subscribers, num_channels),
2553 negative_subscriber_auth = 'all')
2554 assert_equal(test_status, True)
2555
2556 @nottest
2557 def test_10k_cord_subscribers_join_jump_1500channel(self):
2558 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2559 num_subscribers = 10000
2560 num_channels = 1500
2561 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2562 num_channels = num_channels,
2563 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2564 port_list = self.generate_port_list(num_subscribers, num_channels),
2565 negative_subscriber_auth = 'all')
2566 assert_equal(test_status, True)
2567
2568 @nottest
2569 def test_10k_cord_subscribers_join_next_1500channel(self):
2570 ###"""Test 10k subscribers join next for 1500 channels"""
2571 num_subscribers = 10000
2572 num_channels = 1500
2573 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2574 num_channels = num_channels,
2575 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2576 port_list = self.generate_port_list(num_subscribers, num_channels),
2577 negative_subscriber_auth = 'all')
2578 assert_equal(test_status, True)
2579
2580 @nottest
2581 def test_100k_cord_subscribers_join_recv_1500channel(self):
2582 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2583 num_subscribers = 100000
2584 num_channels = 1500
2585 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2586 num_channels = num_channels,
2587 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2588 port_list = self.generate_port_list(num_subscribers, num_channels),
2589 negative_subscriber_auth = 'all')
2590 assert_equal(test_status, True)
2591
2592 @nottest
2593 def test_100k_cord_subscribers_join_jump_1500channel(self):
2594 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2595 num_subscribers = 100000
2596 num_channels = 1500
2597 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2598 num_channels = num_channels,
2599 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2600 port_list = self.generate_port_list(num_subscribers, num_channels),
2601 negative_subscriber_auth = 'all')
2602 assert_equal(test_status, True)
2603
2604 @nottest
2605 def test_100k_cord_subscribers_join_next_1500channel(self):
2606 ###"""Test 10k subscribers join next for 1500 channels"""
2607 num_subscribers = 100000
2608 num_channels = 1500
2609 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2610 num_channels = num_channels,
2611 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2612 port_list = self.generate_port_list(num_subscribers, num_channels),
2613 negative_subscriber_auth = 'all')
2614 assert_equal(test_status, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002615
2616
2617
A.R Karthick8a507cf2017-06-02 18:44:49 -07002618 def remove_olt(self, switch_map):
2619 controller = get_controller()
2620 auth = ('karaf', 'karaf')
2621 #remove subscriber for every port on all the voltha devices
2622 for device, device_map in switch_map.iteritems():
2623 uni_ports = device_map['ports']
2624 uplink_vlan = device_map['uplink_vlan']
2625 for port in uni_ports:
2626 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}'.format(controller,
2627 device,
2628 port)
2629 resp = requests.delete(rest_url, auth = auth)
2630 if resp.status_code not in [204, 202, 200]:
2631 log_test.error('Error deleting subscriber for device %s on port %s' %(device, port))
2632 else:
2633 log_test.info('Deleted subscriber for device %s on port %s' %(device, port))
A.R Karthick4c4d0492017-05-26 19:23:05 -07002634
2635 def config_olt(self, switch_map):
2636 controller = get_controller()
A.R Karthick4c4d0492017-05-26 19:23:05 -07002637 auth = ('karaf', 'karaf')
2638 #configure subscriber for every port on all the voltha devices
2639 for device, device_map in switch_map.iteritems():
2640 uni_ports = device_map['ports']
2641 uplink_vlan = device_map['uplink_vlan']
2642 for port in uni_ports:
2643 vlan = port
2644 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}/{}'.format(controller,
2645 device,
2646 port,
2647 vlan)
A.R Karthick4bd5f532017-06-06 11:37:27 -07002648 requests.post(rest_url, auth = auth)
2649 #assert_equal(resp.ok, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002650
A.R Karthick56e59432017-06-06 18:05:46 -07002651 def cord_subscriber_voltha(self, services, cbs = None, num_subscribers = 1, num_channels = 1):
A.R Karthick4c4d0492017-05-26 19:23:05 -07002652 """Test subscriber join next for channel surfing"""
2653 if self.VOLTHA_HOST is None:
2654 log_test.info('Skipping test as no voltha host')
2655 return
2656 voltha = VolthaCtrl(self.VOLTHA_HOST,
2657 rest_port = self.VOLTHA_REST_PORT,
2658 uplink_vlan_map = self.VOLTHA_UPLINK_VLAN_MAP)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002659 if self.VOLTHA_OLT_TYPE.startswith('ponsim'):
2660 ponsim_address = '{}:50060'.format(self.VOLTHA_HOST)
2661 log_test.info('Enabling ponsim olt')
A.R Karthick8a507cf2017-06-02 18:44:49 -07002662 device_id, status = voltha.enable_device(self.VOLTHA_OLT_TYPE, address = ponsim_address)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002663 else:
2664 log_test.info('Enabling OLT instance for %s with mac %s' %(self.VOLTHA_OLT_TYPE, self.VOLTHA_OLT_MAC))
A.R Karthick8a507cf2017-06-02 18:44:49 -07002665 device_id, status = voltha.enable_device(self.VOLTHA_OLT_TYPE, self.VOLTHA_OLT_MAC)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002666
A.R Karthick8a507cf2017-06-02 18:44:49 -07002667 assert_not_equal(device_id, None)
2668 if status == False:
2669 voltha.disable_device(device_id, delete = True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002670 assert_equal(status, True)
2671 time.sleep(10)
A.R Karthick8a507cf2017-06-02 18:44:49 -07002672 switch_map = None
2673 olt_configured = False
2674 try:
2675 switch_map = voltha.config(fake = self.VOLTHA_CONFIG_FAKE)
2676 if not switch_map:
2677 log_test.info('No voltha devices found')
2678 return
2679 log_test.info('Installing OLT app')
2680 OnosCtrl.install_app(self.olt_app_file)
2681 time.sleep(5)
2682 log_test.info('Adding subscribers through OLT app')
2683 self.config_olt(switch_map)
2684 olt_configured = True
2685 time.sleep(5)
A.R Karthick56e59432017-06-06 18:05:46 -07002686 self.num_subscribers = num_subscribers
2687 self.num_channels = num_channels
A.R Karthick8a507cf2017-06-02 18:44:49 -07002688 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
2689 num_channels = self.num_channels,
A.R Karthick56e59432017-06-06 18:05:46 -07002690 cbs = cbs,
A.R Karthick8a507cf2017-06-02 18:44:49 -07002691 port_list = self.generate_port_list(self.num_subscribers,
2692 self.num_channels),
2693 services = services)
2694 assert_equal(test_status, True)
2695 finally:
2696 if switch_map is not None:
2697 if olt_configured is True:
2698 self.remove_olt(switch_map)
2699 voltha.disable_device(device_id, delete = True)
2700 time.sleep(10)
2701 log_test.info('Uninstalling OLT app')
2702 OnosCtrl.uninstall_app(self.olt_app_name)
A.R Karthick56e59432017-06-06 18:05:46 -07002703
2704 def test_cord_subscriber_voltha_tls(self):
2705 """Test subscriber join next for channel surfing"""
2706 if self.VOLTHA_HOST is None:
2707 log_test.info('Skipping test as no voltha host')
2708 return
2709 num_subscribers = 1
2710 num_channels = 1
2711 services = ('TLS',)
2712 cbs = ( self.tls_verify, )
2713 self.cord_subscriber_voltha(services, cbs = cbs,
2714 num_subscribers = num_subscribers,
2715 num_channels = num_channels)
2716
2717 def test_cord_subscriber_voltha_tls_igmp(self):
2718 """Test subscriber join next for channel surfing"""
2719 if self.VOLTHA_HOST is None:
2720 log_test.info('Skipping test as no voltha host')
2721 return
2722 num_subscribers = 1
2723 num_channels = 1
2724 services = ('TLS','IGMP',)
2725 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2726 self.cord_subscriber_voltha(services, cbs = cbs,
2727 num_subscribers = num_subscribers,
2728 num_channels = num_channels)
A.R Karthick4f583842017-06-09 17:15:47 -07002729
2730 def test_cord_subscriber_voltha_tls_igmp_3(self):
2731 """Test subscriber join next for channel surfing with 3 subscribers browsing 3 channels each"""
2732 if self.VOLTHA_HOST is None:
2733 log_test.info('Skipping test as no voltha host')
2734 return
2735 num_subscribers = 3
2736 num_channels = 3
2737 services = ('TLS','IGMP',)
2738 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2739 self.cord_subscriber_voltha(services, cbs = cbs,
2740 num_subscribers = num_subscribers,
2741 num_channels = num_channels)