blob: db6bbe145d185a96a93a5c95086103c57d4466ac [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 Karthickb7e80902016-05-17 09:38:31 -0700336 cls.activate_apps(cls.apps + cls.olt_apps)
337
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
349 def activate_apps(cls, apps):
350 for app in apps:
351 onos_ctrl = OnosCtrl(app)
352 status, _ = onos_ctrl.activate()
353 assert_equal(status, True)
354 time.sleep(2)
355
356 @classmethod
357 def install_app_table(cls):
358 ##Uninstall the existing app if any
359 OnosCtrl.uninstall_app(cls.table_app)
360 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700361 log_test.info('Installing the multi table app %s for subscriber test' %(cls.table_app_file))
A R Karthickb7e80902016-05-17 09:38:31 -0700362 OnosCtrl.install_app(cls.table_app_file)
363 time.sleep(3)
A R Karthickedab01c2016-09-08 14:05:44 -0700364 #onos_ctrl = OnosCtrl(cls.vtn_app)
365 #onos_ctrl.deactivate()
A R Karthickb7e80902016-05-17 09:38:31 -0700366
367 @classmethod
A R Karthicke5939f02016-11-16 12:08:07 -0800368 def install_app_igmp(cls):
A R Karthickb7e80902016-05-17 09:38:31 -0700369 ##Uninstall the table app on class exit
370 OnosCtrl.uninstall_app(cls.table_app)
371 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700372 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 -0700373 OnosCtrl.install_app(cls.app_file)
A R Karthickedab01c2016-09-08 14:05:44 -0700374 #onos_ctrl = OnosCtrl(cls.vtn_app)
375 #onos_ctrl.activate()
A R Karthickb7e80902016-05-17 09:38:31 -0700376
377 @classmethod
378 def start_onos(cls, network_cfg = None):
A R Karthicka478df42016-07-27 16:51:08 -0700379 if cls.onos_restartable is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700380 log_test.info('ONOS restart is disabled. Skipping ONOS restart')
A R Karthick65c4d722016-07-18 14:20:17 -0700381 return
A.R Karthick4c4d0492017-05-26 19:23:05 -0700382 if cls.VOLTHA_ENABLED is True:
383 log_test.info('ONOS restart skipped as VOLTHA is running')
384 return
A R Karthickb7e80902016-05-17 09:38:31 -0700385 if network_cfg is None:
A R Karthick4b72d4b2016-06-15 11:09:17 -0700386 network_cfg = cls.device_dict
A R Karthickb7e80902016-05-17 09:38:31 -0700387
388 if type(network_cfg) is tuple:
389 res = []
390 for v in network_cfg:
391 res += v.items()
392 config = dict(res)
393 else:
394 config = network_cfg
A R Karthick76a497a2017-04-12 10:59:39 -0700395 log_test.info('Restarting ONOS with new network configuration')
A R Karthick338268f2016-06-21 17:12:13 -0700396 return cord_test_onos_restart(config = config)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700397
398 @classmethod
399 def remove_onos_config(cls):
400 try:
401 os.unlink('{}/network-cfg.json'.format(cls.onos_config_path))
402 except: pass
A R Karthickb7e80902016-05-17 09:38:31 -0700403
404 @classmethod
405 def start_cpqd(cls, mac = '00:11:22:33:44:55'):
406 dpid = mac.replace(':', '')
407 cpqd_file = os.sep.join( (cls.cpqd_path, 'cpqd.sh') )
408 cpqd_cmd = '{} {}'.format(cpqd_file, dpid)
409 ret = os.system(cpqd_cmd)
410 assert_equal(ret, 0)
411 time.sleep(10)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700412 device_id = 'of:{}{}'.format('0'*4, dpid)
413 return device_id
A R Karthickb7e80902016-05-17 09:38:31 -0700414
415 @classmethod
416 def start_ovs(cls):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700417 ovs_file = os.sep.join( (cls.ovs_path, 'of-bridge.sh') )
A R Karthickb7e80902016-05-17 09:38:31 -0700418 ret = os.system(ovs_file)
419 assert_equal(ret, 0)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700420 time.sleep(30)
A R Karthickb7e80902016-05-17 09:38:31 -0700421
A R Karthicka013a272016-08-16 16:40:19 -0700422 @classmethod
423 def ovs_cleanup(cls):
424 ##For every test case, delete all the OVS groups
425 cmd = 'ovs-ofctl del-groups br-int -OOpenFlow11 >/dev/null 2>&1'
A R Karthicka013a272016-08-16 16:40:19 -0700426 try:
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700427 cord_test_shell(cmd)
428 ##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 -0700429 os.system(cmd)
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700430 finally:
431 return
A R Karthicka013a272016-08-16 16:40:19 -0700432
A R Karthickb7e80902016-05-17 09:38:31 -0700433 def onos_aaa_load(self):
434 if self.aaa_loaded:
435 return
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700436 aaa_dict = {'apps' : { 'org.opencord.aaa' : { 'AAA' : { 'radiusSecret': 'radius_password',
437 'radiusIp': '172.17.0.2' } } } }
A R Karthickb7e80902016-05-17 09:38:31 -0700438 radius_ip = os.getenv('ONOS_AAA_IP') or '172.17.0.2'
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700439 aaa_dict['apps']['org.opencord.aaa']['AAA']['radiusIp'] = radius_ip
440 self.onos_load_config('org.opencord.aaa', aaa_dict)
A R Karthickb7e80902016-05-17 09:38:31 -0700441 self.aaa_loaded = True
442
443 def onos_dhcp_table_load(self, config = None):
444 dhcp_dict = {'apps' : { 'org.onosproject.dhcp' : { 'dhcp' : copy.copy(self.dhcp_server_config) } } }
445 dhcp_config = dhcp_dict['apps']['org.onosproject.dhcp']['dhcp']
446 if config:
447 for k in config.keys():
448 if dhcp_config.has_key(k):
449 dhcp_config[k] = config[k]
450 self.onos_load_config('org.onosproject.dhcp', dhcp_dict)
451
452 def onos_load_config(self, app, config):
453 status, code = OnosCtrl.config(config)
454 if status is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700455 log_test.info('JSON config request for app %s returned status %d' %(app, code))
A R Karthickb7e80902016-05-17 09:38:31 -0700456 assert_equal(status, True)
457 time.sleep(2)
458
459 def dhcp_sndrcv(self, dhcp, update_seed = False):
460 cip, sip = dhcp.discover(update_seed = update_seed)
461 assert_not_equal(cip, None)
462 assert_not_equal(sip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700463 log_test.info('Got dhcp client IP %s from server %s for mac %s' %
A R Karthickb7e80902016-05-17 09:38:31 -0700464 (cip, sip, dhcp.get_mac(cip)[0]))
465 return cip,sip
466
467 def dhcp_request(self, subscriber, seed_ip = '10.10.10.1', update_seed = False):
468 config = {'startip':'10.10.10.20', 'endip':'10.10.10.200',
469 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
470 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
471 self.onos_dhcp_table_load(config)
472 dhcp = DHCPTest(seed_ip = seed_ip, iface = subscriber.iface)
473 cip, sip = self.dhcp_sndrcv(dhcp, update_seed = update_seed)
474 return cip, sip
475
476 def recv_channel_cb(self, pkt):
477 ##First verify that we have received the packet for the joined instance
478 chan = self.subscriber.caddr(pkt[IP].dst)
479 assert_equal(chan in self.subscriber.join_map.keys(), True)
480 recv_time = monotonic.monotonic() * 1000000
481 join_time = self.subscriber.join_map[chan][self.subscriber.STATS_JOIN].start
482 delta = recv_time - join_time
483 self.subscriber.join_rx_stats.update(packets=1, t = delta, usecs = True)
484 self.subscriber.channel_update(chan, self.subscriber.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700485 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 -0700486 self.test_status = True
487
A R Karthick65c4d722016-07-18 14:20:17 -0700488 def traffic_verify(self, subscriber):
489 if subscriber.has_service('TRAFFIC'):
490 url = 'http://www.google.com'
491 resp = requests.get(url)
492 self.test_status = resp.ok
493 if resp.ok == False:
A R Karthick76a497a2017-04-12 10:59:39 -0700494 log_test.info('Subscriber %s failed get from url %s with status code %d'
A R Karthick65c4d722016-07-18 14:20:17 -0700495 %(subscriber.name, url, resp.status_code))
496 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700497 log_test.info('GET request from %s succeeded for subscriber %s'
A R Karthick65c4d722016-07-18 14:20:17 -0700498 %(url, subscriber.name))
A R Karthicka013a272016-08-16 16:40:19 -0700499 return self.test_status
A R Karthick65c4d722016-07-18 14:20:17 -0700500
A R Karthickb7e80902016-05-17 09:38:31 -0700501 def tls_verify(self, subscriber):
A.R Karthick8a507cf2017-06-02 18:44:49 -0700502 def tls_fail_cb():
503 log_test.info('TLS verification failed')
A R Karthickb7e80902016-05-17 09:38:31 -0700504 if subscriber.has_service('TLS'):
A.R Karthick8a507cf2017-06-02 18:44:49 -0700505 OnosCtrl('org.opencord.aaa').deactivate()
A R Karthickb7e80902016-05-17 09:38:31 -0700506 time.sleep(2)
A.R Karthick8a507cf2017-06-02 18:44:49 -0700507 OnosCtrl('org.opencord.aaa').activate()
508 time.sleep(5)
509 tls = TLSAuthTest(fail_cb = tls_fail_cb, intf = subscriber.rx_intf)
A R Karthick76a497a2017-04-12 10:59:39 -0700510 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700511 tls.runTest()
A.R Karthick8a507cf2017-06-02 18:44:49 -0700512 assert_equal(tls.failTest, False)
A R Karthickb7e80902016-05-17 09:38:31 -0700513 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700514 return self.test_status
515 else:
516 self.test_status = True
517 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700518
519 def dhcp_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700520 if subscriber.has_service('DHCP'):
521 cip, sip = self.dhcp_request(subscriber, update_seed = True)
A R Karthick76a497a2017-04-12 10:59:39 -0700522 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700523 subscriber.src_list = [cip]
524 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700525 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700526 else:
527 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
528 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700529 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700530
531 def dhcp_jump_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700532 if subscriber.has_service('DHCP'):
533 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.200.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700534 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700535 subscriber.src_list = [cip]
536 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700537 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700538 else:
539 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
540 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700541 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700542
543 def dhcp_next_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700544 if subscriber.has_service('DHCP'):
545 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.150.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700546 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700547 subscriber.src_list = [cip]
548 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700549 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700550 else:
551 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
552 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700553 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700554
555 def igmp_verify(self, subscriber):
556 chan = 0
557 if subscriber.has_service('IGMP'):
A R Karthick338268f2016-06-21 17:12:13 -0700558 ##We wait for all the subscribers to join before triggering leaves
559 if subscriber.rx_port > 1:
560 time.sleep(5)
561 subscriber.channel_join(chan, delay = 0)
562 self.num_joins += 1
563 while self.num_joins < self.num_subscribers:
564 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700565 log_test.info('All subscribers have joined the channel')
A R Karthick338268f2016-06-21 17:12:13 -0700566 for i in range(10):
567 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
A R Karthick76a497a2017-04-12 10:59:39 -0700568 log_test.info('Leaving channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700569 subscriber.channel_leave(chan)
A R Karthick338268f2016-06-21 17:12:13 -0700570 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700571 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 -0700572 #Should not receive packets for this subscriber
573 self.recv_timeout = True
574 subscriber.recv_timeout = True
575 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
576 subscriber.recv_timeout = False
577 self.recv_timeout = False
A R Karthick76a497a2017-04-12 10:59:39 -0700578 log_test.info('Joining channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthick338268f2016-06-21 17:12:13 -0700579 subscriber.channel_join(chan, delay = 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700580 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700581 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700582
583 def igmp_jump_verify(self, subscriber):
584 if subscriber.has_service('IGMP'):
585 for i in xrange(subscriber.num):
A R Karthick76a497a2017-04-12 10:59:39 -0700586 log_test.info('Subscriber %s jumping channel' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700587 chan = subscriber.channel_jump(delay=0)
588 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 1)
A R Karthick76a497a2017-04-12 10:59:39 -0700589 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700590 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700591 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 -0700592 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700593 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700594
595 def igmp_next_verify(self, subscriber):
596 if subscriber.has_service('IGMP'):
597 for i in xrange(subscriber.num):
598 if i:
A.R Karthick517f7812017-05-18 11:22:46 -0700599 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700600 else:
601 chan = subscriber.channel_join(i, delay=0)
A R Karthick76a497a2017-04-12 10:59:39 -0700602 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700603 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
A R Karthick76a497a2017-04-12 10:59:39 -0700604 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700605 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700606 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 -0700607 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700608 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700609
A.R Karthick4c4d0492017-05-26 19:23:05 -0700610 def voltha_igmp_next_verify(self, subscriber):
611 if subscriber.has_service('IGMP'):
612 for c in xrange(self.VOLTHA_IGMP_ITERATIONS):
613 for i in xrange(subscriber.num):
614 if i:
615 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
616 time.sleep(0.2)
617 else:
618 chan = subscriber.channel_join(i, delay=0)
619 time.sleep(0.2)
A.R Karthick56e59432017-06-06 18:05:46 -0700620 if subscriber.num == 1:
621 subscriber.channel_leave(chan)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700622 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
623 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
624 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
625 self.test_status = True
626 return self.test_status
627
A R Karthick31f1f342017-05-19 13:55:10 -0700628 def igmp_leave_verify(self, subscriber):
629 if subscriber.has_service('IGMP'):
630 for chan in xrange(subscriber.num):
A R Karthick78d1f492017-05-19 14:24:17 -0700631 subscriber.channel_leave(chan, force = True)
A R Karthick31f1f342017-05-19 13:55:10 -0700632 time.sleep(2)
633 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
634 #self.recv_timeout = True
635 #subscriber.recv_timeout = True
636 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
637 #self.recv_timeout = False
638 #subscriber.recv_timeout = False
639 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
640 #time.sleep(1)
641
642 self.test_status = True
643 return self.test_status
644
A R Karthickb7e80902016-05-17 09:38:31 -0700645 def generate_port_list(self, subscribers, channels):
646 return self.port_list[:subscribers]
647
A.R Karthick4c4d0492017-05-26 19:23:05 -0700648 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 -0700649 '''Load the subscriber from the database'''
A.R Karthick4c4d0492017-05-26 19:23:05 -0700650 test_services = services if services else self.test_services
651 self.subscriber_db = SubscriberDB(create = create, services = test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700652 if create is True:
653 self.subscriber_db.generate(num)
654 self.subscriber_info = self.subscriber_db.read(num)
655 self.subscriber_list = []
656 if not port_list:
657 port_list = self.generate_port_list(num, num_channels)
658
659 index = 0
660 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700661 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700662 service=info['Service'],
663 port_map = self.port_map,
664 num=num_channels,
665 channel_start = channel_start,
666 tx_port = port_list[index][0],
667 rx_port = port_list[index][1]))
668 if num_channels > 1:
669 channel_start += num_channels
670 index += 1
671
672 #load the ssm list for all subscriber channels
673 igmpChannel = IgmpChannel()
674 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
675 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
676 igmpChannel.igmp_load_ssm_config(ssm_list)
677
A.R Karthick95d044e2016-06-10 18:44:36 -0700678 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700679 channel_start = 0, cbs = None, port_list = [],
680 services = None, negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700681 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700682 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700683 subscribers_count = num_subscribers
684 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700685 self.subscriber_load(create = True, num = num_subscribers,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700686 num_channels = num_channels, channel_start = channel_start, port_list = port_list,
687 services = services)
A R Karthickb7e80902016-05-17 09:38:31 -0700688 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700689 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
690
A R Karthick338268f2016-06-21 17:12:13 -0700691 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800692 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700693 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700694 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700695 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700696 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700697 if services and 'IGMP' in services:
698 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700699 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
700 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
701 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
702 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
703 else:
704 cbs = cbs_negative
705 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700706 pool_object = subscriber_pool(subscriber, cbs)
707 self.thread_pool.addTask(pool_object.pool_cb)
708 self.thread_pool.cleanUpThreads()
709 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700710 if services and 'IGMP' in services:
711 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700712 if chan_leave is True:
713 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700714 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700715 return self.test_status
716
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700717 def tls_invalid_cert(self, subscriber):
718 if subscriber.has_service('TLS'):
719 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700720 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700721 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
722 tls.runTest()
723 if tls.failTest == True:
724 self.test_status = False
725 return self.test_status
726 else:
727 self.test_status = True
728 return self.test_status
729
730 def tls_no_cert(self, subscriber):
731 if subscriber.has_service('TLS'):
732 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700733 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700734 tls = TLSAuthTest(client_cert = '')
735 tls.runTest()
736 if tls.failTest == True:
737 self.test_status = False
738 return self.test_status
739 else:
740 self.test_status = True
741 return self.test_status
742
743 def tls_self_signed_cert(self, subscriber):
744 if subscriber.has_service('TLS'):
745 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700746 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700747 tls = TLSAuthTest(client_cert = self.CLIENT_CERT)
748 tls.runTest()
749 if tls.failTest == False:
750 self.test_status = True
751 return self.test_status
752 else:
753 self.test_status = True
754 return self.test_status
755
756 def tls_non_ca_authrized_cert(self, subscriber):
757 if subscriber.has_service('TLS'):
758 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700759 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700760 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
761 tls.runTest()
762 if tls.failTest == False:
763 self.test_status = True
764 return self.test_status
765 else:
766 self.test_status = True
767 return self.test_status
768
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700769 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
770 if subscriber.has_service('TLS'):
771 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700772 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700773 num_users = 3
774 for i in xrange(num_users):
775 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
776 tls.runTest()
777 if tls.failTest == False:
778 self.test_status = True
779 return self.test_status
780 else:
781 self.test_status = True
782 return self.test_status
783
784 def dhcp_discover_scenario(self, subscriber):
785 if subscriber.has_service('DHCP'):
786 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700787 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700788 t1 = self.subscriber_dhcp_1release()
789 self.test_status = True
790 return self.test_status
791 else:
792 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
793 self.test_status = True
794 return self.test_status
795
796 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700797 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
798 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
799 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
800 self.onos_dhcp_table_load(config)
801 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
802 cip, sip = self.send_recv()
803 log_test.info('Releasing ip %s to server %s' %(cip, sip))
804 assert_equal(self.dhcp.release(cip), True)
805 log_test.info('Triggering DHCP discover again after release')
806 cip2, sip2 = self.send_recv(update_seed = True)
807 log_test.info('Verifying released IP was given back on rediscover')
808 assert_equal(cip, cip2)
809 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
810 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700811
812 def dhcp_client_reboot_scenario(self, subscriber):
813 if subscriber.has_service('DHCP'):
814 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700815 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700816 tl = self.subscriber_dhcp_client_request_after_reboot()
817 self.test_status = True
818 return self.test_status
819 else:
820 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
821 self.test_status = True
822 return self.test_status
823
824 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
825 #''' Client sends DHCP Request after reboot.'''
826
827 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
828 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
829 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
830 self.onos_dhcp_table_load(config)
831 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
832 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700833 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700834 (cip, sip, mac) )
835
A R Karthick76a497a2017-04-12 10:59:39 -0700836 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 -0700837
838 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700839 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 -0700840 assert_not_equal(cip, None)
841
842 else:
843 new_cip, new_sip = self.dhcp.only_request(cip, mac)
844 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700845 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700846 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700847 log_test.info('Client goes down.')
848 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700849
850 time.sleep(5)
851
852 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700853 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700854
855 new_cip, new_sip = self.dhcp.only_request(cip, mac)
856 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700857 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700858 assert_not_equal(new_cip, None)
859 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700860 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700861
862 def dhcp_client_renew_scenario(self, subscriber):
863 if subscriber.has_service('DHCP'):
864 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700865 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700866 tl = self.subscriber_dhcp_client_renew_time()
867 self.test_status = True
868 return self.test_status
869 else:
870 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
871 self.test_status = True
872 return self.test_status
873
874 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
875 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
876 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
877 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
878 self.onos_dhcp_table_load(config)
879 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
880 cip, sip, mac , lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700881 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700882 (cip, sip, mac) )
883
A R Karthick76a497a2017-04-12 10:59:39 -0700884 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 -0700885 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700886 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 -0700887 assert_not_equal(cip, None)
888 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700889 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700890 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
891 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700892 log_test.info("Client 's Renewal time is :%s",lval)
893 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700894 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700895 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700896 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
897 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700898 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700899 (latest_cip, mac, latest_sip) )
900
901 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700902 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700903 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700904 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700905
906 def dhcp_server_reboot_scenario(self, subscriber):
907 if subscriber.has_service('DHCP'):
908 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700909 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700910 tl = self.subscriber_dhcp_server_after_reboot()
911 self.test_status = True
912 return self.test_status
913 else:
914 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
915 self.test_status = True
916 return self.test_status
917
918 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
919 ''' DHCP server goes down.'''
920 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
921 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
922 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
923 self.onos_dhcp_table_load(config)
924 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
925 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700926 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700927 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700928 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 -0700929 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700930 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 -0700931 assert_not_equal(cip, None)
932 else:
933 new_cip, new_sip = self.dhcp.only_request(cip, mac)
934 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700935 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700936 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700937 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700938 onos_ctrl = OnosCtrl(self.dhcp_app)
939 onos_ctrl.deactivate()
940 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700941 log_test.info("Sending DHCP Request.")
942 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700943 new_cip, new_sip = self.dhcp.only_request(cip, mac)
944 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700945 log_test.info('')
946 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700947 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700948 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700949 assert_equal(new_cip,None) #Neagtive Test Case
A R Karthick76a497a2017-04-12 10:59:39 -0700950 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700951# self.activate_apps(self.dhcp_app)
952 onos_ctrl = OnosCtrl(self.dhcp_app)
953 status, _ = onos_ctrl.activate()
954 assert_equal(status, True)
955 time.sleep(3)
956 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700957 log_test.info("Sending DHCP Request after DHCP server is up.")
958 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700959 new_cip, new_sip = self.dhcp.only_request(cip, mac)
960 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700961 log_test.info('')
962 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700963 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700964 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700965 assert_equal(new_cip,None) #Neagtive Test Case
966
967 def dhcp_client_rebind_scenario(self, subscriber):
968 if subscriber.has_service('DHCP'):
969 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700970 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700971 tl = self.subscriber_dhcp_client_rebind_time()
972 self.test_status = True
973 return self.test_status
974 else:
975 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
976 self.test_status = True
977 return self.test_status
978
979 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
980 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
981 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
982 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
983 self.onos_dhcp_table_load(config)
984 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
985 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700986 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700987 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700988 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 -0700989 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700990 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 -0700991 assert_not_equal(cip, None)
992 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700993 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700994 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
995 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700996 log_test.info("Client 's Rebind time is :%s",lval)
997 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700998 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700999 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001000 self.dhcp.after_T2 = True
1001 for i in range(0,4):
1002 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
1003 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -07001004 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001005 (latest_cip, mac, latest_sip) )
1006 break
1007 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001008 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001009 assert_not_equal(latest_cip, None)
1010 elif new_cip == None or new_sip == None or lval == 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
1013 def dhcp_starvation_scenario(self, subscriber):
1014 if subscriber.has_service('DHCP'):
1015 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001016 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001017 tl = self.subscriber_dhcp_starvation()
1018 self.test_status = True
1019 return self.test_status
1020 else:
1021 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1022 self.test_status = True
1023 return self.test_status
1024
1025 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
1026 '''DHCP starve'''
1027 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
1028 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
1029 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
1030 self.onos_dhcp_table_load(config)
1031 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001032 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001033 for x in xrange(50):
1034 mac = RandMAC()._fix()
1035 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -07001036 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001037 cip, sip = self.send_recv(update_seed = True, validate = False)
1038 assert_equal(cip, None)
1039 assert_equal(sip, None)
1040
1041 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
1042 if subscriber.has_service('DHCP'):
1043 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001044 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001045 tl = self.subscriber_dhcp_same_client_multiple_discover()
1046 self.test_status = True
1047 return self.test_status
1048 else:
1049 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1050 self.test_status = True
1051 return self.test_status
1052
1053 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
1054 ''' DHCP Client sending multiple discover . '''
1055 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1056 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1057 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1058 self.onos_dhcp_table_load(config)
1059 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
1060 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001061 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 -07001062 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001063 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001064 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
1065 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001066 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 -07001067 % (new_cip, new_sip, new_mac) )
1068 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001069 log_test.info('Ip after 1st discover %s' %cip)
1070 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001071 assert_equal(cip, new_cip)
1072
1073 def dhcp_same_client_multi_request_scenario(self, subscriber):
1074 if subscriber.has_service('DHCP'):
1075 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001076 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001077 tl = self.subscriber_dhcp_same_client_multiple_request()
1078 self.test_status = True
1079 return self.test_status
1080 else:
1081 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1082 self.test_status = True
1083 return self.test_status
1084
1085 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1086 ''' DHCP Client sending multiple repeat DHCP requests. '''
1087 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1088 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1089 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1090 self.onos_dhcp_table_load(config)
1091 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001092 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001093 cip, sip = self.send_recv()
1094 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001095 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001096 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1097 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001098 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 -07001099 % (new_cip, new_sip, mac) )
1100 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001101 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001102 assert_equal(new_cip, None)
1103 assert_equal(new_sip, None)
1104 else:
1105 print "Something went wrong."
1106
1107 def dhcp_client_desired_ip_scenario(self, subscriber):
1108 if subscriber.has_service('DHCP'):
1109 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001110 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001111 tl = self.subscriber_dhcp_client_desired_address()
1112 self.test_status = True
1113 return self.test_status
1114 else:
1115 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1116 self.test_status = True
1117 return self.test_status
1118
1119 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1120 '''DHCP Client asking for desired IP address.'''
1121 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1122 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1123 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1124 self.onos_dhcp_table_load(config)
1125 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1126 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001127 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001128 (cip, sip, mac) )
1129 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001130 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001131 (cip, sip, mac) )
1132 elif 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 .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001134 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001135 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001136 assert_equal(cip, self.dhcp.seed_ip)
1137
1138 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1139 if subscriber.has_service('DHCP'):
1140 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001141 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001142 tl = self.subscriber_dhcp_server_nak_packet()
1143 self.test_status = True
1144 return self.test_status
1145 else:
1146 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1147 self.test_status = True
1148 return self.test_status
1149
1150 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1151 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1152 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1153 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1154 self.onos_dhcp_table_load(config)
1155 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1156 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001157 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001158 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001159 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 -07001160 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001161 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 -07001162 assert_not_equal(cip, None)
1163 else:
1164 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1165 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001166 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001167 assert_equal(new_cip, None) #Negative Test Case
1168
1169 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1170 if subscriber.has_service('DHCP'):
1171 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001172 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001173 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1174 self.test_status = True
1175 return self.test_status
1176 else:
1177 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1178 self.test_status = True
1179 return self.test_status
1180
1181 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1182 '''DHCP Client asking for desired IP address from out of pool.'''
1183 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1184 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1185 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1186 self.onos_dhcp_table_load(config)
1187 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1188 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001189 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001190 (cip, sip, mac) )
1191 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001192 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001193 (cip, sip, mac) )
1194 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1195
1196 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001197 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001198 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001199 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001200 assert_not_equal(cip, self.dhcp.seed_ip)
1201
1202 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001203 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001204
1205 def dhcp_client_specific_lease_scenario(self, subscriber):
1206 if subscriber.has_service('DHCP'):
1207 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001208 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001209 tl = self.subscriber_dhcp_specific_lease_packet()
1210 self.test_status = True
1211 return self.test_status
1212 else:
1213 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1214 self.test_status = True
1215 return self.test_status
1216
1217 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1218 ''' Client sends DHCP Discover packet for particular lease time.'''
1219 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1220 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1221 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1222 self.onos_dhcp_table_load(config)
1223 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001224 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001225 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1226
A R Karthick76a497a2017-04-12 10:59:39 -07001227 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001228 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001229 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 -07001230 assert_not_equal(cip, None)
1231 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001232 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 -07001233 (cip, sip, mac, lval) )
1234 assert_not_equal(lval, 700)
1235
1236 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001237 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001238 self.num_subscribers = 5
1239 self.num_channels = 1
A R Karthicka478df42016-07-27 16:51:08 -07001240 test_status = True
1241 ##Run this test only if ONOS can be restarted as it incurs a network-cfg change
1242 if self.onos_restartable is True:
1243 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1244 num_channels = self.num_channels,
1245 port_list = self.generate_port_list(self.num_subscribers,
1246 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001247 assert_equal(test_status, True)
1248
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001249 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001250 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001251 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001252 self.num_channels = 10
1253 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1254 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001255 cbs = (self.tls_verify, self.dhcp_jump_verify,
1256 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001257 port_list = self.generate_port_list(self.num_subscribers,
1258 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001259 assert_equal(test_status, True)
1260
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001261 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001262 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001263 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001264 self.num_channels = 10
1265 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1266 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001267 cbs = (self.tls_verify, self.dhcp_next_verify,
1268 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001269 port_list = self.generate_port_list(self.num_subscribers,
1270 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001271 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001272
A.R Karthick517f7812017-05-18 11:22:46 -07001273 def test_cord_subscriber_join_next_without_leave(self):
1274 """Test subscriber join next for channel surfing"""
1275 self.num_subscribers = self.num_ports * len(self.switches)
1276 self.num_channels = 5
1277 self.leave_flag = False
1278 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1279 num_channels = self.num_channels,
1280 cbs = (self.tls_verify, self.dhcp_next_verify,
1281 self.igmp_next_verify, self.traffic_verify),
1282 port_list = self.generate_port_list(self.num_subscribers,
1283 self.num_channels))
1284 self.leave_flag = True
1285 assert_equal(test_status, True)
1286
A R Karthick31f1f342017-05-19 13:55:10 -07001287 def test_cord_subscriber_leave(self):
1288 """Test subscriber leaves for all the join nexts before"""
1289 self.num_subscribers = self.num_ports * len(self.switches)
1290 self.num_channels = 5
1291 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1292 num_channels = self.num_channels,
1293 cbs = (self.tls_verify, self.dhcp_next_verify,
1294 self.igmp_leave_verify, self.traffic_verify),
1295 port_list = self.generate_port_list(self.num_subscribers,
1296 self.num_channels))
1297 assert_equal(test_status, True)
1298
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001299 #@deferred(SUBSCRIBER_TIMEOUT)
1300 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1301 ### """Test subscriber to auth with invalidCertification and join channel"""
1302 num_subscribers = 1
1303 num_channels = 1
1304 df = defer.Deferred()
1305 def sub_auth_invalid_cert(df):
1306 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1307 num_channels = num_channels,
1308 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1309 self.igmp_verify, self.traffic_verify),
1310 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1311 assert_equal(test_status, False)
1312 df.callback(0)
1313 reactor.callLater(0, sub_auth_invalid_cert, df)
1314 return df
1315
1316 #@deferred(SUBSCRIBER_TIMEOUT)
1317 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1318 ### """Test subscriber to auth with No Certification and join channel"""
1319 num_subscribers = 1
1320 num_channels = 1
1321 df = defer.Deferred()
1322 def sub_auth_no_cert(df):
1323 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1324 num_channels = num_channels,
1325 cbs = (self.tls_no_cert, self.dhcp_verify,
1326 self.igmp_verify, self.traffic_verify),
1327 port_list = self.generate_port_list(num_subscribers, num_channels),
1328 negative_subscriber_auth = 'all')
1329 assert_equal(test_status, False)
1330 df.callback(0)
1331 reactor.callLater(0, sub_auth_no_cert, df)
1332 return df
1333 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1334 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1335 num_subscribers = 1
1336 num_channels = 1
1337 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1338 num_channels = num_channels,
1339 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1340 self.igmp_verify, self.traffic_verify),
1341 port_list = self.generate_port_list(num_subscribers, num_channels),
1342 negative_subscriber_auth = 'all')
1343 assert_equal(test_status, True)
1344
1345 @deferred(SUBSCRIBER_TIMEOUT)
1346 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1347 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1348 num_subscribers = 2
1349 num_channels = 1
1350 df = defer.Deferred()
1351 def sub_auth_invalid_cert(df):
1352 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1353 num_channels = num_channels,
1354 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1355 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1356 assert_equal(test_status, True)
1357 df.callback(0)
1358 reactor.callLater(0, sub_auth_invalid_cert, df)
1359 return df
1360
1361 @deferred(SUBSCRIBER_TIMEOUT)
1362 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1363 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1364 num_subscribers = 2
1365 num_channels = 1
1366 df = defer.Deferred()
1367 def sub_auth_no_cert(df):
1368 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1369 num_channels = num_channels,
1370 cbs = (self.tls_no_cert, self.dhcp_verify,
1371 self.igmp_verify, self.traffic_verify),
1372 port_list = self.generate_port_list(num_subscribers, num_channels),
1373 negative_subscriber_auth = 'half')
1374 assert_equal(test_status, True)
1375 df.callback(0)
1376 reactor.callLater(0, sub_auth_no_cert, df)
1377 return df
1378
1379 @deferred(SUBSCRIBER_TIMEOUT)
1380 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1381 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1382 num_subscribers = 2
1383 num_channels = 1
1384 df = defer.Deferred()
1385 def sub_auth_no_cert(df):
1386 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1387 num_channels = num_channels,
1388 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1389 self.igmp_verify, self.traffic_verify),
1390 port_list = self.generate_port_list(num_subscribers, num_channels),
1391 negative_subscriber_auth = 'half')
1392 assert_equal(test_status, True)
1393 df.callback(0)
1394 reactor.callLater(0, sub_auth_no_cert, df)
1395 return df
1396
1397 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1398 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1399 num_subscribers = 1
1400 num_channels = 1
1401 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1402 num_channels = num_channels,
1403 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1404 self.igmp_verify, self.traffic_verify),
1405 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1406 assert_equal(test_status, True)
1407
1408 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1409 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1410 num_subscribers = 1
1411 num_channels = 1
1412 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1413 num_channels = num_channels,
1414 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1415 self.igmp_verify, self.traffic_verify),
1416 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1417 assert_equal(test_status, True)
1418
1419 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1420 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1421 num_subscribers = 1
1422 num_channels = 1
1423 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1424 num_channels = num_channels,
1425 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1426 self.igmp_verify, self.traffic_verify),
1427 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1428 assert_equal(test_status, True)
1429
1430 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1431 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1432 num_subscribers = 1
1433 num_channels = 1
1434 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1435 num_channels = num_channels,
1436 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1437 self.igmp_verify, self.traffic_verify),
1438 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1439 assert_equal(test_status, True)
1440
1441
1442 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1443 ### """Test subscriber auth , DHCP starvation and join channel"""
1444 num_subscribers = 1
1445 num_channels = 1
1446 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1447 num_channels = num_channels,
1448 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1449 self.igmp_verify, self.traffic_verify),
1450 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1451 assert_equal(test_status, True)
1452
1453 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1454 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1455 num_subscribers = 1
1456 num_channels = 1
1457 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1458 num_channels = num_channels,
1459 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1460 self.igmp_verify, self.traffic_verify),
1461 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1462 assert_equal(test_status, True)
1463
1464 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1465 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1466 num_subscribers = 1
1467 num_channels = 1
1468 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1469 num_channels = num_channels,
1470 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1471 self.igmp_verify, self.traffic_verify),
1472 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1473 assert_equal(test_status, True)
1474
1475 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1476 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1477 num_subscribers = 1
1478 num_channels = 1
1479 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1480 num_channels = num_channels,
1481 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1482 self.igmp_verify, self.traffic_verify),
1483 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1484 assert_equal(test_status, True)
1485
1486 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1487 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1488 num_subscribers = 1
1489 num_channels = 1
1490 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1491 num_channels = num_channels,
1492 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1493 self.igmp_verify, self.traffic_verify),
1494 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1495 assert_equal(test_status, True)
1496
1497 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1498 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1499 num_subscribers = 1
1500 num_channels = 1
1501 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1502 num_channels = num_channels,
1503 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1504 self.igmp_verify, self.traffic_verify),
1505 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1506 assert_equal(test_status, True)
1507
1508
1509 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1510 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1511 num_subscribers = 1
1512 num_channels = 1
1513 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1514 num_channels = num_channels,
1515 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1516 self.igmp_verify, self.traffic_verify),
1517 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1518 assert_equal(test_status, True)
1519
1520 #@deferred(SUBSCRIBER_TIMEOUT)
1521 @nottest
1522 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1523 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1524 num_subscribers = 1000
1525 num_channels = 1
1526 df = defer.Deferred()
1527 def sub_auth_invalid_cert(df):
1528 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1529 num_channels = num_channels,
1530 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1531 self.igmp_verify, self.traffic_verify),
1532 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1533 assert_equal(test_status, True)
1534 df.callback(0)
1535 reactor.callLater(0, sub_auth_invalid_cert, df)
1536 return df
1537
1538 @nottest
1539 @deferred(SUBSCRIBER_TIMEOUT)
1540 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1541 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1542 num_subscribers = 1000
1543 num_channels = 1
1544 df = defer.Deferred()
1545 def sub_auth_no_cert(df):
1546 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1547 num_channels = num_channels,
1548 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1549 port_list = self.generate_port_list(num_subscribers, num_channels),
1550 negative_subscriber_auth = 'half')
1551 assert_equal(test_status, True)
1552 df.callback(0)
1553 reactor.callLater(0, sub_auth_no_cert, df)
1554 return df
1555
1556 #@deferred(SUBSCRIBER_TIMEOUT)
1557 @nottest
1558 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1559 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1560 num_subscribers = 1000
1561 num_channels = 1
1562 df = defer.Deferred()
1563 def sub_auth_no_cert(df):
1564 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1565 num_channels = num_channels,
1566 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1567 port_list = self.generate_port_list(num_subscribers, num_channels),
1568 negative_subscriber_auth = 'half')
1569 assert_equal(test_status, True)
1570 df.callback(0)
1571 reactor.callLater(0, sub_auth_no_cert, df)
1572 return df
1573
1574 #@deferred(SUBSCRIBER_TIMEOUT)
1575 @nottest
1576 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1577 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1578 num_subscribers = 5000
1579 num_channels = 1
1580 df = defer.Deferred()
1581 def sub_auth_invalid_cert(df):
1582 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1583 num_channels = num_channels,
1584 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1585 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1586 assert_equal(test_status, True)
1587 df.callback(0)
1588 reactor.callLater(0, sub_auth_invalid_cert, df)
1589 return df
1590
1591 #@deferred(SUBSCRIBER_TIMEOUT)
1592 @nottest
1593 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1594 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1595 num_subscribers = 5000
1596 num_channels = 1
1597 df = defer.Deferred()
1598 def sub_auth_no_cert(df):
1599 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1600 num_channels = num_channels,
1601 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1602 port_list = self.generate_port_list(num_subscribers, num_channels),
1603 negative_subscriber_auth = 'half')
1604 assert_equal(test_status, True)
1605 df.callback(0)
1606 reactor.callLater(0, sub_auth_no_cert, df)
1607 return df
1608
1609 #@deferred(SUBSCRIBER_TIMEOUT)
1610 @nottest
1611 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1612 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1613 num_subscribers = 5000
1614 num_channels = 1
1615 df = defer.Deferred()
1616 def sub_auth_no_cert(df):
1617 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1618 num_channels = num_channels,
1619 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1620 port_list = self.generate_port_list(num_subscribers, num_channels),
1621 negative_subscriber_auth = 'half')
1622 assert_equal(test_status, True)
1623 df.callback(0)
1624 reactor.callLater(0, sub_auth_no_cert, df)
1625 return df
1626
1627 #@deferred(SUBSCRIBER_TIMEOUT)
1628 @nottest
1629 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1630 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1631 num_subscribers = 10000
1632 num_channels = 1
1633 df = defer.Deferred()
1634 def sub_auth_invalid_cert(df):
1635 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1636 num_channels = num_channels,
1637 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1638 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1639 assert_equal(test_status, True)
1640 df.callback(0)
1641 reactor.callLater(0, sub_auth_invalid_cert, df)
1642 return df
1643
1644 #@deferred(SUBSCRIBER_TIMEOUT)
1645 @nottest
1646 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1647 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1648 num_subscribers = 10000
1649 num_channels = 1
1650 df = defer.Deferred()
1651 def sub_auth_no_cert(df):
1652 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1653 num_channels = num_channels,
1654 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1655 port_list = self.generate_port_list(num_subscribers, num_channels),
1656 negative_subscriber_auth = 'onethird')
1657 assert_equal(test_status, True)
1658 df.callback(0)
1659 reactor.callLater(0, sub_auth_no_cert, df)
1660 return df
1661
1662 #@deferred(SUBSCRIBER_TIMEOUT)
1663 @nottest
1664 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1665 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1666 num_subscribers = 10000
1667 num_channels = 1
1668 df = defer.Deferred()
1669 def sub_auth_no_cert(df):
1670 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1671 num_channels = num_channels,
1672 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1673 port_list = self.generate_port_list(num_subscribers, num_channels),
1674 negative_subscriber_auth = 'onethird')
1675 assert_equal(test_status, False)
1676 assert_equal(test_status, True)
1677 df.callback(0)
1678 reactor.callLater(0, sub_auth_no_cert, df)
1679 return df
1680
1681 @nottest
1682 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1683 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1684 num_subscribers = 1000
1685 num_channels = 1
1686 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1687 num_channels = num_channels,
1688 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1689 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1690 assert_equal(test_status, True)
1691
1692 @nottest
1693 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1694 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1695 num_subscribers = 1000
1696 num_channels = 1
1697 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1698 num_channels = num_channels,
1699 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1700 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1701 assert_equal(test_status, True)
1702
1703 @nottest
1704 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1705 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1706 num_subscribers = 1000
1707 num_channels = 1
1708 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1709 num_channels = num_channels,
1710 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1711 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1712 assert_equal(test_status, True)
1713
1714 @nottest
1715 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1716 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1717 num_subscribers = 1000
1718 num_channels = 1
1719 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1720 num_channels = num_channels,
1721 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1722 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1723 assert_equal(test_status, True)
1724
1725 @nottest
1726 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1727 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1728 num_subscribers = 1000
1729 num_channels = 1
1730 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1731 num_channels = num_channels,
1732 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1733 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1734 assert_equal(test_status, True)
1735
1736 @nottest
1737 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1738 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1739 num_subscribers = 1000
1740 num_channels = 1
1741 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1742 num_channels = num_channels,
1743 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1744 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1745 assert_equal(test_status, True)
1746
1747 @nottest
1748 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1749 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1750 num_subscribers = 1000
1751 num_channels = 1
1752 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1753 num_channels = num_channels,
1754 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1755 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1756 assert_equal(test_status, True)
1757
1758 def test_4_cord_subscribers_join_recv_5channel(self):
1759 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1760 num_subscribers = 4
1761 num_channels = 5
1762 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1763 num_channels = num_channels,
1764 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1765 port_list = self.generate_port_list(num_subscribers, num_channels),
1766 negative_subscriber_auth = 'all')
1767 assert_equal(test_status, True)
1768
1769 def test_4_cord_subscribers_join_jump_5channel(self):
1770 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1771 num_subscribers = 4
1772 num_channels = 5
1773 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1774 num_channels = num_channels,
1775 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1776 port_list = self.generate_port_list(num_subscribers, num_channels),
1777 negative_subscriber_auth = 'all')
1778 assert_equal(test_status, True)
1779
1780 def test_4_cord_subscribers_join_next_5channel(self):
1781 ###"""Test 4 subscribers join next for 5 channels"""
1782 num_subscribers = 4
1783 num_channels = 5
1784 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1785 num_channels = num_channels,
1786 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1787 port_list = self.generate_port_list(num_subscribers, num_channels),
1788 negative_subscriber_auth = 'all')
1789 assert_equal(test_status, True)
1790
1791 def test_10_cord_subscribers_join_recv_5channel(self):
1792 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1793 num_subscribers = 10
1794 num_channels = 5
1795 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1796 num_channels = num_channels,
1797 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1798 port_list = self.generate_port_list(num_subscribers, num_channels),
1799 negative_subscriber_auth = 'all')
1800 assert_equal(test_status, True)
1801
1802 def test_10_cord_subscribers_join_jump_5channel(self):
1803 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1804 num_subscribers = 10
1805 num_channels = 5
1806 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1807 num_channels = num_channels,
1808 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1809 port_list = self.generate_port_list(num_subscribers, num_channels),
1810 negative_subscriber_auth = 'all')
1811 assert_equal(test_status, True)
1812
1813
1814 def test_10_cord_subscribers_join_next_5channel(self):
1815 ###"""Test 10 subscribers join next for 5 channels"""
1816 num_subscribers = 10
1817 num_channels = 5
1818 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1819 num_channels = num_channels,
1820 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1821 port_list = self.generate_port_list(num_subscribers, num_channels),
1822 negative_subscriber_auth = 'all')
1823 assert_equal(test_status, True)
1824
1825
1826
1827 def test_cord_subscriber_join_recv_100channels(self):
1828 num_subscribers = 1
1829 num_channels = 100
1830 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1831 num_channels = num_channels,
1832 cbs = (self.tls_verify, self.dhcp_verify,
1833 self.igmp_verify, self.traffic_verify),
1834 port_list = self.generate_port_list(num_subscribers, num_channels),
1835 negative_subscriber_auth = 'all')
1836 assert_equal(test_status, True)
1837
1838 def test_cord_subscriber_join_recv_400channels(self):
1839 num_subscribers = 1
1840 num_channels = 400
1841 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1842 num_channels = num_channels,
1843 cbs = (self.tls_verify, self.dhcp_verify,
1844 self.igmp_verify, self.traffic_verify),
1845 port_list = self.generate_port_list(num_subscribers, num_channels),
1846 negative_subscriber_auth = 'all')
1847 assert_equal(test_status, True)
1848
1849 def test_cord_subscriber_join_recv_800channels(self):
1850 num_subscribers = 1
1851 num_channels = 800
1852 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1853 num_channels = num_channels,
1854 cbs = (self.tls_verify, self.dhcp_verify,
1855 self.igmp_verify, self.traffic_verify),
1856 port_list = self.generate_port_list(num_subscribers, num_channels),
1857 negative_subscriber_auth = 'all')
1858 assert_equal(test_status, True)
1859
1860 def test_cord_subscriber_join_recv_1200channels(self):
1861 num_subscribers = 1
1862 num_channels = 1200
1863 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1864 num_channels = num_channels,
1865 cbs = (self.tls_verify, self.dhcp_verify,
1866 self.igmp_verify, self.traffic_verify),
1867 port_list = self.generate_port_list(num_subscribers, num_channels),
1868 negative_subscriber_auth = 'all')
1869 assert_equal(test_status, True)
1870
1871 def test_cord_subscriber_join_recv_1500channels(self):
1872 num_subscribers = 1
1873 num_channels = 1500
1874 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1875 num_channels = num_channels,
1876 cbs = (self.tls_verify, self.dhcp_verify,
1877 self.igmp_verify, self.traffic_verify),
1878 port_list = self.generate_port_list(num_subscribers, num_channels),
1879 negative_subscriber_auth = 'all')
1880 assert_equal(test_status, True)
1881
1882 def test_cord_subscriber_join_jump_100channels(self):
1883 num_subscribers = 1
1884 num_channels = 100
1885 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1886 num_channels = num_channels,
1887 cbs = (self.tls_verify, self.dhcp_jump_verify,
1888 self.igmp_jump_verify, self.traffic_verify),
1889 port_list = self.generate_port_list(num_subscribers, num_channels),
1890 negative_subscriber_auth = 'all')
1891 assert_equal(test_status, True)
1892 def test_cord_subscriber_join_jump_400channels(self):
1893 num_subscribers = 1
1894 num_channels = 400
1895 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1896 num_channels = num_channels,
1897 cbs = (self.tls_verify, self.dhcp_jump_verify,
1898 self.igmp_jump_verify, self.traffic_verify),
1899 port_list = self.generate_port_list(num_subscribers, num_channels),
1900 negative_subscriber_auth = 'all')
1901 assert_equal(test_status, True)
1902
1903 def test_cord_subscriber_join_jump_800channels(self):
1904 num_subscribers = 1
1905 num_channels = 800
1906 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1907 num_channels = num_channels,
1908 cbs = (self.tls_verify, self.dhcp_jump_verify,
1909 self.igmp_jump_verify, self.traffic_verify),
1910 port_list = self.generate_port_list(num_subscribers, num_channels),
1911 negative_subscriber_auth = 'all')
1912 assert_equal(test_status, True)
1913 def test_cord_subscriber_join_jump_1200channel(sself):
1914 num_subscribers = 1
1915 num_channels = 1200
1916 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1917 num_channels = num_channels,
1918 cbs = (self.tls_verify, self.dhcp_jump_verify,
1919 self.igmp_jump_verify, self.traffic_verify),
1920 port_list = self.generate_port_list(num_subscribers, num_channels),
1921 negative_subscriber_auth = 'all')
1922 assert_equal(test_status, True)
1923 def test_cord_subscriber_join_jump_1500channels(self):
1924 num_subscribers = 1
1925 num_channels = 1500
1926 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1927 num_channels = num_channels,
1928 cbs = (self.tls_verify, self.dhcp_jump_verify,
1929 self.igmp_jump_verify, self.traffic_verify),
1930 port_list = self.generate_port_list(num_subscribers, num_channels),
1931 negative_subscriber_auth = 'all')
1932 assert_equal(test_status, True)
1933
1934 def test_cord_subscriber_join_next_100channels(self):
1935 num_subscribers = 1
1936 num_channels = 100
1937 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1938 num_channels = num_channels,
1939 cbs = (self.tls_verify, self.dhcp_next_verify,
1940 self.igmp_next_verify, self.traffic_verify),
1941 port_list = self.generate_port_list(num_subscribers, num_channels),
1942 negative_subscriber_auth = 'all')
1943 assert_equal(test_status, True)
1944
1945 def test_cord_subscriber_join_next_400channels(self):
1946 num_subscribers = 1
1947 num_channels = 400
1948 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1949 num_channels = num_channels,
1950 cbs = (self.tls_verify, self.dhcp_next_verify,
1951 self.igmp_next_verify, self.traffic_verify),
1952 port_list = self.generate_port_list(num_subscribers, num_channels),
1953 negative_subscriber_auth = 'all')
1954 assert_equal(test_status, True)
1955
1956 def test_cord_subscriber_join_next_800channels(self):
1957 num_subscribers = 1
1958 num_channels = 800
1959 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1960 num_channels = num_channels,
1961 cbs = (self.tls_verify, self.dhcp_next_verify,
1962 self.igmp_next_verify, self.traffic_verify),
1963 port_list = self.generate_port_list(num_subscribers, num_channels),
1964 negative_subscriber_auth = 'all')
1965 assert_equal(test_status, True)
1966
1967
1968 def test_cord_subscriber_join_next_1200channels(self):
1969 num_subscribers = 1
1970 num_channels = 1200
1971 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1972 num_channels = num_channels,
1973 cbs = (self.tls_verify, self.dhcp_next_verify,
1974 self.igmp_next_verify, self.traffic_verify),
1975 port_list = self.generate_port_list(num_subscribers, num_channels),
1976 negative_subscriber_auth = 'all')
1977 assert_equal(test_status, True)
1978
1979 def test_cord_subscriber_join_next_1500channels(self):
1980 num_subscribers = 1
1981 num_channels = 1500
1982 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1983 num_channels = num_channels,
1984 cbs = (self.tls_verify, self.dhcp_next_verify,
1985 self.igmp_next_verify, self.traffic_verify),
1986 port_list = self.generate_port_list(num_subscribers, num_channels),
1987 negative_subscriber_auth = 'all')
1988 assert_equal(test_status, True)
1989
1990 @nottest
1991 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1992 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1993 num_subscribers = 1000
1994 num_channels = 1
1995 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1996 num_channels = num_channels,
1997 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
1998 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1999 assert_equal(test_status, True)
2000
2001 @nottest
2002 def test_1k_cord_subscribers_join_recv_100channel(self):
2003 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
2004 num_subscribers = 1000
2005 num_channels = 100
2006 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2007 num_channels = num_channels,
2008 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2009 port_list = self.generate_port_list(num_subscribers, num_channels),
2010 negative_subscriber_auth = 'all')
2011 assert_equal(test_status, True)
2012
2013 @nottest
2014 def test_1k_cord_subscribers_join_jump_100channel(self):
2015 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
2016 num_subscribers = 1000
2017 num_channels = 100
2018 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2019 num_channels = num_channels,
2020 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2021 port_list = self.generate_port_list(num_subscribers, num_channels),
2022 negative_subscriber_auth = 'all')
2023 assert_equal(test_status, True)
2024
2025 @nottest
2026 def test_1k_cord_subscribers_join_next_100channel(self):
2027 ###"""Test 1k subscribers join next for 100 channels"""
2028 num_subscribers = 1000
2029 num_channels = 100
2030 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2031 num_channels = num_channels,
2032 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2033 port_list = self.generate_port_list(num_subscribers, num_channels),
2034 negative_subscriber_auth = 'all')
2035 assert_equal(test_status, True)
2036
2037 @nottest
2038 def test_1k_cord_subscribers_join_recv_400channel(self):
2039 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
2040 num_subscribers = 1000
2041 num_channels = 400
2042 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2043 num_channels = num_channels,
2044 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2045 port_list = self.generate_port_list(num_subscribers, num_channels),
2046 negative_subscriber_auth = 'all')
2047 assert_equal(test_status, True)
2048
2049 @nottest
2050 def test_1k_cord_subscribers_join_jump_400channel(self):
2051 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
2052 num_subscribers = 1000
2053 num_channels = 400
2054 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2055 num_channels = num_channels,
2056 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2057 port_list = self.generate_port_list(num_subscribers, num_channels),
2058 negative_subscriber_auth = 'all')
2059 assert_equal(test_status, True)
2060
2061 @nottest
2062 def test_1k_cord_subscribers_join_next_400channel(self):
2063 ###"""Test 1k subscribers join next for 400 channels"""
2064 num_subscribers = 1000
2065 num_channels = 400
2066 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2067 num_channels = num_channels,
2068 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2069 port_list = self.generate_port_list(num_subscribers, num_channels),
2070 negative_subscriber_auth = 'all')
2071 assert_equal(test_status, True)
2072
2073 @nottest
2074 def test_1k_cord_subscribers_join_recv_800channel(self):
2075 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2076 num_subscribers = 1000
2077 num_channels = 800
2078 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2079 num_channels = num_channels,
2080 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2081 port_list = self.generate_port_list(num_subscribers, num_channels),
2082 negative_subscriber_auth = 'all')
2083 assert_equal(test_status, True)
2084
2085 @nottest
2086 def test_1k_cord_subscribers_join_jump_800channel(self):
2087 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2088 num_subscribers = 1000
2089 num_channels = 800
2090 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2091 num_channels = num_channels,
2092 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2093 port_list = self.generate_port_list(num_subscribers, num_channels),
2094 negative_subscriber_auth = 'all')
2095 assert_equal(test_status, True)
2096
2097 @nottest
2098 def test_1k_cord_subscribers_join_next_800channel(self):
2099 ###"""Test 1k subscribers join next for 800 channels"""
2100 num_subscribers = 1000
2101 num_channels = 800
2102 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2103 num_channels = num_channels,
2104 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2105 port_list = self.generate_port_list(num_subscribers, num_channels),
2106 negative_subscriber_auth = 'all')
2107 assert_equal(test_status, True)
2108
2109 @nottest
2110 def test_1k_cord_subscribers_join_recv_1200channel(self):
2111 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2112 num_subscribers = 1000
2113 num_channels = 1200
2114 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2115 num_channels = num_channels,
2116 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2117 port_list = self.generate_port_list(num_subscribers, num_channels),
2118 negative_subscriber_auth = 'all')
2119 assert_equal(test_status, True)
2120
2121 @nottest
2122 def test_1k_cord_subscribers_join_jump_1200channel(self):
2123 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2124 num_subscribers = 1000
2125 num_channels = 1200
2126 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2127 num_channels = num_channels,
2128 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2129 port_list = self.generate_port_list(num_subscribers, num_channels),
2130 negative_subscriber_auth = 'all')
2131 assert_equal(test_status, True)
2132
2133 @nottest
2134 def test_1k_cord_subscribers_join_next_1200channel(self):
2135 ###"""Test 1k subscribers join next for 1200 channels"""
2136 num_subscribers = 1000
2137 num_channels = 1200
2138 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2139 num_channels = num_channels,
2140 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2141 port_list = self.generate_port_list(num_subscribers, num_channels),
2142 negative_subscriber_auth = 'all')
2143 assert_equal(test_status, True)
2144
2145 @nottest
2146 def test_1k_cord_subscribers_join_recv_1500channel(self):
2147 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2148 num_subscribers = 1000
2149 num_channels = 1500
2150 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2151 num_channels = num_channels,
2152 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2153 port_list = self.generate_port_list(num_subscribers, num_channels),
2154 negative_subscriber_auth = 'all')
2155 assert_equal(test_status, True)
2156
2157 @nottest
2158 def test_1k_cord_subscribers_join_jump_1500channel(self):
2159 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2160 num_subscribers = 1000
2161 num_channels = 1500
2162 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2163 num_channels = num_channels,
2164 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2165 port_list = self.generate_port_list(num_subscribers, num_channels),
2166 negative_subscriber_auth = 'all')
2167 assert_equal(test_status, True)
2168
2169 @nottest
2170 def test_1k_cord_subscribers_join_next_1500channel(self):
2171 ###"""Test 1k subscribers join next for 1500 channels"""
2172 num_subscribers = 1000
2173 num_channels = 1500
2174 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2175 num_channels = num_channels,
2176 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2177 port_list = self.generate_port_list(num_subscribers, num_channels),
2178 negative_subscriber_auth = 'all')
2179 assert_equal(test_status, True)
2180
2181 @nottest
2182 def test_5k_cord_subscribers_join_recv_100channel(self):
2183 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2184 num_subscribers = 5000
2185 num_channels = 100
2186 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2187 num_channels = num_channels,
2188 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2189 port_list = self.generate_port_list(num_subscribers, num_channels),
2190 negative_subscriber_auth = 'all')
2191 assert_equal(test_status, True)
2192
2193 @nottest
2194 def test_5k_cord_subscribers_join_jump_100channel(self):
2195 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2196 num_subscribers = 5000
2197 num_channels = 100
2198 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2199 num_channels = num_channels,
2200 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2201 port_list = self.generate_port_list(num_subscribers, num_channels),
2202 negative_subscriber_auth = 'all')
2203 assert_equal(test_status, True)
2204
2205 @nottest
2206 def test_5k_cord_subscribers_join_next_100channel(self):
2207 ###"""Test 5k subscribers join next for 100 channels"""
2208 num_subscribers = 5000
2209 num_channels = 100
2210 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2211 num_channels = num_channels,
2212 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2213 port_list = self.generate_port_list(num_subscribers, num_channels),
2214 negative_subscriber_auth = 'all')
2215 assert_equal(test_status, True)
2216
2217 @nottest
2218 def test_5k_cord_subscribers_join_recv_400channel(self):
2219 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2220 num_subscribers = 5000
2221 num_channels = 400
2222 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2223 num_channels = num_channels,
2224 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2225 port_list = self.generate_port_list(num_subscribers, num_channels),
2226 negative_subscriber_auth = 'all')
2227 assert_equal(test_status, True)
2228
2229 @nottest
2230 def test_5k_cord_subscribers_join_jump_400channel(self):
2231 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2232 num_subscribers = 5000
2233 num_channels = 400
2234 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2235 num_channels = num_channels,
2236 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2237 port_list = self.generate_port_list(num_subscribers, num_channels),
2238 negative_subscriber_auth = 'all')
2239 assert_equal(test_status, True)
2240
2241 @nottest
2242 def test_5k_cord_subscribers_join_next_400channel(self):
2243 ###"""Test 5k subscribers join next for 400 channels"""
2244 num_subscribers = 5000
2245 num_channels = 400
2246 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2247 num_channels = num_channels,
2248 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2249 port_list = self.generate_port_list(num_subscribers, num_channels),
2250 negative_subscriber_auth = 'all')
2251 assert_equal(test_status, True)
2252
2253 @nottest
2254 def test_5k_cord_subscribers_join_recv_800channel(self):
2255 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2256 num_subscribers = 5000
2257 num_channels = 800
2258 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2259 num_channels = num_channels,
2260 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2261 port_list = self.generate_port_list(num_subscribers, num_channels),
2262 negative_subscriber_auth = 'all')
2263 assert_equal(test_status, True)
2264
2265 @nottest
2266 def test_5k_cord_subscribers_join_jump_800channel(self):
2267 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2268 num_subscribers = 5000
2269 num_channels = 800
2270 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2271 num_channels = num_channels,
2272 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2273 port_list = self.generate_port_list(num_subscribers, num_channels),
2274 negative_subscriber_auth = 'all')
2275 assert_equal(test_status, True)
2276
2277 @nottest
2278 def test_5k_cord_subscribers_join_next_800channel(self):
2279 ###"""Test 5k subscribers join next for 800 channels"""
2280 num_subscribers = 5000
2281 num_channels = 800
2282 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2283 num_channels = num_channels,
2284 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2285 port_list = self.generate_port_list(num_subscribers, num_channels),
2286 negative_subscriber_auth = 'all')
2287 assert_equal(test_status, True)
2288
2289 @nottest
2290 def test_5k_cord_subscribers_join_recv_1200channel(self):
2291 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2292 num_subscribers = 5000
2293 num_channels = 1200
2294 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2295 num_channels = num_channels,
2296 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2297 port_list = self.generate_port_list(num_subscribers, num_channels),
2298 negative_subscriber_auth = 'all')
2299 assert_equal(test_status, True)
2300
2301 @nottest
2302 def test_5k_cord_subscribers_join_jump_1200channel(self):
2303 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2304 num_subscribers = 5000
2305 num_channels = 1200
2306 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2307 num_channels = num_channels,
2308 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2309 port_list = self.generate_port_list(num_subscribers, num_channels),
2310 negative_subscriber_auth = 'all')
2311 assert_equal(test_status, True)
2312
2313 @nottest
2314 def test_5k_cord_subscribers_join_next_1200channel(self):
2315 ###"""Test 5k subscribers join next for 1200 channels"""
2316 num_subscribers = 5000
2317 num_channels = 1200
2318 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2319 num_channels = num_channels,
2320 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2321 port_list = self.generate_port_list(num_subscribers, num_channels),
2322 negative_subscriber_auth = 'all')
2323 assert_equal(test_status, True)
2324
2325 @nottest
2326 def test_5k_cord_subscribers_join_recv_1500channel(self):
2327 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2328 num_subscribers = 5000
2329 num_channels = 1500
2330 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2331 num_channels = num_channels,
2332 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2333 port_list = self.generate_port_list(num_subscribers, num_channels),
2334 negative_subscriber_auth = 'all')
2335 assert_equal(test_status, True)
2336
2337 @nottest
2338 def test_5k_cord_subscribers_join_jump_1500channel(self):
2339 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2340 num_subscribers = 5000
2341 num_channels = 1500
2342 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2343 num_channels = num_channels,
2344 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2345 port_list = self.generate_port_list(num_subscribers, num_channels),
2346 negative_subscriber_auth = 'all')
2347 assert_equal(test_status, True)
2348
2349 @nottest
2350 def test_5k_cord_subscribers_join_next_1500channel(self):
2351 ###"""Test 5k subscribers join next for 1500 channels"""
2352 num_subscribers = 5000
2353 num_channels = 1500
2354 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2355 num_channels = num_channels,
2356 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2357 port_list = self.generate_port_list(num_subscribers, num_channels),
2358 negative_subscriber_auth = 'all')
2359 assert_equal(test_status, True)
2360
2361 @nottest
2362 def test_10k_cord_subscribers_join_recv_100channel(self):
2363 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2364 num_subscribers = 10000
2365 num_channels = 100
2366 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2367 num_channels = num_channels,
2368 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2369 port_list = self.generate_port_list(num_subscribers, num_channels),
2370 negative_subscriber_auth = 'all')
2371 assert_equal(test_status, True)
2372
2373 @nottest
2374 def test_10k_cord_subscribers_join_jump_100channel(self):
2375 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2376 num_subscribers = 10000
2377 num_channels = 100
2378 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2379 num_channels = num_channels,
2380 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2381 port_list = self.generate_port_list(num_subscribers, num_channels),
2382 negative_subscriber_auth = 'all')
2383 assert_equal(test_status, True)
2384
2385 @nottest
2386 def test_10k_cord_subscribers_join_next_100channel(self):
2387 ###"""Test 10k subscribers join next for 100 channels"""
2388 num_subscribers = 10000
2389 num_channels = 100
2390 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2391 num_channels = num_channels,
2392 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2393 port_list = self.generate_port_list(num_subscribers, num_channels),
2394 negative_subscriber_auth = 'all')
2395 assert_equal(test_status, True)
2396
2397 @nottest
2398 def test_100k_cord_subscribers_join_recv_100channel(self):
2399 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2400 num_subscribers = 100000
2401 num_channels = 100
2402 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2403 num_channels = num_channels,
2404 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2405 port_list = self.generate_port_list(num_subscribers, num_channels),
2406 negative_subscriber_auth = 'all')
2407 assert_equal(test_status, True)
2408
2409 @nottest
2410 def test_100k_cord_subscribers_join_jump_100channel(self):
2411 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2412 num_subscribers = 100000
2413 num_channels = 100
2414 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2415 num_channels = num_channels,
2416 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2417 port_list = self.generate_port_list(num_subscribers, num_channels),
2418 negative_subscriber_auth = 'all')
2419 assert_equal(test_status, True)
2420
2421 @nottest
2422 def test_100k_cord_subscribers_join_next_100channel(self):
2423 ###"""Test 100k subscribers join next for 100 channels"""
2424 num_subscribers = 100000
2425 num_channels = 100
2426 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2427 num_channels = num_channels,
2428 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2429 port_list = self.generate_port_list(num_subscribers, num_channels),
2430 negative_subscriber_auth = 'all')
2431 assert_equal(test_status, True)
2432
2433 @nottest
2434 def test_10k_cord_subscribers_join_recv_400channel(self):
2435 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2436 num_subscribers = 10000
2437 num_channels = 400
2438 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2439 num_channels = num_channels,
2440 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2441 port_list = self.generate_port_list(num_subscribers, num_channels),
2442 negative_subscriber_auth = 'all')
2443 assert_equal(test_status, True)
2444
2445 @nottest
2446 def test_10k_cord_subscribers_join_jump_400channel(self):
2447 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2448 num_subscribers = 10000
2449 num_channels = 400
2450 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2451 num_channels = num_channels,
2452 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2453 port_list = self.generate_port_list(num_subscribers, num_channels),
2454 negative_subscriber_auth = 'all')
2455 assert_equal(test_status, True)
2456
2457 @nottest
2458 def test_10k_cord_subscribers_join_next_400channel(self):
2459 ###"""Test 10k subscribers join next for 400 channels"""
2460 num_subscribers = 10000
2461 num_channels = 400
2462 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2463 num_channels = num_channels,
2464 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2465 port_list = self.generate_port_list(num_subscribers, num_channels),
2466 negative_subscriber_auth = 'all')
2467 assert_equal(test_status, True)
2468
2469 @nottest
2470 def test_10k_cord_subscribers_join_recv_800channel(self):
2471 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2472 num_subscribers = 10000
2473 num_channels = 800
2474 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2475 num_channels = num_channels,
2476 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2477 port_list = self.generate_port_list(num_subscribers, num_channels),
2478 negative_subscriber_auth = 'all')
2479 assert_equal(test_status, True)
2480
2481 @nottest
2482 def test_10k_cord_subscribers_join_jump_800channel(self):
2483 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2484 num_subscribers = 10000
2485 num_channels = 800
2486 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2487 num_channels = num_channels,
2488 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2489 port_list = self.generate_port_list(num_subscribers, num_channels),
2490 negative_subscriber_auth = 'all')
2491 assert_equal(test_status, True)
2492
2493 @nottest
2494 def test_10k_cord_subscribers_join_next_800channel(self):
2495 ###"""Test 10k subscribers join next for 800 channels"""
2496 num_subscribers = 10000
2497 num_channels = 800
2498 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2499 num_channels = num_channels,
2500 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2501 port_list = self.generate_port_list(num_subscribers, num_channels),
2502 negative_subscriber_auth = 'all')
2503 assert_equal(test_status, True)
2504
2505 @nottest
2506 def test_10k_cord_subscribers_join_recv_1200channel(self):
2507 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2508 num_subscribers = 10000
2509 num_channels = 1200
2510 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2511 num_channels = num_channels,
2512 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2513 port_list = self.generate_port_list(num_subscribers, num_channels),
2514 negative_subscriber_auth = 'all')
2515 assert_equal(test_status, True)
2516
2517 @nottest
2518 def test_10k_cord_subscribers_join_jump_1200channel(self):
2519 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2520 num_subscribers = 10000
2521 num_channels = 1200
2522 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2523 num_channels = num_channels,
2524 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2525 port_list = self.generate_port_list(num_subscribers, num_channels),
2526 negative_subscriber_auth = 'all')
2527 assert_equal(test_status, True)
2528
2529 @nottest
2530 def test_10k_cord_subscribers_join_next_1200channel(self):
2531 ###"""Test 10k subscribers join next for 1200 channels"""
2532 num_subscribers = 10000
2533 num_channels = 1200
2534 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2535 num_channels = num_channels,
2536 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2537 port_list = self.generate_port_list(num_subscribers, num_channels),
2538 negative_subscriber_auth = 'all')
2539 assert_equal(test_status, True)
2540
2541 @nottest
2542 def test_10k_cord_subscribers_join_recv_1500channel(self):
2543 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2544 num_subscribers = 10000
2545 num_channels = 1500
2546 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2547 num_channels = num_channels,
2548 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2549 port_list = self.generate_port_list(num_subscribers, num_channels),
2550 negative_subscriber_auth = 'all')
2551 assert_equal(test_status, True)
2552
2553 @nottest
2554 def test_10k_cord_subscribers_join_jump_1500channel(self):
2555 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2556 num_subscribers = 10000
2557 num_channels = 1500
2558 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2559 num_channels = num_channels,
2560 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2561 port_list = self.generate_port_list(num_subscribers, num_channels),
2562 negative_subscriber_auth = 'all')
2563 assert_equal(test_status, True)
2564
2565 @nottest
2566 def test_10k_cord_subscribers_join_next_1500channel(self):
2567 ###"""Test 10k subscribers join next for 1500 channels"""
2568 num_subscribers = 10000
2569 num_channels = 1500
2570 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2571 num_channels = num_channels,
2572 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2573 port_list = self.generate_port_list(num_subscribers, num_channels),
2574 negative_subscriber_auth = 'all')
2575 assert_equal(test_status, True)
2576
2577 @nottest
2578 def test_100k_cord_subscribers_join_recv_1500channel(self):
2579 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2580 num_subscribers = 100000
2581 num_channels = 1500
2582 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2583 num_channels = num_channels,
2584 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2585 port_list = self.generate_port_list(num_subscribers, num_channels),
2586 negative_subscriber_auth = 'all')
2587 assert_equal(test_status, True)
2588
2589 @nottest
2590 def test_100k_cord_subscribers_join_jump_1500channel(self):
2591 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2592 num_subscribers = 100000
2593 num_channels = 1500
2594 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2595 num_channels = num_channels,
2596 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2597 port_list = self.generate_port_list(num_subscribers, num_channels),
2598 negative_subscriber_auth = 'all')
2599 assert_equal(test_status, True)
2600
2601 @nottest
2602 def test_100k_cord_subscribers_join_next_1500channel(self):
2603 ###"""Test 10k subscribers join next for 1500 channels"""
2604 num_subscribers = 100000
2605 num_channels = 1500
2606 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2607 num_channels = num_channels,
2608 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2609 port_list = self.generate_port_list(num_subscribers, num_channels),
2610 negative_subscriber_auth = 'all')
2611 assert_equal(test_status, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002612
2613
2614
A.R Karthick8a507cf2017-06-02 18:44:49 -07002615 def remove_olt(self, switch_map):
2616 controller = get_controller()
2617 auth = ('karaf', 'karaf')
2618 #remove subscriber for every port on all the voltha devices
2619 for device, device_map in switch_map.iteritems():
2620 uni_ports = device_map['ports']
2621 uplink_vlan = device_map['uplink_vlan']
2622 for port in uni_ports:
2623 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}'.format(controller,
2624 device,
2625 port)
2626 resp = requests.delete(rest_url, auth = auth)
2627 if resp.status_code not in [204, 202, 200]:
2628 log_test.error('Error deleting subscriber for device %s on port %s' %(device, port))
2629 else:
2630 log_test.info('Deleted subscriber for device %s on port %s' %(device, port))
A.R Karthick4c4d0492017-05-26 19:23:05 -07002631
2632 def config_olt(self, switch_map):
2633 controller = get_controller()
A.R Karthick4c4d0492017-05-26 19:23:05 -07002634 auth = ('karaf', 'karaf')
2635 #configure subscriber for every port on all the voltha devices
2636 for device, device_map in switch_map.iteritems():
2637 uni_ports = device_map['ports']
2638 uplink_vlan = device_map['uplink_vlan']
2639 for port in uni_ports:
2640 vlan = port
2641 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}/{}'.format(controller,
2642 device,
2643 port,
2644 vlan)
A.R Karthick4bd5f532017-06-06 11:37:27 -07002645 requests.post(rest_url, auth = auth)
2646 #assert_equal(resp.ok, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002647
A.R Karthick56e59432017-06-06 18:05:46 -07002648 def cord_subscriber_voltha(self, services, cbs = None, num_subscribers = 1, num_channels = 1):
A.R Karthick4c4d0492017-05-26 19:23:05 -07002649 """Test subscriber join next for channel surfing"""
2650 if self.VOLTHA_HOST is None:
2651 log_test.info('Skipping test as no voltha host')
2652 return
2653 voltha = VolthaCtrl(self.VOLTHA_HOST,
2654 rest_port = self.VOLTHA_REST_PORT,
2655 uplink_vlan_map = self.VOLTHA_UPLINK_VLAN_MAP)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002656 if self.VOLTHA_OLT_TYPE.startswith('ponsim'):
2657 ponsim_address = '{}:50060'.format(self.VOLTHA_HOST)
2658 log_test.info('Enabling ponsim olt')
A.R Karthick8a507cf2017-06-02 18:44:49 -07002659 device_id, status = voltha.enable_device(self.VOLTHA_OLT_TYPE, address = ponsim_address)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002660 else:
2661 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 -07002662 device_id, status = voltha.enable_device(self.VOLTHA_OLT_TYPE, self.VOLTHA_OLT_MAC)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002663
A.R Karthick8a507cf2017-06-02 18:44:49 -07002664 assert_not_equal(device_id, None)
2665 if status == False:
2666 voltha.disable_device(device_id, delete = True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002667 assert_equal(status, True)
2668 time.sleep(10)
A.R Karthick8a507cf2017-06-02 18:44:49 -07002669 switch_map = None
2670 olt_configured = False
2671 try:
2672 switch_map = voltha.config(fake = self.VOLTHA_CONFIG_FAKE)
2673 if not switch_map:
2674 log_test.info('No voltha devices found')
2675 return
2676 log_test.info('Installing OLT app')
2677 OnosCtrl.install_app(self.olt_app_file)
2678 time.sleep(5)
2679 log_test.info('Adding subscribers through OLT app')
2680 self.config_olt(switch_map)
2681 olt_configured = True
2682 time.sleep(5)
A.R Karthick56e59432017-06-06 18:05:46 -07002683 self.num_subscribers = num_subscribers
2684 self.num_channels = num_channels
A.R Karthick8a507cf2017-06-02 18:44:49 -07002685 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
2686 num_channels = self.num_channels,
A.R Karthick56e59432017-06-06 18:05:46 -07002687 cbs = cbs,
A.R Karthick8a507cf2017-06-02 18:44:49 -07002688 port_list = self.generate_port_list(self.num_subscribers,
2689 self.num_channels),
2690 services = services)
2691 assert_equal(test_status, True)
2692 finally:
2693 if switch_map is not None:
2694 if olt_configured is True:
2695 self.remove_olt(switch_map)
2696 voltha.disable_device(device_id, delete = True)
2697 time.sleep(10)
2698 log_test.info('Uninstalling OLT app')
2699 OnosCtrl.uninstall_app(self.olt_app_name)
A.R Karthick56e59432017-06-06 18:05:46 -07002700
2701 def test_cord_subscriber_voltha_tls(self):
2702 """Test subscriber join next for channel surfing"""
2703 if self.VOLTHA_HOST is None:
2704 log_test.info('Skipping test as no voltha host')
2705 return
2706 num_subscribers = 1
2707 num_channels = 1
2708 services = ('TLS',)
2709 cbs = ( self.tls_verify, )
2710 self.cord_subscriber_voltha(services, cbs = cbs,
2711 num_subscribers = num_subscribers,
2712 num_channels = num_channels)
2713
2714 def test_cord_subscriber_voltha_tls_igmp(self):
2715 """Test subscriber join next for channel surfing"""
2716 if self.VOLTHA_HOST is None:
2717 log_test.info('Skipping test as no voltha host')
2718 return
2719 num_subscribers = 1
2720 num_channels = 1
2721 services = ('TLS','IGMP',)
2722 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2723 self.cord_subscriber_voltha(services, cbs = cbs,
2724 num_subscribers = num_subscribers,
2725 num_channels = num_channels)
A.R Karthick4f583842017-06-09 17:15:47 -07002726
2727 def test_cord_subscriber_voltha_tls_igmp_3(self):
2728 """Test subscriber join next for channel surfing with 3 subscribers browsing 3 channels each"""
2729 if self.VOLTHA_HOST is None:
2730 log_test.info('Skipping test as no voltha host')
2731 return
2732 num_subscribers = 3
2733 num_channels = 3
2734 services = ('TLS','IGMP',)
2735 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2736 self.cord_subscriber_voltha(services, cbs = cbs,
2737 num_subscribers = num_subscribers,
2738 num_channels = num_channels)