blob: a713199f9589faaea01de601ec207e1ac04f513e [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)
620 subscriber.channel_leave(chan)
621 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
622 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
623 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
624 self.test_status = True
625 return self.test_status
626
A R Karthick31f1f342017-05-19 13:55:10 -0700627 def igmp_leave_verify(self, subscriber):
628 if subscriber.has_service('IGMP'):
629 for chan in xrange(subscriber.num):
A R Karthick78d1f492017-05-19 14:24:17 -0700630 subscriber.channel_leave(chan, force = True)
A R Karthick31f1f342017-05-19 13:55:10 -0700631 time.sleep(2)
632 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
633 #self.recv_timeout = True
634 #subscriber.recv_timeout = True
635 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
636 #self.recv_timeout = False
637 #subscriber.recv_timeout = False
638 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
639 #time.sleep(1)
640
641 self.test_status = True
642 return self.test_status
643
A R Karthickb7e80902016-05-17 09:38:31 -0700644 def generate_port_list(self, subscribers, channels):
645 return self.port_list[:subscribers]
646
A.R Karthick4c4d0492017-05-26 19:23:05 -0700647 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 -0700648 '''Load the subscriber from the database'''
A.R Karthick4c4d0492017-05-26 19:23:05 -0700649 test_services = services if services else self.test_services
650 self.subscriber_db = SubscriberDB(create = create, services = test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700651 if create is True:
652 self.subscriber_db.generate(num)
653 self.subscriber_info = self.subscriber_db.read(num)
654 self.subscriber_list = []
655 if not port_list:
656 port_list = self.generate_port_list(num, num_channels)
657
658 index = 0
659 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700660 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700661 service=info['Service'],
662 port_map = self.port_map,
663 num=num_channels,
664 channel_start = channel_start,
665 tx_port = port_list[index][0],
666 rx_port = port_list[index][1]))
667 if num_channels > 1:
668 channel_start += num_channels
669 index += 1
670
671 #load the ssm list for all subscriber channels
672 igmpChannel = IgmpChannel()
673 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
674 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
675 igmpChannel.igmp_load_ssm_config(ssm_list)
676
A.R Karthick95d044e2016-06-10 18:44:36 -0700677 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700678 channel_start = 0, cbs = None, port_list = [],
679 services = None, negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700680 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700681 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700682 subscribers_count = num_subscribers
683 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700684 self.subscriber_load(create = True, num = num_subscribers,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700685 num_channels = num_channels, channel_start = channel_start, port_list = port_list,
686 services = services)
A R Karthickb7e80902016-05-17 09:38:31 -0700687 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700688 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
689
A R Karthick338268f2016-06-21 17:12:13 -0700690 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800691 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700692 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700693 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700694 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700695 for subscriber in self.subscriber_list:
696 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700697 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
698 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
699 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
700 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
701 else:
702 cbs = cbs_negative
703 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700704 pool_object = subscriber_pool(subscriber, cbs)
705 self.thread_pool.addTask(pool_object.pool_cb)
706 self.thread_pool.cleanUpThreads()
707 for subscriber in self.subscriber_list:
708 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700709 if chan_leave is True:
710 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700711 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700712 return self.test_status
713
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700714 def tls_invalid_cert(self, subscriber):
715 if subscriber.has_service('TLS'):
716 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700717 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700718 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
719 tls.runTest()
720 if tls.failTest == True:
721 self.test_status = False
722 return self.test_status
723 else:
724 self.test_status = True
725 return self.test_status
726
727 def tls_no_cert(self, subscriber):
728 if subscriber.has_service('TLS'):
729 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700730 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700731 tls = TLSAuthTest(client_cert = '')
732 tls.runTest()
733 if tls.failTest == True:
734 self.test_status = False
735 return self.test_status
736 else:
737 self.test_status = True
738 return self.test_status
739
740 def tls_self_signed_cert(self, subscriber):
741 if subscriber.has_service('TLS'):
742 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700743 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700744 tls = TLSAuthTest(client_cert = self.CLIENT_CERT)
745 tls.runTest()
746 if tls.failTest == False:
747 self.test_status = True
748 return self.test_status
749 else:
750 self.test_status = True
751 return self.test_status
752
753 def tls_non_ca_authrized_cert(self, subscriber):
754 if subscriber.has_service('TLS'):
755 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700756 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700757 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
758 tls.runTest()
759 if tls.failTest == False:
760 self.test_status = True
761 return self.test_status
762 else:
763 self.test_status = True
764 return self.test_status
765
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700766 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
767 if subscriber.has_service('TLS'):
768 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700769 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700770 num_users = 3
771 for i in xrange(num_users):
772 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
773 tls.runTest()
774 if tls.failTest == False:
775 self.test_status = True
776 return self.test_status
777 else:
778 self.test_status = True
779 return self.test_status
780
781 def dhcp_discover_scenario(self, subscriber):
782 if subscriber.has_service('DHCP'):
783 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700784 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700785 t1 = self.subscriber_dhcp_1release()
786 self.test_status = True
787 return self.test_status
788 else:
789 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
790 self.test_status = True
791 return self.test_status
792
793 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700794 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
795 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
796 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
797 self.onos_dhcp_table_load(config)
798 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
799 cip, sip = self.send_recv()
800 log_test.info('Releasing ip %s to server %s' %(cip, sip))
801 assert_equal(self.dhcp.release(cip), True)
802 log_test.info('Triggering DHCP discover again after release')
803 cip2, sip2 = self.send_recv(update_seed = True)
804 log_test.info('Verifying released IP was given back on rediscover')
805 assert_equal(cip, cip2)
806 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
807 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700808
809 def dhcp_client_reboot_scenario(self, subscriber):
810 if subscriber.has_service('DHCP'):
811 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700812 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700813 tl = self.subscriber_dhcp_client_request_after_reboot()
814 self.test_status = True
815 return self.test_status
816 else:
817 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
818 self.test_status = True
819 return self.test_status
820
821 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
822 #''' Client sends DHCP Request after reboot.'''
823
824 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
825 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
826 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
827 self.onos_dhcp_table_load(config)
828 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
829 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700830 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700831 (cip, sip, mac) )
832
A R Karthick76a497a2017-04-12 10:59:39 -0700833 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 -0700834
835 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700836 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 -0700837 assert_not_equal(cip, None)
838
839 else:
840 new_cip, new_sip = self.dhcp.only_request(cip, mac)
841 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700842 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700843 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700844 log_test.info('Client goes down.')
845 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700846
847 time.sleep(5)
848
849 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700850 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700851
852 new_cip, new_sip = self.dhcp.only_request(cip, mac)
853 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700854 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700855 assert_not_equal(new_cip, None)
856 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700857 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700858
859 def dhcp_client_renew_scenario(self, subscriber):
860 if subscriber.has_service('DHCP'):
861 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700862 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700863 tl = self.subscriber_dhcp_client_renew_time()
864 self.test_status = True
865 return self.test_status
866 else:
867 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
868 self.test_status = True
869 return self.test_status
870
871 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
872 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
873 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
874 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
875 self.onos_dhcp_table_load(config)
876 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
877 cip, sip, mac , lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700878 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700879 (cip, sip, mac) )
880
A R Karthick76a497a2017-04-12 10:59:39 -0700881 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 -0700882 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700883 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 -0700884 assert_not_equal(cip, None)
885 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700886 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700887 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
888 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700889 log_test.info("Client 's Renewal time is :%s",lval)
890 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700891 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700892 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700893 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
894 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700895 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700896 (latest_cip, mac, latest_sip) )
897
898 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700899 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700900 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700901 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700902
903 def dhcp_server_reboot_scenario(self, subscriber):
904 if subscriber.has_service('DHCP'):
905 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700906 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700907 tl = self.subscriber_dhcp_server_after_reboot()
908 self.test_status = True
909 return self.test_status
910 else:
911 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
912 self.test_status = True
913 return self.test_status
914
915 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
916 ''' DHCP server goes down.'''
917 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
918 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
919 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
920 self.onos_dhcp_table_load(config)
921 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
922 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700923 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700924 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700925 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 -0700926 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700927 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 -0700928 assert_not_equal(cip, None)
929 else:
930 new_cip, new_sip = self.dhcp.only_request(cip, mac)
931 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700932 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700933 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700934 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700935 onos_ctrl = OnosCtrl(self.dhcp_app)
936 onos_ctrl.deactivate()
937 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700938 log_test.info("Sending DHCP Request.")
939 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700940 new_cip, new_sip = self.dhcp.only_request(cip, mac)
941 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700942 log_test.info('')
943 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700944 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700945 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700946 assert_equal(new_cip,None) #Neagtive Test Case
A R Karthick76a497a2017-04-12 10:59:39 -0700947 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700948# self.activate_apps(self.dhcp_app)
949 onos_ctrl = OnosCtrl(self.dhcp_app)
950 status, _ = onos_ctrl.activate()
951 assert_equal(status, True)
952 time.sleep(3)
953 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700954 log_test.info("Sending DHCP Request after DHCP server is up.")
955 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700956 new_cip, new_sip = self.dhcp.only_request(cip, mac)
957 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700958 log_test.info('')
959 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700960 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700961 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700962 assert_equal(new_cip,None) #Neagtive Test Case
963
964 def dhcp_client_rebind_scenario(self, subscriber):
965 if subscriber.has_service('DHCP'):
966 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700967 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700968 tl = self.subscriber_dhcp_client_rebind_time()
969 self.test_status = True
970 return self.test_status
971 else:
972 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
973 self.test_status = True
974 return self.test_status
975
976 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
977 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
978 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
979 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
980 self.onos_dhcp_table_load(config)
981 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
982 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700983 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700984 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700985 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 -0700986 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700987 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 -0700988 assert_not_equal(cip, None)
989 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700990 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700991 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
992 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700993 log_test.info("Client 's Rebind time is :%s",lval)
994 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700995 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700996 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700997 self.dhcp.after_T2 = True
998 for i in range(0,4):
999 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
1000 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -07001001 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001002 (latest_cip, mac, latest_sip) )
1003 break
1004 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001005 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001006 assert_not_equal(latest_cip, None)
1007 elif new_cip == None or new_sip == None or lval == 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
1010 def dhcp_starvation_scenario(self, subscriber):
1011 if subscriber.has_service('DHCP'):
1012 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001013 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001014 tl = self.subscriber_dhcp_starvation()
1015 self.test_status = True
1016 return self.test_status
1017 else:
1018 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1019 self.test_status = True
1020 return self.test_status
1021
1022 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
1023 '''DHCP starve'''
1024 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
1025 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
1026 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
1027 self.onos_dhcp_table_load(config)
1028 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001029 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001030 for x in xrange(50):
1031 mac = RandMAC()._fix()
1032 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -07001033 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001034 cip, sip = self.send_recv(update_seed = True, validate = False)
1035 assert_equal(cip, None)
1036 assert_equal(sip, None)
1037
1038 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
1039 if subscriber.has_service('DHCP'):
1040 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001041 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001042 tl = self.subscriber_dhcp_same_client_multiple_discover()
1043 self.test_status = True
1044 return self.test_status
1045 else:
1046 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1047 self.test_status = True
1048 return self.test_status
1049
1050 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
1051 ''' DHCP Client sending multiple discover . '''
1052 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1053 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1054 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1055 self.onos_dhcp_table_load(config)
1056 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
1057 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001058 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 -07001059 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001060 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001061 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
1062 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001063 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 -07001064 % (new_cip, new_sip, new_mac) )
1065 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001066 log_test.info('Ip after 1st discover %s' %cip)
1067 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001068 assert_equal(cip, new_cip)
1069
1070 def dhcp_same_client_multi_request_scenario(self, subscriber):
1071 if subscriber.has_service('DHCP'):
1072 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001073 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001074 tl = self.subscriber_dhcp_same_client_multiple_request()
1075 self.test_status = True
1076 return self.test_status
1077 else:
1078 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1079 self.test_status = True
1080 return self.test_status
1081
1082 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1083 ''' DHCP Client sending multiple repeat DHCP requests. '''
1084 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1085 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1086 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1087 self.onos_dhcp_table_load(config)
1088 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001089 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001090 cip, sip = self.send_recv()
1091 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001092 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001093 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1094 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001095 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 -07001096 % (new_cip, new_sip, mac) )
1097 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001098 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001099 assert_equal(new_cip, None)
1100 assert_equal(new_sip, None)
1101 else:
1102 print "Something went wrong."
1103
1104 def dhcp_client_desired_ip_scenario(self, subscriber):
1105 if subscriber.has_service('DHCP'):
1106 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001107 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001108 tl = self.subscriber_dhcp_client_desired_address()
1109 self.test_status = True
1110 return self.test_status
1111 else:
1112 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1113 self.test_status = True
1114 return self.test_status
1115
1116 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1117 '''DHCP Client asking for desired IP address.'''
1118 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1119 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1120 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1121 self.onos_dhcp_table_load(config)
1122 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1123 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001124 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001125 (cip, sip, mac) )
1126 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001127 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001128 (cip, sip, mac) )
1129 elif 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 .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001131 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001132 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001133 assert_equal(cip, self.dhcp.seed_ip)
1134
1135 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1136 if subscriber.has_service('DHCP'):
1137 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001138 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001139 tl = self.subscriber_dhcp_server_nak_packet()
1140 self.test_status = True
1141 return self.test_status
1142 else:
1143 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1144 self.test_status = True
1145 return self.test_status
1146
1147 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1148 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1149 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1150 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1151 self.onos_dhcp_table_load(config)
1152 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1153 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001154 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001155 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001156 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 -07001157 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001158 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 -07001159 assert_not_equal(cip, None)
1160 else:
1161 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1162 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001163 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001164 assert_equal(new_cip, None) #Negative Test Case
1165
1166 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1167 if subscriber.has_service('DHCP'):
1168 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001169 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001170 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1171 self.test_status = True
1172 return self.test_status
1173 else:
1174 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1175 self.test_status = True
1176 return self.test_status
1177
1178 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1179 '''DHCP Client asking for desired IP address from out of pool.'''
1180 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1181 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1182 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1183 self.onos_dhcp_table_load(config)
1184 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1185 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001186 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001187 (cip, sip, mac) )
1188 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001189 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001190 (cip, sip, mac) )
1191 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1192
1193 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001194 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001195 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001196 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001197 assert_not_equal(cip, self.dhcp.seed_ip)
1198
1199 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001200 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001201
1202 def dhcp_client_specific_lease_scenario(self, subscriber):
1203 if subscriber.has_service('DHCP'):
1204 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001205 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001206 tl = self.subscriber_dhcp_specific_lease_packet()
1207 self.test_status = True
1208 return self.test_status
1209 else:
1210 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1211 self.test_status = True
1212 return self.test_status
1213
1214 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1215 ''' Client sends DHCP Discover packet for particular lease time.'''
1216 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1217 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1218 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1219 self.onos_dhcp_table_load(config)
1220 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001221 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001222 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1223
A R Karthick76a497a2017-04-12 10:59:39 -07001224 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001225 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001226 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 -07001227 assert_not_equal(cip, None)
1228 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001229 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 -07001230 (cip, sip, mac, lval) )
1231 assert_not_equal(lval, 700)
1232
1233 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001234 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001235 self.num_subscribers = 5
1236 self.num_channels = 1
A R Karthicka478df42016-07-27 16:51:08 -07001237 test_status = True
1238 ##Run this test only if ONOS can be restarted as it incurs a network-cfg change
1239 if self.onos_restartable is True:
1240 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1241 num_channels = self.num_channels,
1242 port_list = self.generate_port_list(self.num_subscribers,
1243 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001244 assert_equal(test_status, True)
1245
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001246 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001247 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001248 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001249 self.num_channels = 10
1250 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1251 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001252 cbs = (self.tls_verify, self.dhcp_jump_verify,
1253 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001254 port_list = self.generate_port_list(self.num_subscribers,
1255 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001256 assert_equal(test_status, True)
1257
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001258 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001259 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001260 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001261 self.num_channels = 10
1262 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1263 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001264 cbs = (self.tls_verify, self.dhcp_next_verify,
1265 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001266 port_list = self.generate_port_list(self.num_subscribers,
1267 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001268 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001269
A.R Karthick517f7812017-05-18 11:22:46 -07001270 def test_cord_subscriber_join_next_without_leave(self):
1271 """Test subscriber join next for channel surfing"""
1272 self.num_subscribers = self.num_ports * len(self.switches)
1273 self.num_channels = 5
1274 self.leave_flag = False
1275 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1276 num_channels = self.num_channels,
1277 cbs = (self.tls_verify, self.dhcp_next_verify,
1278 self.igmp_next_verify, self.traffic_verify),
1279 port_list = self.generate_port_list(self.num_subscribers,
1280 self.num_channels))
1281 self.leave_flag = True
1282 assert_equal(test_status, True)
1283
A R Karthick31f1f342017-05-19 13:55:10 -07001284 def test_cord_subscriber_leave(self):
1285 """Test subscriber leaves for all the join nexts before"""
1286 self.num_subscribers = self.num_ports * len(self.switches)
1287 self.num_channels = 5
1288 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1289 num_channels = self.num_channels,
1290 cbs = (self.tls_verify, self.dhcp_next_verify,
1291 self.igmp_leave_verify, self.traffic_verify),
1292 port_list = self.generate_port_list(self.num_subscribers,
1293 self.num_channels))
1294 assert_equal(test_status, True)
1295
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001296 #@deferred(SUBSCRIBER_TIMEOUT)
1297 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1298 ### """Test subscriber to auth with invalidCertification and join channel"""
1299 num_subscribers = 1
1300 num_channels = 1
1301 df = defer.Deferred()
1302 def sub_auth_invalid_cert(df):
1303 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1304 num_channels = num_channels,
1305 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1306 self.igmp_verify, self.traffic_verify),
1307 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1308 assert_equal(test_status, False)
1309 df.callback(0)
1310 reactor.callLater(0, sub_auth_invalid_cert, df)
1311 return df
1312
1313 #@deferred(SUBSCRIBER_TIMEOUT)
1314 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1315 ### """Test subscriber to auth with No Certification and join channel"""
1316 num_subscribers = 1
1317 num_channels = 1
1318 df = defer.Deferred()
1319 def sub_auth_no_cert(df):
1320 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1321 num_channels = num_channels,
1322 cbs = (self.tls_no_cert, self.dhcp_verify,
1323 self.igmp_verify, self.traffic_verify),
1324 port_list = self.generate_port_list(num_subscribers, num_channels),
1325 negative_subscriber_auth = 'all')
1326 assert_equal(test_status, False)
1327 df.callback(0)
1328 reactor.callLater(0, sub_auth_no_cert, df)
1329 return df
1330 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1331 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1332 num_subscribers = 1
1333 num_channels = 1
1334 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1335 num_channels = num_channels,
1336 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1337 self.igmp_verify, self.traffic_verify),
1338 port_list = self.generate_port_list(num_subscribers, num_channels),
1339 negative_subscriber_auth = 'all')
1340 assert_equal(test_status, True)
1341
1342 @deferred(SUBSCRIBER_TIMEOUT)
1343 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1344 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1345 num_subscribers = 2
1346 num_channels = 1
1347 df = defer.Deferred()
1348 def sub_auth_invalid_cert(df):
1349 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1350 num_channels = num_channels,
1351 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1352 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1353 assert_equal(test_status, True)
1354 df.callback(0)
1355 reactor.callLater(0, sub_auth_invalid_cert, df)
1356 return df
1357
1358 @deferred(SUBSCRIBER_TIMEOUT)
1359 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1360 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1361 num_subscribers = 2
1362 num_channels = 1
1363 df = defer.Deferred()
1364 def sub_auth_no_cert(df):
1365 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1366 num_channels = num_channels,
1367 cbs = (self.tls_no_cert, self.dhcp_verify,
1368 self.igmp_verify, self.traffic_verify),
1369 port_list = self.generate_port_list(num_subscribers, num_channels),
1370 negative_subscriber_auth = 'half')
1371 assert_equal(test_status, True)
1372 df.callback(0)
1373 reactor.callLater(0, sub_auth_no_cert, df)
1374 return df
1375
1376 @deferred(SUBSCRIBER_TIMEOUT)
1377 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1378 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1379 num_subscribers = 2
1380 num_channels = 1
1381 df = defer.Deferred()
1382 def sub_auth_no_cert(df):
1383 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1384 num_channels = num_channels,
1385 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1386 self.igmp_verify, self.traffic_verify),
1387 port_list = self.generate_port_list(num_subscribers, num_channels),
1388 negative_subscriber_auth = 'half')
1389 assert_equal(test_status, True)
1390 df.callback(0)
1391 reactor.callLater(0, sub_auth_no_cert, df)
1392 return df
1393
1394 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1395 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1396 num_subscribers = 1
1397 num_channels = 1
1398 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1399 num_channels = num_channels,
1400 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1401 self.igmp_verify, self.traffic_verify),
1402 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1403 assert_equal(test_status, True)
1404
1405 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1406 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1407 num_subscribers = 1
1408 num_channels = 1
1409 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1410 num_channels = num_channels,
1411 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1412 self.igmp_verify, self.traffic_verify),
1413 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1414 assert_equal(test_status, True)
1415
1416 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1417 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1418 num_subscribers = 1
1419 num_channels = 1
1420 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1421 num_channels = num_channels,
1422 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1423 self.igmp_verify, self.traffic_verify),
1424 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1425 assert_equal(test_status, True)
1426
1427 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1428 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1429 num_subscribers = 1
1430 num_channels = 1
1431 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1432 num_channels = num_channels,
1433 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1434 self.igmp_verify, self.traffic_verify),
1435 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1436 assert_equal(test_status, True)
1437
1438
1439 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1440 ### """Test subscriber auth , DHCP starvation and join channel"""
1441 num_subscribers = 1
1442 num_channels = 1
1443 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1444 num_channels = num_channels,
1445 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1446 self.igmp_verify, self.traffic_verify),
1447 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1448 assert_equal(test_status, True)
1449
1450 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1451 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1452 num_subscribers = 1
1453 num_channels = 1
1454 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1455 num_channels = num_channels,
1456 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1457 self.igmp_verify, self.traffic_verify),
1458 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1459 assert_equal(test_status, True)
1460
1461 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1462 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1463 num_subscribers = 1
1464 num_channels = 1
1465 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1466 num_channels = num_channels,
1467 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1468 self.igmp_verify, self.traffic_verify),
1469 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1470 assert_equal(test_status, True)
1471
1472 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1473 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1474 num_subscribers = 1
1475 num_channels = 1
1476 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1477 num_channels = num_channels,
1478 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1479 self.igmp_verify, self.traffic_verify),
1480 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1481 assert_equal(test_status, True)
1482
1483 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1484 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1485 num_subscribers = 1
1486 num_channels = 1
1487 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1488 num_channels = num_channels,
1489 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1490 self.igmp_verify, self.traffic_verify),
1491 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1492 assert_equal(test_status, True)
1493
1494 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1495 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1496 num_subscribers = 1
1497 num_channels = 1
1498 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1499 num_channels = num_channels,
1500 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1501 self.igmp_verify, self.traffic_verify),
1502 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1503 assert_equal(test_status, True)
1504
1505
1506 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1507 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1508 num_subscribers = 1
1509 num_channels = 1
1510 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1511 num_channels = num_channels,
1512 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1513 self.igmp_verify, self.traffic_verify),
1514 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1515 assert_equal(test_status, True)
1516
1517 #@deferred(SUBSCRIBER_TIMEOUT)
1518 @nottest
1519 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1520 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1521 num_subscribers = 1000
1522 num_channels = 1
1523 df = defer.Deferred()
1524 def sub_auth_invalid_cert(df):
1525 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1526 num_channels = num_channels,
1527 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1528 self.igmp_verify, self.traffic_verify),
1529 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1530 assert_equal(test_status, True)
1531 df.callback(0)
1532 reactor.callLater(0, sub_auth_invalid_cert, df)
1533 return df
1534
1535 @nottest
1536 @deferred(SUBSCRIBER_TIMEOUT)
1537 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1538 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1539 num_subscribers = 1000
1540 num_channels = 1
1541 df = defer.Deferred()
1542 def sub_auth_no_cert(df):
1543 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1544 num_channels = num_channels,
1545 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1546 port_list = self.generate_port_list(num_subscribers, num_channels),
1547 negative_subscriber_auth = 'half')
1548 assert_equal(test_status, True)
1549 df.callback(0)
1550 reactor.callLater(0, sub_auth_no_cert, df)
1551 return df
1552
1553 #@deferred(SUBSCRIBER_TIMEOUT)
1554 @nottest
1555 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1556 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1557 num_subscribers = 1000
1558 num_channels = 1
1559 df = defer.Deferred()
1560 def sub_auth_no_cert(df):
1561 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1562 num_channels = num_channels,
1563 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1564 port_list = self.generate_port_list(num_subscribers, num_channels),
1565 negative_subscriber_auth = 'half')
1566 assert_equal(test_status, True)
1567 df.callback(0)
1568 reactor.callLater(0, sub_auth_no_cert, df)
1569 return df
1570
1571 #@deferred(SUBSCRIBER_TIMEOUT)
1572 @nottest
1573 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1574 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1575 num_subscribers = 5000
1576 num_channels = 1
1577 df = defer.Deferred()
1578 def sub_auth_invalid_cert(df):
1579 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1580 num_channels = num_channels,
1581 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1582 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1583 assert_equal(test_status, True)
1584 df.callback(0)
1585 reactor.callLater(0, sub_auth_invalid_cert, df)
1586 return df
1587
1588 #@deferred(SUBSCRIBER_TIMEOUT)
1589 @nottest
1590 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1591 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1592 num_subscribers = 5000
1593 num_channels = 1
1594 df = defer.Deferred()
1595 def sub_auth_no_cert(df):
1596 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1597 num_channels = num_channels,
1598 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1599 port_list = self.generate_port_list(num_subscribers, num_channels),
1600 negative_subscriber_auth = 'half')
1601 assert_equal(test_status, True)
1602 df.callback(0)
1603 reactor.callLater(0, sub_auth_no_cert, df)
1604 return df
1605
1606 #@deferred(SUBSCRIBER_TIMEOUT)
1607 @nottest
1608 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1609 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1610 num_subscribers = 5000
1611 num_channels = 1
1612 df = defer.Deferred()
1613 def sub_auth_no_cert(df):
1614 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1615 num_channels = num_channels,
1616 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1617 port_list = self.generate_port_list(num_subscribers, num_channels),
1618 negative_subscriber_auth = 'half')
1619 assert_equal(test_status, True)
1620 df.callback(0)
1621 reactor.callLater(0, sub_auth_no_cert, df)
1622 return df
1623
1624 #@deferred(SUBSCRIBER_TIMEOUT)
1625 @nottest
1626 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1627 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1628 num_subscribers = 10000
1629 num_channels = 1
1630 df = defer.Deferred()
1631 def sub_auth_invalid_cert(df):
1632 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1633 num_channels = num_channels,
1634 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1635 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1636 assert_equal(test_status, True)
1637 df.callback(0)
1638 reactor.callLater(0, sub_auth_invalid_cert, df)
1639 return df
1640
1641 #@deferred(SUBSCRIBER_TIMEOUT)
1642 @nottest
1643 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1644 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1645 num_subscribers = 10000
1646 num_channels = 1
1647 df = defer.Deferred()
1648 def sub_auth_no_cert(df):
1649 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1650 num_channels = num_channels,
1651 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1652 port_list = self.generate_port_list(num_subscribers, num_channels),
1653 negative_subscriber_auth = 'onethird')
1654 assert_equal(test_status, True)
1655 df.callback(0)
1656 reactor.callLater(0, sub_auth_no_cert, df)
1657 return df
1658
1659 #@deferred(SUBSCRIBER_TIMEOUT)
1660 @nottest
1661 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1662 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1663 num_subscribers = 10000
1664 num_channels = 1
1665 df = defer.Deferred()
1666 def sub_auth_no_cert(df):
1667 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1668 num_channels = num_channels,
1669 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1670 port_list = self.generate_port_list(num_subscribers, num_channels),
1671 negative_subscriber_auth = 'onethird')
1672 assert_equal(test_status, False)
1673 assert_equal(test_status, True)
1674 df.callback(0)
1675 reactor.callLater(0, sub_auth_no_cert, df)
1676 return df
1677
1678 @nottest
1679 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1680 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1681 num_subscribers = 1000
1682 num_channels = 1
1683 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1684 num_channels = num_channels,
1685 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1686 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1687 assert_equal(test_status, True)
1688
1689 @nottest
1690 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1691 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1692 num_subscribers = 1000
1693 num_channels = 1
1694 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1695 num_channels = num_channels,
1696 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1697 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1698 assert_equal(test_status, True)
1699
1700 @nottest
1701 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1702 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1703 num_subscribers = 1000
1704 num_channels = 1
1705 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1706 num_channels = num_channels,
1707 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1708 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1709 assert_equal(test_status, True)
1710
1711 @nottest
1712 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1713 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1714 num_subscribers = 1000
1715 num_channels = 1
1716 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1717 num_channels = num_channels,
1718 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1719 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1720 assert_equal(test_status, True)
1721
1722 @nottest
1723 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1724 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1725 num_subscribers = 1000
1726 num_channels = 1
1727 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1728 num_channels = num_channels,
1729 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1730 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1731 assert_equal(test_status, True)
1732
1733 @nottest
1734 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1735 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1736 num_subscribers = 1000
1737 num_channels = 1
1738 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1739 num_channels = num_channels,
1740 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1741 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1742 assert_equal(test_status, True)
1743
1744 @nottest
1745 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1746 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1747 num_subscribers = 1000
1748 num_channels = 1
1749 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1750 num_channels = num_channels,
1751 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1752 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1753 assert_equal(test_status, True)
1754
1755 def test_4_cord_subscribers_join_recv_5channel(self):
1756 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1757 num_subscribers = 4
1758 num_channels = 5
1759 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1760 num_channels = num_channels,
1761 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1762 port_list = self.generate_port_list(num_subscribers, num_channels),
1763 negative_subscriber_auth = 'all')
1764 assert_equal(test_status, True)
1765
1766 def test_4_cord_subscribers_join_jump_5channel(self):
1767 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1768 num_subscribers = 4
1769 num_channels = 5
1770 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1771 num_channels = num_channels,
1772 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1773 port_list = self.generate_port_list(num_subscribers, num_channels),
1774 negative_subscriber_auth = 'all')
1775 assert_equal(test_status, True)
1776
1777 def test_4_cord_subscribers_join_next_5channel(self):
1778 ###"""Test 4 subscribers join next for 5 channels"""
1779 num_subscribers = 4
1780 num_channels = 5
1781 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1782 num_channels = num_channels,
1783 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1784 port_list = self.generate_port_list(num_subscribers, num_channels),
1785 negative_subscriber_auth = 'all')
1786 assert_equal(test_status, True)
1787
1788 def test_10_cord_subscribers_join_recv_5channel(self):
1789 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1790 num_subscribers = 10
1791 num_channels = 5
1792 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1793 num_channels = num_channels,
1794 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1795 port_list = self.generate_port_list(num_subscribers, num_channels),
1796 negative_subscriber_auth = 'all')
1797 assert_equal(test_status, True)
1798
1799 def test_10_cord_subscribers_join_jump_5channel(self):
1800 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1801 num_subscribers = 10
1802 num_channels = 5
1803 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1804 num_channels = num_channels,
1805 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1806 port_list = self.generate_port_list(num_subscribers, num_channels),
1807 negative_subscriber_auth = 'all')
1808 assert_equal(test_status, True)
1809
1810
1811 def test_10_cord_subscribers_join_next_5channel(self):
1812 ###"""Test 10 subscribers join next for 5 channels"""
1813 num_subscribers = 10
1814 num_channels = 5
1815 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1816 num_channels = num_channels,
1817 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1818 port_list = self.generate_port_list(num_subscribers, num_channels),
1819 negative_subscriber_auth = 'all')
1820 assert_equal(test_status, True)
1821
1822
1823
1824 def test_cord_subscriber_join_recv_100channels(self):
1825 num_subscribers = 1
1826 num_channels = 100
1827 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1828 num_channels = num_channels,
1829 cbs = (self.tls_verify, self.dhcp_verify,
1830 self.igmp_verify, self.traffic_verify),
1831 port_list = self.generate_port_list(num_subscribers, num_channels),
1832 negative_subscriber_auth = 'all')
1833 assert_equal(test_status, True)
1834
1835 def test_cord_subscriber_join_recv_400channels(self):
1836 num_subscribers = 1
1837 num_channels = 400
1838 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1839 num_channels = num_channels,
1840 cbs = (self.tls_verify, self.dhcp_verify,
1841 self.igmp_verify, self.traffic_verify),
1842 port_list = self.generate_port_list(num_subscribers, num_channels),
1843 negative_subscriber_auth = 'all')
1844 assert_equal(test_status, True)
1845
1846 def test_cord_subscriber_join_recv_800channels(self):
1847 num_subscribers = 1
1848 num_channels = 800
1849 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1850 num_channels = num_channels,
1851 cbs = (self.tls_verify, self.dhcp_verify,
1852 self.igmp_verify, self.traffic_verify),
1853 port_list = self.generate_port_list(num_subscribers, num_channels),
1854 negative_subscriber_auth = 'all')
1855 assert_equal(test_status, True)
1856
1857 def test_cord_subscriber_join_recv_1200channels(self):
1858 num_subscribers = 1
1859 num_channels = 1200
1860 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1861 num_channels = num_channels,
1862 cbs = (self.tls_verify, self.dhcp_verify,
1863 self.igmp_verify, self.traffic_verify),
1864 port_list = self.generate_port_list(num_subscribers, num_channels),
1865 negative_subscriber_auth = 'all')
1866 assert_equal(test_status, True)
1867
1868 def test_cord_subscriber_join_recv_1500channels(self):
1869 num_subscribers = 1
1870 num_channels = 1500
1871 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1872 num_channels = num_channels,
1873 cbs = (self.tls_verify, self.dhcp_verify,
1874 self.igmp_verify, self.traffic_verify),
1875 port_list = self.generate_port_list(num_subscribers, num_channels),
1876 negative_subscriber_auth = 'all')
1877 assert_equal(test_status, True)
1878
1879 def test_cord_subscriber_join_jump_100channels(self):
1880 num_subscribers = 1
1881 num_channels = 100
1882 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1883 num_channels = num_channels,
1884 cbs = (self.tls_verify, self.dhcp_jump_verify,
1885 self.igmp_jump_verify, self.traffic_verify),
1886 port_list = self.generate_port_list(num_subscribers, num_channels),
1887 negative_subscriber_auth = 'all')
1888 assert_equal(test_status, True)
1889 def test_cord_subscriber_join_jump_400channels(self):
1890 num_subscribers = 1
1891 num_channels = 400
1892 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1893 num_channels = num_channels,
1894 cbs = (self.tls_verify, self.dhcp_jump_verify,
1895 self.igmp_jump_verify, self.traffic_verify),
1896 port_list = self.generate_port_list(num_subscribers, num_channels),
1897 negative_subscriber_auth = 'all')
1898 assert_equal(test_status, True)
1899
1900 def test_cord_subscriber_join_jump_800channels(self):
1901 num_subscribers = 1
1902 num_channels = 800
1903 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1904 num_channels = num_channels,
1905 cbs = (self.tls_verify, self.dhcp_jump_verify,
1906 self.igmp_jump_verify, self.traffic_verify),
1907 port_list = self.generate_port_list(num_subscribers, num_channels),
1908 negative_subscriber_auth = 'all')
1909 assert_equal(test_status, True)
1910 def test_cord_subscriber_join_jump_1200channel(sself):
1911 num_subscribers = 1
1912 num_channels = 1200
1913 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1914 num_channels = num_channels,
1915 cbs = (self.tls_verify, self.dhcp_jump_verify,
1916 self.igmp_jump_verify, self.traffic_verify),
1917 port_list = self.generate_port_list(num_subscribers, num_channels),
1918 negative_subscriber_auth = 'all')
1919 assert_equal(test_status, True)
1920 def test_cord_subscriber_join_jump_1500channels(self):
1921 num_subscribers = 1
1922 num_channels = 1500
1923 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1924 num_channels = num_channels,
1925 cbs = (self.tls_verify, self.dhcp_jump_verify,
1926 self.igmp_jump_verify, self.traffic_verify),
1927 port_list = self.generate_port_list(num_subscribers, num_channels),
1928 negative_subscriber_auth = 'all')
1929 assert_equal(test_status, True)
1930
1931 def test_cord_subscriber_join_next_100channels(self):
1932 num_subscribers = 1
1933 num_channels = 100
1934 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1935 num_channels = num_channels,
1936 cbs = (self.tls_verify, self.dhcp_next_verify,
1937 self.igmp_next_verify, self.traffic_verify),
1938 port_list = self.generate_port_list(num_subscribers, num_channels),
1939 negative_subscriber_auth = 'all')
1940 assert_equal(test_status, True)
1941
1942 def test_cord_subscriber_join_next_400channels(self):
1943 num_subscribers = 1
1944 num_channels = 400
1945 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1946 num_channels = num_channels,
1947 cbs = (self.tls_verify, self.dhcp_next_verify,
1948 self.igmp_next_verify, self.traffic_verify),
1949 port_list = self.generate_port_list(num_subscribers, num_channels),
1950 negative_subscriber_auth = 'all')
1951 assert_equal(test_status, True)
1952
1953 def test_cord_subscriber_join_next_800channels(self):
1954 num_subscribers = 1
1955 num_channels = 800
1956 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1957 num_channels = num_channels,
1958 cbs = (self.tls_verify, self.dhcp_next_verify,
1959 self.igmp_next_verify, self.traffic_verify),
1960 port_list = self.generate_port_list(num_subscribers, num_channels),
1961 negative_subscriber_auth = 'all')
1962 assert_equal(test_status, True)
1963
1964
1965 def test_cord_subscriber_join_next_1200channels(self):
1966 num_subscribers = 1
1967 num_channels = 1200
1968 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1969 num_channels = num_channels,
1970 cbs = (self.tls_verify, self.dhcp_next_verify,
1971 self.igmp_next_verify, self.traffic_verify),
1972 port_list = self.generate_port_list(num_subscribers, num_channels),
1973 negative_subscriber_auth = 'all')
1974 assert_equal(test_status, True)
1975
1976 def test_cord_subscriber_join_next_1500channels(self):
1977 num_subscribers = 1
1978 num_channels = 1500
1979 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1980 num_channels = num_channels,
1981 cbs = (self.tls_verify, self.dhcp_next_verify,
1982 self.igmp_next_verify, self.traffic_verify),
1983 port_list = self.generate_port_list(num_subscribers, num_channels),
1984 negative_subscriber_auth = 'all')
1985 assert_equal(test_status, True)
1986
1987 @nottest
1988 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1989 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1990 num_subscribers = 1000
1991 num_channels = 1
1992 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1993 num_channels = num_channels,
1994 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
1995 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1996 assert_equal(test_status, True)
1997
1998 @nottest
1999 def test_1k_cord_subscribers_join_recv_100channel(self):
2000 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
2001 num_subscribers = 1000
2002 num_channels = 100
2003 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2004 num_channels = num_channels,
2005 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2006 port_list = self.generate_port_list(num_subscribers, num_channels),
2007 negative_subscriber_auth = 'all')
2008 assert_equal(test_status, True)
2009
2010 @nottest
2011 def test_1k_cord_subscribers_join_jump_100channel(self):
2012 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
2013 num_subscribers = 1000
2014 num_channels = 100
2015 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2016 num_channels = num_channels,
2017 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2018 port_list = self.generate_port_list(num_subscribers, num_channels),
2019 negative_subscriber_auth = 'all')
2020 assert_equal(test_status, True)
2021
2022 @nottest
2023 def test_1k_cord_subscribers_join_next_100channel(self):
2024 ###"""Test 1k subscribers join next for 100 channels"""
2025 num_subscribers = 1000
2026 num_channels = 100
2027 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2028 num_channels = num_channels,
2029 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2030 port_list = self.generate_port_list(num_subscribers, num_channels),
2031 negative_subscriber_auth = 'all')
2032 assert_equal(test_status, True)
2033
2034 @nottest
2035 def test_1k_cord_subscribers_join_recv_400channel(self):
2036 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
2037 num_subscribers = 1000
2038 num_channels = 400
2039 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2040 num_channels = num_channels,
2041 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2042 port_list = self.generate_port_list(num_subscribers, num_channels),
2043 negative_subscriber_auth = 'all')
2044 assert_equal(test_status, True)
2045
2046 @nottest
2047 def test_1k_cord_subscribers_join_jump_400channel(self):
2048 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
2049 num_subscribers = 1000
2050 num_channels = 400
2051 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2052 num_channels = num_channels,
2053 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2054 port_list = self.generate_port_list(num_subscribers, num_channels),
2055 negative_subscriber_auth = 'all')
2056 assert_equal(test_status, True)
2057
2058 @nottest
2059 def test_1k_cord_subscribers_join_next_400channel(self):
2060 ###"""Test 1k subscribers join next for 400 channels"""
2061 num_subscribers = 1000
2062 num_channels = 400
2063 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2064 num_channels = num_channels,
2065 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2066 port_list = self.generate_port_list(num_subscribers, num_channels),
2067 negative_subscriber_auth = 'all')
2068 assert_equal(test_status, True)
2069
2070 @nottest
2071 def test_1k_cord_subscribers_join_recv_800channel(self):
2072 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2073 num_subscribers = 1000
2074 num_channels = 800
2075 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2076 num_channels = num_channels,
2077 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2078 port_list = self.generate_port_list(num_subscribers, num_channels),
2079 negative_subscriber_auth = 'all')
2080 assert_equal(test_status, True)
2081
2082 @nottest
2083 def test_1k_cord_subscribers_join_jump_800channel(self):
2084 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2085 num_subscribers = 1000
2086 num_channels = 800
2087 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2088 num_channels = num_channels,
2089 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2090 port_list = self.generate_port_list(num_subscribers, num_channels),
2091 negative_subscriber_auth = 'all')
2092 assert_equal(test_status, True)
2093
2094 @nottest
2095 def test_1k_cord_subscribers_join_next_800channel(self):
2096 ###"""Test 1k subscribers join next for 800 channels"""
2097 num_subscribers = 1000
2098 num_channels = 800
2099 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2100 num_channels = num_channels,
2101 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2102 port_list = self.generate_port_list(num_subscribers, num_channels),
2103 negative_subscriber_auth = 'all')
2104 assert_equal(test_status, True)
2105
2106 @nottest
2107 def test_1k_cord_subscribers_join_recv_1200channel(self):
2108 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2109 num_subscribers = 1000
2110 num_channels = 1200
2111 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2112 num_channels = num_channels,
2113 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2114 port_list = self.generate_port_list(num_subscribers, num_channels),
2115 negative_subscriber_auth = 'all')
2116 assert_equal(test_status, True)
2117
2118 @nottest
2119 def test_1k_cord_subscribers_join_jump_1200channel(self):
2120 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2121 num_subscribers = 1000
2122 num_channels = 1200
2123 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2124 num_channels = num_channels,
2125 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2126 port_list = self.generate_port_list(num_subscribers, num_channels),
2127 negative_subscriber_auth = 'all')
2128 assert_equal(test_status, True)
2129
2130 @nottest
2131 def test_1k_cord_subscribers_join_next_1200channel(self):
2132 ###"""Test 1k subscribers join next for 1200 channels"""
2133 num_subscribers = 1000
2134 num_channels = 1200
2135 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2136 num_channels = num_channels,
2137 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2138 port_list = self.generate_port_list(num_subscribers, num_channels),
2139 negative_subscriber_auth = 'all')
2140 assert_equal(test_status, True)
2141
2142 @nottest
2143 def test_1k_cord_subscribers_join_recv_1500channel(self):
2144 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2145 num_subscribers = 1000
2146 num_channels = 1500
2147 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2148 num_channels = num_channels,
2149 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2150 port_list = self.generate_port_list(num_subscribers, num_channels),
2151 negative_subscriber_auth = 'all')
2152 assert_equal(test_status, True)
2153
2154 @nottest
2155 def test_1k_cord_subscribers_join_jump_1500channel(self):
2156 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2157 num_subscribers = 1000
2158 num_channels = 1500
2159 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2160 num_channels = num_channels,
2161 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2162 port_list = self.generate_port_list(num_subscribers, num_channels),
2163 negative_subscriber_auth = 'all')
2164 assert_equal(test_status, True)
2165
2166 @nottest
2167 def test_1k_cord_subscribers_join_next_1500channel(self):
2168 ###"""Test 1k subscribers join next for 1500 channels"""
2169 num_subscribers = 1000
2170 num_channels = 1500
2171 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2172 num_channels = num_channels,
2173 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2174 port_list = self.generate_port_list(num_subscribers, num_channels),
2175 negative_subscriber_auth = 'all')
2176 assert_equal(test_status, True)
2177
2178 @nottest
2179 def test_5k_cord_subscribers_join_recv_100channel(self):
2180 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2181 num_subscribers = 5000
2182 num_channels = 100
2183 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2184 num_channels = num_channels,
2185 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2186 port_list = self.generate_port_list(num_subscribers, num_channels),
2187 negative_subscriber_auth = 'all')
2188 assert_equal(test_status, True)
2189
2190 @nottest
2191 def test_5k_cord_subscribers_join_jump_100channel(self):
2192 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2193 num_subscribers = 5000
2194 num_channels = 100
2195 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2196 num_channels = num_channels,
2197 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2198 port_list = self.generate_port_list(num_subscribers, num_channels),
2199 negative_subscriber_auth = 'all')
2200 assert_equal(test_status, True)
2201
2202 @nottest
2203 def test_5k_cord_subscribers_join_next_100channel(self):
2204 ###"""Test 5k subscribers join next for 100 channels"""
2205 num_subscribers = 5000
2206 num_channels = 100
2207 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2208 num_channels = num_channels,
2209 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2210 port_list = self.generate_port_list(num_subscribers, num_channels),
2211 negative_subscriber_auth = 'all')
2212 assert_equal(test_status, True)
2213
2214 @nottest
2215 def test_5k_cord_subscribers_join_recv_400channel(self):
2216 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2217 num_subscribers = 5000
2218 num_channels = 400
2219 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2220 num_channels = num_channels,
2221 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2222 port_list = self.generate_port_list(num_subscribers, num_channels),
2223 negative_subscriber_auth = 'all')
2224 assert_equal(test_status, True)
2225
2226 @nottest
2227 def test_5k_cord_subscribers_join_jump_400channel(self):
2228 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2229 num_subscribers = 5000
2230 num_channels = 400
2231 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2232 num_channels = num_channels,
2233 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2234 port_list = self.generate_port_list(num_subscribers, num_channels),
2235 negative_subscriber_auth = 'all')
2236 assert_equal(test_status, True)
2237
2238 @nottest
2239 def test_5k_cord_subscribers_join_next_400channel(self):
2240 ###"""Test 5k subscribers join next for 400 channels"""
2241 num_subscribers = 5000
2242 num_channels = 400
2243 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2244 num_channels = num_channels,
2245 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2246 port_list = self.generate_port_list(num_subscribers, num_channels),
2247 negative_subscriber_auth = 'all')
2248 assert_equal(test_status, True)
2249
2250 @nottest
2251 def test_5k_cord_subscribers_join_recv_800channel(self):
2252 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2253 num_subscribers = 5000
2254 num_channels = 800
2255 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2256 num_channels = num_channels,
2257 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2258 port_list = self.generate_port_list(num_subscribers, num_channels),
2259 negative_subscriber_auth = 'all')
2260 assert_equal(test_status, True)
2261
2262 @nottest
2263 def test_5k_cord_subscribers_join_jump_800channel(self):
2264 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2265 num_subscribers = 5000
2266 num_channels = 800
2267 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2268 num_channels = num_channels,
2269 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2270 port_list = self.generate_port_list(num_subscribers, num_channels),
2271 negative_subscriber_auth = 'all')
2272 assert_equal(test_status, True)
2273
2274 @nottest
2275 def test_5k_cord_subscribers_join_next_800channel(self):
2276 ###"""Test 5k subscribers join next for 800 channels"""
2277 num_subscribers = 5000
2278 num_channels = 800
2279 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2280 num_channels = num_channels,
2281 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2282 port_list = self.generate_port_list(num_subscribers, num_channels),
2283 negative_subscriber_auth = 'all')
2284 assert_equal(test_status, True)
2285
2286 @nottest
2287 def test_5k_cord_subscribers_join_recv_1200channel(self):
2288 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2289 num_subscribers = 5000
2290 num_channels = 1200
2291 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2292 num_channels = num_channels,
2293 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2294 port_list = self.generate_port_list(num_subscribers, num_channels),
2295 negative_subscriber_auth = 'all')
2296 assert_equal(test_status, True)
2297
2298 @nottest
2299 def test_5k_cord_subscribers_join_jump_1200channel(self):
2300 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2301 num_subscribers = 5000
2302 num_channels = 1200
2303 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2304 num_channels = num_channels,
2305 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2306 port_list = self.generate_port_list(num_subscribers, num_channels),
2307 negative_subscriber_auth = 'all')
2308 assert_equal(test_status, True)
2309
2310 @nottest
2311 def test_5k_cord_subscribers_join_next_1200channel(self):
2312 ###"""Test 5k subscribers join next for 1200 channels"""
2313 num_subscribers = 5000
2314 num_channels = 1200
2315 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2316 num_channels = num_channels,
2317 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2318 port_list = self.generate_port_list(num_subscribers, num_channels),
2319 negative_subscriber_auth = 'all')
2320 assert_equal(test_status, True)
2321
2322 @nottest
2323 def test_5k_cord_subscribers_join_recv_1500channel(self):
2324 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2325 num_subscribers = 5000
2326 num_channels = 1500
2327 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2328 num_channels = num_channels,
2329 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2330 port_list = self.generate_port_list(num_subscribers, num_channels),
2331 negative_subscriber_auth = 'all')
2332 assert_equal(test_status, True)
2333
2334 @nottest
2335 def test_5k_cord_subscribers_join_jump_1500channel(self):
2336 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2337 num_subscribers = 5000
2338 num_channels = 1500
2339 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2340 num_channels = num_channels,
2341 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2342 port_list = self.generate_port_list(num_subscribers, num_channels),
2343 negative_subscriber_auth = 'all')
2344 assert_equal(test_status, True)
2345
2346 @nottest
2347 def test_5k_cord_subscribers_join_next_1500channel(self):
2348 ###"""Test 5k subscribers join next for 1500 channels"""
2349 num_subscribers = 5000
2350 num_channels = 1500
2351 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2352 num_channels = num_channels,
2353 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2354 port_list = self.generate_port_list(num_subscribers, num_channels),
2355 negative_subscriber_auth = 'all')
2356 assert_equal(test_status, True)
2357
2358 @nottest
2359 def test_10k_cord_subscribers_join_recv_100channel(self):
2360 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2361 num_subscribers = 10000
2362 num_channels = 100
2363 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2364 num_channels = num_channels,
2365 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2366 port_list = self.generate_port_list(num_subscribers, num_channels),
2367 negative_subscriber_auth = 'all')
2368 assert_equal(test_status, True)
2369
2370 @nottest
2371 def test_10k_cord_subscribers_join_jump_100channel(self):
2372 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2373 num_subscribers = 10000
2374 num_channels = 100
2375 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2376 num_channels = num_channels,
2377 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2378 port_list = self.generate_port_list(num_subscribers, num_channels),
2379 negative_subscriber_auth = 'all')
2380 assert_equal(test_status, True)
2381
2382 @nottest
2383 def test_10k_cord_subscribers_join_next_100channel(self):
2384 ###"""Test 10k subscribers join next for 100 channels"""
2385 num_subscribers = 10000
2386 num_channels = 100
2387 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2388 num_channels = num_channels,
2389 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2390 port_list = self.generate_port_list(num_subscribers, num_channels),
2391 negative_subscriber_auth = 'all')
2392 assert_equal(test_status, True)
2393
2394 @nottest
2395 def test_100k_cord_subscribers_join_recv_100channel(self):
2396 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2397 num_subscribers = 100000
2398 num_channels = 100
2399 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2400 num_channels = num_channels,
2401 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2402 port_list = self.generate_port_list(num_subscribers, num_channels),
2403 negative_subscriber_auth = 'all')
2404 assert_equal(test_status, True)
2405
2406 @nottest
2407 def test_100k_cord_subscribers_join_jump_100channel(self):
2408 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2409 num_subscribers = 100000
2410 num_channels = 100
2411 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2412 num_channels = num_channels,
2413 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2414 port_list = self.generate_port_list(num_subscribers, num_channels),
2415 negative_subscriber_auth = 'all')
2416 assert_equal(test_status, True)
2417
2418 @nottest
2419 def test_100k_cord_subscribers_join_next_100channel(self):
2420 ###"""Test 100k subscribers join next for 100 channels"""
2421 num_subscribers = 100000
2422 num_channels = 100
2423 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2424 num_channels = num_channels,
2425 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2426 port_list = self.generate_port_list(num_subscribers, num_channels),
2427 negative_subscriber_auth = 'all')
2428 assert_equal(test_status, True)
2429
2430 @nottest
2431 def test_10k_cord_subscribers_join_recv_400channel(self):
2432 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2433 num_subscribers = 10000
2434 num_channels = 400
2435 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2436 num_channels = num_channels,
2437 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2438 port_list = self.generate_port_list(num_subscribers, num_channels),
2439 negative_subscriber_auth = 'all')
2440 assert_equal(test_status, True)
2441
2442 @nottest
2443 def test_10k_cord_subscribers_join_jump_400channel(self):
2444 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2445 num_subscribers = 10000
2446 num_channels = 400
2447 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2448 num_channels = num_channels,
2449 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2450 port_list = self.generate_port_list(num_subscribers, num_channels),
2451 negative_subscriber_auth = 'all')
2452 assert_equal(test_status, True)
2453
2454 @nottest
2455 def test_10k_cord_subscribers_join_next_400channel(self):
2456 ###"""Test 10k subscribers join next for 400 channels"""
2457 num_subscribers = 10000
2458 num_channels = 400
2459 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2460 num_channels = num_channels,
2461 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2462 port_list = self.generate_port_list(num_subscribers, num_channels),
2463 negative_subscriber_auth = 'all')
2464 assert_equal(test_status, True)
2465
2466 @nottest
2467 def test_10k_cord_subscribers_join_recv_800channel(self):
2468 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2469 num_subscribers = 10000
2470 num_channels = 800
2471 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2472 num_channels = num_channels,
2473 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2474 port_list = self.generate_port_list(num_subscribers, num_channels),
2475 negative_subscriber_auth = 'all')
2476 assert_equal(test_status, True)
2477
2478 @nottest
2479 def test_10k_cord_subscribers_join_jump_800channel(self):
2480 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2481 num_subscribers = 10000
2482 num_channels = 800
2483 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2484 num_channels = num_channels,
2485 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2486 port_list = self.generate_port_list(num_subscribers, num_channels),
2487 negative_subscriber_auth = 'all')
2488 assert_equal(test_status, True)
2489
2490 @nottest
2491 def test_10k_cord_subscribers_join_next_800channel(self):
2492 ###"""Test 10k subscribers join next for 800 channels"""
2493 num_subscribers = 10000
2494 num_channels = 800
2495 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2496 num_channels = num_channels,
2497 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2498 port_list = self.generate_port_list(num_subscribers, num_channels),
2499 negative_subscriber_auth = 'all')
2500 assert_equal(test_status, True)
2501
2502 @nottest
2503 def test_10k_cord_subscribers_join_recv_1200channel(self):
2504 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2505 num_subscribers = 10000
2506 num_channels = 1200
2507 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2508 num_channels = num_channels,
2509 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2510 port_list = self.generate_port_list(num_subscribers, num_channels),
2511 negative_subscriber_auth = 'all')
2512 assert_equal(test_status, True)
2513
2514 @nottest
2515 def test_10k_cord_subscribers_join_jump_1200channel(self):
2516 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2517 num_subscribers = 10000
2518 num_channels = 1200
2519 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2520 num_channels = num_channels,
2521 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2522 port_list = self.generate_port_list(num_subscribers, num_channels),
2523 negative_subscriber_auth = 'all')
2524 assert_equal(test_status, True)
2525
2526 @nottest
2527 def test_10k_cord_subscribers_join_next_1200channel(self):
2528 ###"""Test 10k subscribers join next for 1200 channels"""
2529 num_subscribers = 10000
2530 num_channels = 1200
2531 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2532 num_channels = num_channels,
2533 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2534 port_list = self.generate_port_list(num_subscribers, num_channels),
2535 negative_subscriber_auth = 'all')
2536 assert_equal(test_status, True)
2537
2538 @nottest
2539 def test_10k_cord_subscribers_join_recv_1500channel(self):
2540 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2541 num_subscribers = 10000
2542 num_channels = 1500
2543 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2544 num_channels = num_channels,
2545 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2546 port_list = self.generate_port_list(num_subscribers, num_channels),
2547 negative_subscriber_auth = 'all')
2548 assert_equal(test_status, True)
2549
2550 @nottest
2551 def test_10k_cord_subscribers_join_jump_1500channel(self):
2552 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2553 num_subscribers = 10000
2554 num_channels = 1500
2555 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2556 num_channels = num_channels,
2557 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2558 port_list = self.generate_port_list(num_subscribers, num_channels),
2559 negative_subscriber_auth = 'all')
2560 assert_equal(test_status, True)
2561
2562 @nottest
2563 def test_10k_cord_subscribers_join_next_1500channel(self):
2564 ###"""Test 10k subscribers join next for 1500 channels"""
2565 num_subscribers = 10000
2566 num_channels = 1500
2567 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2568 num_channels = num_channels,
2569 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2570 port_list = self.generate_port_list(num_subscribers, num_channels),
2571 negative_subscriber_auth = 'all')
2572 assert_equal(test_status, True)
2573
2574 @nottest
2575 def test_100k_cord_subscribers_join_recv_1500channel(self):
2576 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2577 num_subscribers = 100000
2578 num_channels = 1500
2579 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2580 num_channels = num_channels,
2581 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2582 port_list = self.generate_port_list(num_subscribers, num_channels),
2583 negative_subscriber_auth = 'all')
2584 assert_equal(test_status, True)
2585
2586 @nottest
2587 def test_100k_cord_subscribers_join_jump_1500channel(self):
2588 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2589 num_subscribers = 100000
2590 num_channels = 1500
2591 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2592 num_channels = num_channels,
2593 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2594 port_list = self.generate_port_list(num_subscribers, num_channels),
2595 negative_subscriber_auth = 'all')
2596 assert_equal(test_status, True)
2597
2598 @nottest
2599 def test_100k_cord_subscribers_join_next_1500channel(self):
2600 ###"""Test 10k subscribers join next for 1500 channels"""
2601 num_subscribers = 100000
2602 num_channels = 1500
2603 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2604 num_channels = num_channels,
2605 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2606 port_list = self.generate_port_list(num_subscribers, num_channels),
2607 negative_subscriber_auth = 'all')
2608 assert_equal(test_status, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002609
2610
2611
A.R Karthick8a507cf2017-06-02 18:44:49 -07002612 def remove_olt(self, switch_map):
2613 controller = get_controller()
2614 auth = ('karaf', 'karaf')
2615 #remove subscriber for every port on all the voltha devices
2616 for device, device_map in switch_map.iteritems():
2617 uni_ports = device_map['ports']
2618 uplink_vlan = device_map['uplink_vlan']
2619 for port in uni_ports:
2620 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}'.format(controller,
2621 device,
2622 port)
2623 resp = requests.delete(rest_url, auth = auth)
2624 if resp.status_code not in [204, 202, 200]:
2625 log_test.error('Error deleting subscriber for device %s on port %s' %(device, port))
2626 else:
2627 log_test.info('Deleted subscriber for device %s on port %s' %(device, port))
A.R Karthick4c4d0492017-05-26 19:23:05 -07002628
2629 def config_olt(self, switch_map):
2630 controller = get_controller()
A.R Karthick4c4d0492017-05-26 19:23:05 -07002631 auth = ('karaf', 'karaf')
2632 #configure subscriber for every port on all the voltha devices
2633 for device, device_map in switch_map.iteritems():
2634 uni_ports = device_map['ports']
2635 uplink_vlan = device_map['uplink_vlan']
2636 for port in uni_ports:
2637 vlan = port
2638 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}/{}'.format(controller,
2639 device,
2640 port,
2641 vlan)
2642 resp = requests.post(rest_url, auth = auth)
2643 assert_equal(resp.ok, True)
2644
2645 def test_cord_subscriber_voltha(self):
2646 """Test subscriber join next for channel surfing"""
2647 if self.VOLTHA_HOST is None:
2648 log_test.info('Skipping test as no voltha host')
2649 return
2650 voltha = VolthaCtrl(self.VOLTHA_HOST,
2651 rest_port = self.VOLTHA_REST_PORT,
2652 uplink_vlan_map = self.VOLTHA_UPLINK_VLAN_MAP)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002653 if self.VOLTHA_OLT_TYPE.startswith('ponsim'):
2654 ponsim_address = '{}:50060'.format(self.VOLTHA_HOST)
2655 log_test.info('Enabling ponsim olt')
A.R Karthick8a507cf2017-06-02 18:44:49 -07002656 device_id, status = voltha.enable_device(self.VOLTHA_OLT_TYPE, address = ponsim_address)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002657 else:
2658 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 -07002659 device_id, status = voltha.enable_device(self.VOLTHA_OLT_TYPE, self.VOLTHA_OLT_MAC)
A.R Karthick8b9c5f12017-05-30 17:47:08 -07002660
A.R Karthick8a507cf2017-06-02 18:44:49 -07002661 assert_not_equal(device_id, None)
2662 if status == False:
2663 voltha.disable_device(device_id, delete = True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002664 assert_equal(status, True)
2665 time.sleep(10)
A.R Karthick8a507cf2017-06-02 18:44:49 -07002666 switch_map = None
2667 olt_configured = False
2668 try:
2669 switch_map = voltha.config(fake = self.VOLTHA_CONFIG_FAKE)
2670 if not switch_map:
2671 log_test.info('No voltha devices found')
2672 return
2673 log_test.info('Installing OLT app')
2674 OnosCtrl.install_app(self.olt_app_file)
2675 time.sleep(5)
2676 log_test.info('Adding subscribers through OLT app')
2677 self.config_olt(switch_map)
2678 olt_configured = True
2679 time.sleep(5)
2680 self.num_subscribers = 1
2681 self.num_channels = 1
2682 services = ('TLS', 'IGMP')
2683 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
2684 num_channels = self.num_channels,
2685 cbs = (self.tls_verify, self.dhcp_next_verify,
2686 self.voltha_igmp_next_verify, self.traffic_verify),
2687 port_list = self.generate_port_list(self.num_subscribers,
2688 self.num_channels),
2689 services = services)
2690 assert_equal(test_status, True)
2691 finally:
2692 if switch_map is not None:
2693 if olt_configured is True:
2694 self.remove_olt(switch_map)
2695 voltha.disable_device(device_id, delete = True)
2696 time.sleep(10)
2697 log_test.info('Uninstalling OLT app')
2698 OnosCtrl.uninstall_app(self.olt_app_name)