blob: a05399f2cd81f303bd19f80bb440eb06759be38a [file] [log] [blame]
Matteo Scandolo48d3d2d2017-08-08 13:05:27 -07001
2# Copyright 2017-present Open Networking Foundation
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
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# 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
16
A R Karthicke237aee2016-12-01 17:46:43 -080017#
A R Karthick07608ef2016-08-23 16:51:19 -070018# Copyright 2016-present Ciena Corporation
19#
20# Licensed under the Apache License, Version 2.0 (the "License");
21# you may not use this file except in compliance with the License.
22# You may obtain a copy of the License at
A R Karthicke237aee2016-12-01 17:46:43 -080023#
A R Karthick07608ef2016-08-23 16:51:19 -070024# http://www.apache.org/licenses/LICENSE-2.0
A R Karthicke237aee2016-12-01 17:46:43 -080025#
A R Karthick07608ef2016-08-23 16:51:19 -070026# Unless required by applicable law or agreed to in writing, software
27# distributed under the License is distributed on an "AS IS" BASIS,
28# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29# See the License for the specific language governing permissions and
30# limitations under the License.
31#
A R Karthickb7e80902016-05-17 09:38:31 -070032import unittest
33from nose.tools import *
34from nose.twistedtools import reactor, deferred
35from twisted.internet import defer
A.R Karthick401a1ed2017-05-18 11:08:27 -070036from scapy.all import IP
A R Karthickb7e80902016-05-17 09:38:31 -070037import time, monotonic
38import os, sys
39import tempfile
40import random
41import threading
42import json
A R Karthick65c4d722016-07-18 14:20:17 -070043import requests
A R Karthickb7e80902016-05-17 09:38:31 -070044from Stats import Stats
45from OnosCtrl import OnosCtrl
46from DHCP import DHCPTest
47from EapTLS import TLSAuthTest
48from Channels import Channels, IgmpChannel
49from subscriberDb import SubscriberDB
50from threadPool import ThreadPool
A.R Karthick95d044e2016-06-10 18:44:36 -070051from portmaps import g_subscriber_port_map
A R Karthickb7e80902016-05-17 09:38:31 -070052from OltConfig import *
A.R Karthick8a507cf2017-06-02 18:44:49 -070053from CordTestServer import cord_test_onos_restart, cord_test_shell, cord_test_radius_restart
A.R Karthick4c4d0492017-05-26 19:23:05 -070054from CordTestUtils import log_test, get_controller
A R Karthick9313b762016-11-07 13:14:35 -080055from CordLogger import CordLogger
A R Karthick9dc6e922017-07-12 14:40:16 -070056from CordTestConfig import setup_module, teardown_module
A R Karthickb608d402017-06-02 11:48:41 -070057from CordContainer import Onos
A R Karthickb7e80902016-05-17 09:38:31 -070058
A R Karthick76a497a2017-04-12 10:59:39 -070059log_test.setLevel('INFO')
A R Karthickb7e80902016-05-17 09:38:31 -070060
61class Subscriber(Channels):
62 PORT_TX_DEFAULT = 2
63 PORT_RX_DEFAULT = 1
64 INTF_TX_DEFAULT = 'veth2'
65 INTF_RX_DEFAULT = 'veth0'
66 STATS_RX = 0
67 STATS_TX = 1
68 STATS_JOIN = 2
69 STATS_LEAVE = 3
70 SUBSCRIBER_SERVICES = 'DHCP IGMP TLS'
A.R Karthick4c4d0492017-05-26 19:23:05 -070071
A R Karthickb7e80902016-05-17 09:38:31 -070072 def __init__(self, name = 'sub', service = SUBSCRIBER_SERVICES, port_map = None,
73 num = 1, channel_start = 0,
74 tx_port = PORT_TX_DEFAULT, rx_port = PORT_RX_DEFAULT,
75 iface = INTF_RX_DEFAULT, iface_mcast = INTF_TX_DEFAULT,
76 mcast_cb = None, loginType = 'wireless'):
77 self.tx_port = tx_port
78 self.rx_port = rx_port
79 self.port_map = port_map or g_subscriber_port_map
80 try:
81 self.tx_intf = self.port_map[tx_port]
82 self.rx_intf = self.port_map[rx_port]
83 except:
84 self.tx_intf = self.port_map[self.PORT_TX_DEFAULT]
85 self.rx_intf = self.port_map[self.PORT_RX_DEFAULT]
86
A R Karthick76a497a2017-04-12 10:59:39 -070087 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 -070088 Channels.__init__(self, num, channel_start = channel_start,
A R Karthickb7e80902016-05-17 09:38:31 -070089 iface = self.rx_intf, iface_mcast = self.tx_intf, mcast_cb = mcast_cb)
90 self.name = name
91 self.service = service
92 self.service_map = {}
93 services = self.service.strip().split(' ')
94 for s in services:
95 self.service_map[s] = True
96 self.loginType = loginType
97 ##start streaming channels
98 self.join_map = {}
99 ##accumulated join recv stats
100 self.join_rx_stats = Stats()
A R Karthick338268f2016-06-21 17:12:13 -0700101 self.recv_timeout = False
A R Karthickb7e80902016-05-17 09:38:31 -0700102
103 def has_service(self, service):
104 if self.service_map.has_key(service):
105 return self.service_map[service]
106 if self.service_map.has_key(service.upper()):
107 return self.service_map[service.upper()]
108 return False
109
110 def channel_join_update(self, chan, join_time):
111 self.join_map[chan] = ( Stats(), Stats(), Stats(), Stats() )
112 self.channel_update(chan, self.STATS_JOIN, 1, t = join_time)
113
114 def channel_join(self, chan = 0, delay = 2):
115 '''Join a channel and create a send/recv stats map'''
116 if self.join_map.has_key(chan):
117 del self.join_map[chan]
118 self.delay = delay
119 chan, join_time = self.join(chan)
120 self.channel_join_update(chan, join_time)
121 return chan
122
A.R Karthick517f7812017-05-18 11:22:46 -0700123 def channel_join_next(self, delay = 2, leave_flag = True):
A R Karthickb7e80902016-05-17 09:38:31 -0700124 '''Joins the next channel leaving the last channel'''
125 if self.last_chan:
126 if self.join_map.has_key(self.last_chan):
127 del self.join_map[self.last_chan]
128 self.delay = delay
A.R Karthick517f7812017-05-18 11:22:46 -0700129 chan, join_time = self.join_next(leave_flag = leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700130 self.channel_join_update(chan, join_time)
131 return chan
132
133 def channel_jump(self, delay = 2):
134 '''Jumps randomly to the next channel leaving the last channel'''
135 if self.last_chan is not None:
136 if self.join_map.has_key(self.last_chan):
137 del self.join_map[self.last_chan]
138 self.delay = delay
139 chan, join_time = self.jump()
140 self.channel_join_update(chan, join_time)
141 return chan
142
A R Karthick78d1f492017-05-19 14:24:17 -0700143 def channel_leave(self, chan = 0, force = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700144 if self.join_map.has_key(chan):
145 del self.join_map[chan]
A R Karthick78d1f492017-05-19 14:24:17 -0700146 self.leave(chan, force = force)
A R Karthickb7e80902016-05-17 09:38:31 -0700147
148 def channel_update(self, chan, stats_type, packets, t=0):
149 if type(chan) == type(0):
150 chan_list = (chan,)
151 else:
152 chan_list = chan
A.R Karthick95d044e2016-06-10 18:44:36 -0700153 for c in chan_list:
A R Karthickb7e80902016-05-17 09:38:31 -0700154 if self.join_map.has_key(c):
155 self.join_map[c][stats_type].update(packets = packets, t = t)
156
A R Karthick338268f2016-06-21 17:12:13 -0700157 def channel_receive(self, chan, cb = None, count = 1, timeout = 5):
A R Karthick76a497a2017-04-12 10:59:39 -0700158 log_test.info('Subscriber %s on port %s receiving from group %s, channel %d' %
A R Karthick338268f2016-06-21 17:12:13 -0700159 (self.name, self.rx_intf, self.gaddr(chan), chan))
160 r = self.recv(chan, cb = cb, count = count, timeout = timeout)
A R Karthicka013a272016-08-16 16:40:19 -0700161 if len(r) == 0:
A R Karthick76a497a2017-04-12 10:59:39 -0700162 log_test.info('Subscriber %s on port %s timed out' %(self.name, self.rx_intf))
A R Karthicka013a272016-08-16 16:40:19 -0700163 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700164 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 -0700165 if self.recv_timeout:
166 ##Negative test case is disabled for now
167 assert_equal(len(r), 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700168
169 def recv_channel_cb(self, pkt):
170 ##First verify that we have received the packet for the joined instance
A R Karthick76a497a2017-04-12 10:59:39 -0700171 log_test.info('Packet received for group %s, subscriber %s, port %s' %
A R Karthick338268f2016-06-21 17:12:13 -0700172 (pkt[IP].dst, self.name, self.rx_intf))
173 if self.recv_timeout:
174 return
A R Karthickb7e80902016-05-17 09:38:31 -0700175 chan = self.caddr(pkt[IP].dst)
176 assert_equal(chan in self.join_map.keys(), True)
177 recv_time = monotonic.monotonic() * 1000000
178 join_time = self.join_map[chan][self.STATS_JOIN].start
179 delta = recv_time - join_time
180 self.join_rx_stats.update(packets=1, t = delta, usecs = True)
181 self.channel_update(chan, self.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700182 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 -0700183
184class subscriber_pool:
185
186 def __init__(self, subscriber, test_cbs):
187 self.subscriber = subscriber
188 self.test_cbs = test_cbs
189
190 def pool_cb(self):
191 for cb in self.test_cbs:
192 if cb:
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700193 self.test_status = cb(self.subscriber)
194 if self.test_status is not True:
195 ## This is chaning for other sub status has to check again
196 self.test_status = True
A R Karthick76a497a2017-04-12 10:59:39 -0700197 log_test.info('This service is failed and other services will not run for this subscriber')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700198 break
A R Karthick76a497a2017-04-12 10:59:39 -0700199 log_test.info('This Subscriber is tested for multiple service eligibility ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700200 self.test_status = True
201
A.R Karthick95d044e2016-06-10 18:44:36 -0700202
A R Karthick9313b762016-11-07 13:14:35 -0800203class subscriber_exchange(CordLogger):
A R Karthickb7e80902016-05-17 09:38:31 -0700204
A.R Karthick95d044e2016-06-10 18:44:36 -0700205 apps = ('org.opencord.aaa', 'org.onosproject.dhcp')
206 olt_apps = () #'org.opencord.cordmcast')
A R Karthicka013a272016-08-16 16:40:19 -0700207 vtn_app = 'org.opencord.vtn'
A R Karthickb7e80902016-05-17 09:38:31 -0700208 table_app = 'org.ciena.cordigmp'
209 dhcp_server_config = {
210 "ip": "10.1.11.50",
211 "mac": "ca:fe:ca:fe:ca:fe",
212 "subnet": "255.255.252.0",
213 "broadcast": "10.1.11.255",
214 "router": "10.1.8.1",
215 "domain": "8.8.8.8",
216 "ttl": "63",
217 "delay": "2",
218 "startip": "10.1.11.51",
219 "endip": "10.1.11.100"
220 }
221
222 aaa_loaded = False
223 test_path = os.path.dirname(os.path.realpath(__file__))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700224 table_app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-multitable-2.0-SNAPSHOT.oar')
225 app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-2.0-SNAPSHOT.oar')
A.R Karthick4c4d0492017-05-26 19:23:05 -0700226 olt_app_file = os.path.join(test_path, '..', 'apps/olt-app-1.2-SNAPSHOT.oar')
A.R Karthick8a507cf2017-06-02 18:44:49 -0700227 olt_app_name = 'org.onosproject.olt'
A R Karthickb7e80902016-05-17 09:38:31 -0700228 onos_config_path = os.path.join(test_path, '..', 'setup/onos-config')
A.R Karthick5968e0d2017-05-16 14:50:46 -0700229 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 -0700230 cpqd_path = os.path.join(test_path, '..', 'setup')
231 ovs_path = cpqd_path
A R Karthick65c4d722016-07-18 14:20:17 -0700232 test_services = ('IGMP', 'TRAFFIC')
A R Karthick338268f2016-06-21 17:12:13 -0700233 num_joins = 0
234 num_subscribers = 0
A.R Karthick517f7812017-05-18 11:22:46 -0700235 leave_flag = True
A R Karthick338268f2016-06-21 17:12:13 -0700236 num_channels = 0
237 recv_timeout = False
A R Karthick4e0c0912016-08-17 16:57:42 -0700238 onos_restartable = bool(int(os.getenv('ONOS_RESTART', 0)))
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700239 INTF_TX_DEFAULT = 'veth2'
240 INTF_RX_DEFAULT = 'veth0'
241 SUBSCRIBER_TIMEOUT = 300
242
243 CLIENT_CERT = """-----BEGIN CERTIFICATE-----
244MIICuDCCAiGgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
245CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
246IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
247RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwNjA2MjExMjI3WhcN
248MTcwNjAxMjExMjI3WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
249BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
250hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
251gYEAwvXiSzb9LZ6c7uNziUfKvoHO7wu/uiFC5YUpXbmVGuGZizbVrny0xnR85Dfe
252+9R4diansfDhIhzOUl1XjN3YDeSS9OeF5YWNNE8XDhlz2d3rVzaN6hIhdotBkUjg
253rUewjTg5OFR31QEyG3v8xR3CLgiE9xQELjZbSA07pD79zuUCAwEAAaNPME0wEwYD
254VR0lBAwwCgYIKwYBBQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5l
255eGFtcGxlLmNvbS9leGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOBgQDAjkrY
2566tDChmKbvr8w6Du/t8vHjTCoCIocHTN0qzWOeb1YsAGX89+TrWIuO1dFyYd+Z0KC
257PDKB5j/ygml9Na+AklSYAVJIjvlzXKZrOaPmhZqDufi+rXWti/utVqY4VMW2+HKC
258nXp37qWeuFLGyR1519Y1d6F/5XzqmvbwURuEug==
259-----END CERTIFICATE-----"""
260
261 CLIENT_CERT_INVALID = '''-----BEGIN CERTIFICATE-----
262MIIDvTCCAqWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
263CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
264IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
265RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwMzExMTg1MzM2WhcN
266MTcwMzA2MTg1MzM2WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
267BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
268hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
269AQoCggEBAOxemcBsPn9tZsCa5o2JA6sQDC7A6JgCNXXl2VFzKLNNvB9PS6D7ZBsQ
2705An0zEDMNzi51q7lnrYg1XyiE4S8FzMGAFr94RlGMQJUbRD9V/oqszMX4k++iAOK
271tIA1gr3x7Zi+0tkjVSVzXTmgNnhChAamdMsjYUG5+CY9WAicXyy+VEV3zTphZZDR
272OjcjEp4m/TSXVPYPgYDXI40YZKX5BdvqykWtT/tIgZb48RS1NPyN/XkCYzl3bv21
273qx7Mc0fcEbsJBIIRYTUkfxnsilcnmLxSYO+p+DZ9uBLBzcQt+4Rd5pLSfi21WM39
2742Z2oOi3vs/OYAPAqgmi2JWOv3mePa/8CAwEAAaNPME0wEwYDVR0lBAwwCgYIKwYB
275BQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5leGFtcGxlLmNvbS9l
276eGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOCAQEALBzMPDTIB6sLyPl0T6JV
277MjOkyldAVhXWiQsTjaGQGJUUe1cmUJyZbUZEc13MygXMPOM4x7z6VpXGuq1c/Vxn
278VzQ2fNnbJcIAHi/7G8W5/SQfPesIVDsHTEc4ZspPi5jlS/MVX3HOC+BDbOjdbwqP
279RX0JEr+uOyhjO+lRxG8ilMRACoBUbw1eDuVDoEBgErSUC44pq5ioDw2xelc+Y6hQ
280dmtYwfY0DbvwxHtA495frLyPcastDiT/zre7NL51MyUDPjjYjghNQEwvu66IKbQ3
281T1tJBrgI7/WI+dqhKBFolKGKTDWIHsZXQvZ1snGu/FRYzg1l+R/jT8cRB9BDwhUt
282yg==
283-----END CERTIFICATE-----'''
284
A.R Karthick4c4d0492017-05-26 19:23:05 -0700285 VOLTHA_HOST = None
A R Karthick18d0fb62017-09-01 18:49:07 -0700286 VOLTHA_TEARDOWN = True
A.R Karthick4c4d0492017-05-26 19:23:05 -0700287 VOLTHA_REST_PORT = 8881
A R Karthickd52ca8a2017-07-24 17:38:55 -0700288 VOLTHA_UPLINK_VLAN_MAP = { 'of:0001000000000001' : '222' }
A R Karthick53442712017-07-27 12:23:30 -0700289 VOLTHA_UPLINK_VLAN_START = 333
A.R Karthick4c4d0492017-05-26 19:23:05 -0700290 VOLTHA_IGMP_ITERATIONS = 100
291 VOLTHA_CONFIG_FAKE = True
292 VOLTHA_OLT_TYPE = 'simulated_olt'
293 VOLTHA_OLT_MAC = '00:0c:e2:31:12:00'
294 VOLTHA_ENABLED = bool(int(os.getenv('VOLTHA_ENABLED', 0)))
A R Karthick9dc6e922017-07-12 14:40:16 -0700295 voltha_ctrl = None
296 voltha_device = None
297 voltha_switch_map = None
A R Karthick18d0fb62017-09-01 18:49:07 -0700298 voltha_preconfigured = False
A.R Karthick4c4d0492017-05-26 19:23:05 -0700299
A R Karthickb7e80902016-05-17 09:38:31 -0700300 @classmethod
A R Karthickb608d402017-06-02 11:48:41 -0700301 def update_apps_version(cls):
302 version = Onos.getVersion()
303 major = int(version.split('.')[0])
304 minor = int(version.split('.')[1])
305 cordigmp_app_version = '2.0-SNAPSHOT'
306 olt_app_version = '1.2-SNAPSHOT'
307 if major > 1:
308 cordigmp_app_version = '3.0-SNAPSHOT'
A R Karthick1555c7c2017-09-07 14:59:41 -0700309 olt_app_version = '3.0-SNAPSHOT'
A R Karthickb608d402017-06-02 11:48:41 -0700310 elif major == 1:
A R Karthick1555c7c2017-09-07 14:59:41 -0700311 if minor >= 10:
A R Karthickb608d402017-06-02 11:48:41 -0700312 cordigmp_app_version = '3.0-SNAPSHOT'
A R Karthick1555c7c2017-09-07 14:59:41 -0700313 olt_app_version = '3.0-SNAPSHOT'
A R Karthickb608d402017-06-02 11:48:41 -0700314 elif minor <= 8:
315 olt_app_version = '1.1-SNAPSHOT'
316 cls.app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-{}.oar'.format(cordigmp_app_version))
317 cls.table_app_file = os.path.join(cls.test_path, '..', 'apps/ciena-cordigmp-multitable-{}.oar'.format(cordigmp_app_version))
318 cls.olt_app_file = os.path.join(cls.test_path, '..', 'apps/olt-app-{}.oar'.format(olt_app_version))
319
320 @classmethod
A R Karthickd44cea12016-07-20 12:16:41 -0700321 def load_device_id(cls):
A R Karthickb03cecd2016-07-27 10:27:55 -0700322 '''Configure the device id'''
323 did = OnosCtrl.get_device_id()
A R Karthickd44cea12016-07-20 12:16:41 -0700324 #Set the default config
325 cls.device_id = did
326 cls.device_dict = { "devices" : {
327 "{}".format(did) : {
328 "basic" : {
329 "driver" : "pmc-olt"
330 }
331 }
332 },
333 }
334 return did
335
336 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700337 def setUpClass(cls):
338 '''Load the OLT config and activate relevant apps'''
A R Karthickb608d402017-06-02 11:48:41 -0700339 cls.update_apps_version()
A R Karthickb7e80902016-05-17 09:38:31 -0700340 cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700341 if cls.VOLTHA_ENABLED is False:
A R Karthick38d5df42017-07-10 13:33:26 -0700342 OnosCtrl.config_device_driver()
A.R Karthick4c4d0492017-05-26 19:23:05 -0700343 OnosCtrl.cord_olt_config(cls.olt)
A R Karthickb03cecd2016-07-27 10:27:55 -0700344 cls.port_map, cls.port_list = cls.olt.olt_port_map()
A R Karthick0f6b6842016-12-06 17:17:44 -0800345 cls.switches = cls.port_map['switches']
346 cls.num_ports = cls.port_map['num_ports']
347 if cls.num_ports > 1:
348 cls.num_ports -= 1 ##account for the tx port
A.R Karthickaa859b22017-06-12 14:50:35 -0700349 cls.activate_apps(cls.apps + cls.olt_apps, deactivate = True)
A R Karthickb7e80902016-05-17 09:38:31 -0700350
351 @classmethod
352 def tearDownClass(cls):
353 '''Deactivate the olt apps and restart OVS back'''
A R Karthick38d5df42017-07-10 13:33:26 -0700354 apps = cls.olt_apps
A R Karthickb7e80902016-05-17 09:38:31 -0700355 for app in apps:
356 onos_ctrl = OnosCtrl(app)
357 onos_ctrl.deactivate()
A R Karthick38d5df42017-07-10 13:33:26 -0700358 if cls.VOLTHA_ENABLED is False:
359 OnosCtrl.config_device_driver(driver = 'ovs')
A R Karthickb7e80902016-05-17 09:38:31 -0700360
361 @classmethod
A.R Karthickaa859b22017-06-12 14:50:35 -0700362 def activate_apps(cls, apps, deactivate = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700363 for app in apps:
364 onos_ctrl = OnosCtrl(app)
A.R Karthickaa859b22017-06-12 14:50:35 -0700365 if deactivate is True:
366 onos_ctrl.deactivate()
367 time.sleep(2)
A R Karthickb7e80902016-05-17 09:38:31 -0700368 status, _ = onos_ctrl.activate()
369 assert_equal(status, True)
370 time.sleep(2)
371
372 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700373 def start_onos(cls, network_cfg = None):
A R Karthicka478df42016-07-27 16:51:08 -0700374 if cls.onos_restartable is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700375 log_test.info('ONOS restart is disabled. Skipping ONOS restart')
A R Karthick65c4d722016-07-18 14:20:17 -0700376 return
A.R Karthick4c4d0492017-05-26 19:23:05 -0700377 if cls.VOLTHA_ENABLED is True:
378 log_test.info('ONOS restart skipped as VOLTHA is running')
379 return
A R Karthickb7e80902016-05-17 09:38:31 -0700380 if network_cfg is None:
A R Karthick4b72d4b2016-06-15 11:09:17 -0700381 network_cfg = cls.device_dict
A R Karthickb7e80902016-05-17 09:38:31 -0700382
383 if type(network_cfg) is tuple:
384 res = []
385 for v in network_cfg:
386 res += v.items()
387 config = dict(res)
388 else:
389 config = network_cfg
A R Karthick76a497a2017-04-12 10:59:39 -0700390 log_test.info('Restarting ONOS with new network configuration')
A R Karthick338268f2016-06-21 17:12:13 -0700391 return cord_test_onos_restart(config = config)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700392
393 @classmethod
394 def remove_onos_config(cls):
395 try:
396 os.unlink('{}/network-cfg.json'.format(cls.onos_config_path))
397 except: pass
A R Karthickb7e80902016-05-17 09:38:31 -0700398
399 @classmethod
400 def start_cpqd(cls, mac = '00:11:22:33:44:55'):
401 dpid = mac.replace(':', '')
402 cpqd_file = os.sep.join( (cls.cpqd_path, 'cpqd.sh') )
403 cpqd_cmd = '{} {}'.format(cpqd_file, dpid)
404 ret = os.system(cpqd_cmd)
405 assert_equal(ret, 0)
406 time.sleep(10)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700407 device_id = 'of:{}{}'.format('0'*4, dpid)
408 return device_id
A R Karthickb7e80902016-05-17 09:38:31 -0700409
410 @classmethod
411 def start_ovs(cls):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700412 ovs_file = os.sep.join( (cls.ovs_path, 'of-bridge.sh') )
A R Karthickb7e80902016-05-17 09:38:31 -0700413 ret = os.system(ovs_file)
414 assert_equal(ret, 0)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700415 time.sleep(30)
A R Karthickb7e80902016-05-17 09:38:31 -0700416
A R Karthicka013a272016-08-16 16:40:19 -0700417 @classmethod
418 def ovs_cleanup(cls):
419 ##For every test case, delete all the OVS groups
420 cmd = 'ovs-ofctl del-groups br-int -OOpenFlow11 >/dev/null 2>&1'
A R Karthicka013a272016-08-16 16:40:19 -0700421 try:
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700422 cord_test_shell(cmd)
423 ##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 -0700424 os.system(cmd)
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700425 finally:
426 return
A R Karthicka013a272016-08-16 16:40:19 -0700427
A R Karthickb7e80902016-05-17 09:38:31 -0700428 def onos_aaa_load(self):
429 if self.aaa_loaded:
430 return
A R Karthick1555c7c2017-09-07 14:59:41 -0700431 OnosCtrl.aaa_load_config()
A R Karthickb7e80902016-05-17 09:38:31 -0700432 self.aaa_loaded = True
433
434 def onos_dhcp_table_load(self, config = None):
435 dhcp_dict = {'apps' : { 'org.onosproject.dhcp' : { 'dhcp' : copy.copy(self.dhcp_server_config) } } }
436 dhcp_config = dhcp_dict['apps']['org.onosproject.dhcp']['dhcp']
437 if config:
438 for k in config.keys():
439 if dhcp_config.has_key(k):
440 dhcp_config[k] = config[k]
441 self.onos_load_config('org.onosproject.dhcp', dhcp_dict)
442
443 def onos_load_config(self, app, config):
444 status, code = OnosCtrl.config(config)
445 if status is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700446 log_test.info('JSON config request for app %s returned status %d' %(app, code))
A R Karthickb7e80902016-05-17 09:38:31 -0700447 assert_equal(status, True)
448 time.sleep(2)
449
450 def dhcp_sndrcv(self, dhcp, update_seed = False):
451 cip, sip = dhcp.discover(update_seed = update_seed)
452 assert_not_equal(cip, None)
453 assert_not_equal(sip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700454 log_test.info('Got dhcp client IP %s from server %s for mac %s' %
A R Karthickb7e80902016-05-17 09:38:31 -0700455 (cip, sip, dhcp.get_mac(cip)[0]))
456 return cip,sip
457
458 def dhcp_request(self, subscriber, seed_ip = '10.10.10.1', update_seed = False):
459 config = {'startip':'10.10.10.20', 'endip':'10.10.10.200',
460 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
461 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
462 self.onos_dhcp_table_load(config)
463 dhcp = DHCPTest(seed_ip = seed_ip, iface = subscriber.iface)
464 cip, sip = self.dhcp_sndrcv(dhcp, update_seed = update_seed)
465 return cip, sip
466
467 def recv_channel_cb(self, pkt):
468 ##First verify that we have received the packet for the joined instance
469 chan = self.subscriber.caddr(pkt[IP].dst)
470 assert_equal(chan in self.subscriber.join_map.keys(), True)
471 recv_time = monotonic.monotonic() * 1000000
472 join_time = self.subscriber.join_map[chan][self.subscriber.STATS_JOIN].start
473 delta = recv_time - join_time
474 self.subscriber.join_rx_stats.update(packets=1, t = delta, usecs = True)
475 self.subscriber.channel_update(chan, self.subscriber.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700476 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 -0700477 self.test_status = True
478
A R Karthick65c4d722016-07-18 14:20:17 -0700479 def traffic_verify(self, subscriber):
480 if subscriber.has_service('TRAFFIC'):
481 url = 'http://www.google.com'
482 resp = requests.get(url)
483 self.test_status = resp.ok
484 if resp.ok == False:
A R Karthick76a497a2017-04-12 10:59:39 -0700485 log_test.info('Subscriber %s failed get from url %s with status code %d'
A R Karthick65c4d722016-07-18 14:20:17 -0700486 %(subscriber.name, url, resp.status_code))
487 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700488 log_test.info('GET request from %s succeeded for subscriber %s'
A R Karthick65c4d722016-07-18 14:20:17 -0700489 %(url, subscriber.name))
A R Karthicka013a272016-08-16 16:40:19 -0700490 return self.test_status
A R Karthick65c4d722016-07-18 14:20:17 -0700491
A R Karthickb7e80902016-05-17 09:38:31 -0700492 def tls_verify(self, subscriber):
A.R Karthick8a507cf2017-06-02 18:44:49 -0700493 def tls_fail_cb():
494 log_test.info('TLS verification failed')
A R Karthickb7e80902016-05-17 09:38:31 -0700495 if subscriber.has_service('TLS'):
A.R Karthickaa859b22017-06-12 14:50:35 -0700496 #OnosCtrl('org.opencord.aaa').deactivate()
497 #time.sleep(2)
498 #OnosCtrl('org.opencord.aaa').activate()
499 #time.sleep(5)
A.R Karthick8a507cf2017-06-02 18:44:49 -0700500 tls = TLSAuthTest(fail_cb = tls_fail_cb, intf = subscriber.rx_intf)
A R Karthick76a497a2017-04-12 10:59:39 -0700501 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700502 tls.runTest()
A.R Karthick8a507cf2017-06-02 18:44:49 -0700503 assert_equal(tls.failTest, False)
A R Karthickb7e80902016-05-17 09:38:31 -0700504 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700505 return self.test_status
506 else:
507 self.test_status = True
508 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700509
510 def dhcp_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700511 if subscriber.has_service('DHCP'):
512 cip, sip = self.dhcp_request(subscriber, update_seed = True)
A R Karthick76a497a2017-04-12 10:59:39 -0700513 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700514 subscriber.src_list = [cip]
515 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700516 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700517 else:
518 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
519 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700520 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700521
522 def dhcp_jump_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700523 if subscriber.has_service('DHCP'):
524 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.200.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700525 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700526 subscriber.src_list = [cip]
527 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700528 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700529 else:
530 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
531 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700532 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700533
534 def dhcp_next_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700535 if subscriber.has_service('DHCP'):
536 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.150.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700537 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700538 subscriber.src_list = [cip]
539 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700540 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700541 else:
542 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
543 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700544 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700545
546 def igmp_verify(self, subscriber):
547 chan = 0
548 if subscriber.has_service('IGMP'):
A R Karthick338268f2016-06-21 17:12:13 -0700549 ##We wait for all the subscribers to join before triggering leaves
550 if subscriber.rx_port > 1:
551 time.sleep(5)
552 subscriber.channel_join(chan, delay = 0)
553 self.num_joins += 1
554 while self.num_joins < self.num_subscribers:
555 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700556 log_test.info('All subscribers have joined the channel')
A R Karthick338268f2016-06-21 17:12:13 -0700557 for i in range(10):
558 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
A R Karthick76a497a2017-04-12 10:59:39 -0700559 log_test.info('Leaving channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700560 subscriber.channel_leave(chan)
A R Karthick338268f2016-06-21 17:12:13 -0700561 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700562 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 -0700563 #Should not receive packets for this subscriber
564 self.recv_timeout = True
565 subscriber.recv_timeout = True
566 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
567 subscriber.recv_timeout = False
568 self.recv_timeout = False
A R Karthick76a497a2017-04-12 10:59:39 -0700569 log_test.info('Joining channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthick338268f2016-06-21 17:12:13 -0700570 subscriber.channel_join(chan, delay = 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700571 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700572 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700573
574 def igmp_jump_verify(self, subscriber):
575 if subscriber.has_service('IGMP'):
576 for i in xrange(subscriber.num):
A R Karthick76a497a2017-04-12 10:59:39 -0700577 log_test.info('Subscriber %s jumping channel' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700578 chan = subscriber.channel_jump(delay=0)
579 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 1)
A R Karthick76a497a2017-04-12 10:59:39 -0700580 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700581 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700582 log_test.info('Interface %s Jump RX stats for subscriber %s, %s' %(subscriber.iface, subscriber.name, subscriber.join_rx_stats))
A R Karthickb7e80902016-05-17 09:38:31 -0700583 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700584 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700585
586 def igmp_next_verify(self, subscriber):
587 if subscriber.has_service('IGMP'):
588 for i in xrange(subscriber.num):
589 if i:
A.R Karthick517f7812017-05-18 11:22:46 -0700590 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700591 else:
592 chan = subscriber.channel_join(i, delay=0)
A R Karthick76a497a2017-04-12 10:59:39 -0700593 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700594 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
A R Karthick76a497a2017-04-12 10:59:39 -0700595 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700596 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700597 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 -0700598 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700599 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700600
A.R Karthick4c4d0492017-05-26 19:23:05 -0700601 def voltha_igmp_next_verify(self, subscriber):
602 if subscriber.has_service('IGMP'):
603 for c in xrange(self.VOLTHA_IGMP_ITERATIONS):
604 for i in xrange(subscriber.num):
605 if i:
606 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
607 time.sleep(0.2)
608 else:
609 chan = subscriber.channel_join(i, delay=0)
610 time.sleep(0.2)
A.R Karthick56e59432017-06-06 18:05:46 -0700611 if subscriber.num == 1:
612 subscriber.channel_leave(chan)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700613 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
614 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
615 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
616 self.test_status = True
617 return self.test_status
618
A R Karthick31f1f342017-05-19 13:55:10 -0700619 def igmp_leave_verify(self, subscriber):
620 if subscriber.has_service('IGMP'):
621 for chan in xrange(subscriber.num):
A R Karthick78d1f492017-05-19 14:24:17 -0700622 subscriber.channel_leave(chan, force = True)
A R Karthick31f1f342017-05-19 13:55:10 -0700623 time.sleep(2)
624 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
625 #self.recv_timeout = True
626 #subscriber.recv_timeout = True
627 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
628 #self.recv_timeout = False
629 #subscriber.recv_timeout = False
630 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
631 #time.sleep(1)
632
633 self.test_status = True
634 return self.test_status
635
A R Karthickb7e80902016-05-17 09:38:31 -0700636 def generate_port_list(self, subscribers, channels):
637 return self.port_list[:subscribers]
638
A.R Karthick4c4d0492017-05-26 19:23:05 -0700639 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 -0700640 '''Load the subscriber from the database'''
A.R Karthick4c4d0492017-05-26 19:23:05 -0700641 test_services = services if services else self.test_services
642 self.subscriber_db = SubscriberDB(create = create, services = test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700643 if create is True:
644 self.subscriber_db.generate(num)
645 self.subscriber_info = self.subscriber_db.read(num)
646 self.subscriber_list = []
647 if not port_list:
648 port_list = self.generate_port_list(num, num_channels)
649
650 index = 0
651 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700652 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700653 service=info['Service'],
654 port_map = self.port_map,
655 num=num_channels,
656 channel_start = channel_start,
657 tx_port = port_list[index][0],
658 rx_port = port_list[index][1]))
659 if num_channels > 1:
660 channel_start += num_channels
661 index += 1
662
663 #load the ssm list for all subscriber channels
664 igmpChannel = IgmpChannel()
665 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
666 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
667 igmpChannel.igmp_load_ssm_config(ssm_list)
668
A.R Karthick95d044e2016-06-10 18:44:36 -0700669 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700670 channel_start = 0, cbs = None, port_list = [],
671 services = None, negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700672 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700673 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700674 subscribers_count = num_subscribers
675 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700676 self.subscriber_load(create = True, num = num_subscribers,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700677 num_channels = num_channels, channel_start = channel_start, port_list = port_list,
678 services = services)
A R Karthickb7e80902016-05-17 09:38:31 -0700679 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700680 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
681
A R Karthick338268f2016-06-21 17:12:13 -0700682 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800683 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700684 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700685 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700686 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700687 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700688 if services and 'IGMP' in services:
689 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700690 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
691 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
692 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
693 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
694 else:
695 cbs = cbs_negative
696 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700697 pool_object = subscriber_pool(subscriber, cbs)
698 self.thread_pool.addTask(pool_object.pool_cb)
699 self.thread_pool.cleanUpThreads()
700 for subscriber in self.subscriber_list:
A.R Karthick4bd5f532017-06-06 11:37:27 -0700701 if services and 'IGMP' in services:
702 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700703 if chan_leave is True:
704 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700705 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700706 return self.test_status
707
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700708 def tls_invalid_cert(self, subscriber):
709 if subscriber.has_service('TLS'):
710 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700711 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700712 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
713 tls.runTest()
714 if tls.failTest == True:
715 self.test_status = False
716 return self.test_status
717 else:
718 self.test_status = True
719 return self.test_status
720
721 def tls_no_cert(self, subscriber):
722 if subscriber.has_service('TLS'):
723 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700724 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700725 tls = TLSAuthTest(client_cert = '')
726 tls.runTest()
727 if tls.failTest == True:
728 self.test_status = False
729 return self.test_status
730 else:
731 self.test_status = True
732 return self.test_status
733
734 def tls_self_signed_cert(self, subscriber):
735 if subscriber.has_service('TLS'):
736 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700737 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700738 tls = TLSAuthTest(client_cert = self.CLIENT_CERT)
739 tls.runTest()
740 if tls.failTest == False:
741 self.test_status = True
742 return self.test_status
743 else:
744 self.test_status = True
745 return self.test_status
746
747 def tls_non_ca_authrized_cert(self, subscriber):
748 if subscriber.has_service('TLS'):
749 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700750 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700751 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
752 tls.runTest()
753 if tls.failTest == False:
754 self.test_status = True
755 return self.test_status
756 else:
757 self.test_status = True
758 return self.test_status
759
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700760 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
761 if subscriber.has_service('TLS'):
762 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700763 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700764 num_users = 3
765 for i in xrange(num_users):
766 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
767 tls.runTest()
768 if tls.failTest == False:
769 self.test_status = True
770 return self.test_status
771 else:
772 self.test_status = True
773 return self.test_status
774
775 def dhcp_discover_scenario(self, subscriber):
776 if subscriber.has_service('DHCP'):
777 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700778 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700779 t1 = self.subscriber_dhcp_1release()
780 self.test_status = True
781 return self.test_status
782 else:
783 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
784 self.test_status = True
785 return self.test_status
786
787 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700788 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
789 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
790 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
791 self.onos_dhcp_table_load(config)
792 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
793 cip, sip = self.send_recv()
794 log_test.info('Releasing ip %s to server %s' %(cip, sip))
795 assert_equal(self.dhcp.release(cip), True)
796 log_test.info('Triggering DHCP discover again after release')
797 cip2, sip2 = self.send_recv(update_seed = True)
798 log_test.info('Verifying released IP was given back on rediscover')
799 assert_equal(cip, cip2)
800 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
801 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700802
803 def dhcp_client_reboot_scenario(self, subscriber):
804 if subscriber.has_service('DHCP'):
805 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700806 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700807 tl = self.subscriber_dhcp_client_request_after_reboot()
808 self.test_status = True
809 return self.test_status
810 else:
811 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
812 self.test_status = True
813 return self.test_status
814
815 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
816 #''' Client sends DHCP Request after reboot.'''
817
818 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
819 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
820 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
821 self.onos_dhcp_table_load(config)
822 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
823 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700824 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700825 (cip, sip, mac) )
826
A R Karthick76a497a2017-04-12 10:59:39 -0700827 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 -0700828
829 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700830 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 -0700831 assert_not_equal(cip, None)
832
833 else:
834 new_cip, new_sip = self.dhcp.only_request(cip, mac)
835 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700836 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700837 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700838 log_test.info('Client goes down.')
839 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700840
841 time.sleep(5)
842
843 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700844 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700845
846 new_cip, new_sip = self.dhcp.only_request(cip, mac)
847 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700848 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700849 assert_not_equal(new_cip, None)
850 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700851 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700852
853 def dhcp_client_renew_scenario(self, subscriber):
854 if subscriber.has_service('DHCP'):
855 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700856 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700857 tl = self.subscriber_dhcp_client_renew_time()
858 self.test_status = True
859 return self.test_status
860 else:
861 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
862 self.test_status = True
863 return self.test_status
864
865 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
866 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
867 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
868 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
869 self.onos_dhcp_table_load(config)
870 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
871 cip, sip, mac , lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700872 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700873 (cip, sip, mac) )
874
A R Karthick76a497a2017-04-12 10:59:39 -0700875 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 -0700876 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700877 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 -0700878 assert_not_equal(cip, None)
879 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700880 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700881 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
882 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700883 log_test.info("Client 's Renewal time is :%s",lval)
884 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700885 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700886 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700887 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
888 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700889 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700890 (latest_cip, mac, latest_sip) )
891
892 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700893 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700894 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700895 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700896
897 def dhcp_server_reboot_scenario(self, subscriber):
898 if subscriber.has_service('DHCP'):
899 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700900 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700901 tl = self.subscriber_dhcp_server_after_reboot()
902 self.test_status = True
903 return self.test_status
904 else:
905 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
906 self.test_status = True
907 return self.test_status
908
909 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
910 ''' DHCP server goes down.'''
911 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
912 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
913 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
914 self.onos_dhcp_table_load(config)
915 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
916 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700917 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700918 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700919 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 -0700920 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700921 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 -0700922 assert_not_equal(cip, None)
923 else:
924 new_cip, new_sip = self.dhcp.only_request(cip, mac)
925 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700926 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700927 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700928 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700929 onos_ctrl = OnosCtrl(self.dhcp_app)
930 onos_ctrl.deactivate()
931 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700932 log_test.info("Sending DHCP Request.")
933 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700934 new_cip, new_sip = self.dhcp.only_request(cip, mac)
935 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700936 log_test.info('')
937 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700938 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700939 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700940 assert_equal(new_cip,None) #Neagtive Test Case
A R Karthick76a497a2017-04-12 10:59:39 -0700941 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700942# self.activate_apps(self.dhcp_app)
943 onos_ctrl = OnosCtrl(self.dhcp_app)
944 status, _ = onos_ctrl.activate()
945 assert_equal(status, True)
946 time.sleep(3)
947 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700948 log_test.info("Sending DHCP Request after DHCP server is up.")
949 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700950 new_cip, new_sip = self.dhcp.only_request(cip, mac)
951 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700952 log_test.info('')
953 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700954 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700955 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700956 assert_equal(new_cip,None) #Neagtive Test Case
957
958 def dhcp_client_rebind_scenario(self, subscriber):
959 if subscriber.has_service('DHCP'):
960 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700961 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700962 tl = self.subscriber_dhcp_client_rebind_time()
963 self.test_status = True
964 return self.test_status
965 else:
966 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
967 self.test_status = True
968 return self.test_status
969
970 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
971 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
972 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
973 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
974 self.onos_dhcp_table_load(config)
975 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
976 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700977 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700978 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700979 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 -0700980 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700981 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 -0700982 assert_not_equal(cip, None)
983 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700984 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700985 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
986 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700987 log_test.info("Client 's Rebind time is :%s",lval)
988 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700989 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700990 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700991 self.dhcp.after_T2 = True
992 for i in range(0,4):
993 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
994 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700995 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700996 (latest_cip, mac, latest_sip) )
997 break
998 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700999 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001000 assert_not_equal(latest_cip, None)
1001 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001002 log_test.info("Got DHCP NAK.Lease not Renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001003
1004 def dhcp_starvation_scenario(self, subscriber):
1005 if subscriber.has_service('DHCP'):
1006 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001007 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001008 tl = self.subscriber_dhcp_starvation()
1009 self.test_status = True
1010 return self.test_status
1011 else:
1012 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1013 self.test_status = True
1014 return self.test_status
1015
1016 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
1017 '''DHCP starve'''
1018 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
1019 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
1020 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
1021 self.onos_dhcp_table_load(config)
1022 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001023 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001024 for x in xrange(50):
1025 mac = RandMAC()._fix()
1026 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -07001027 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001028 cip, sip = self.send_recv(update_seed = True, validate = False)
1029 assert_equal(cip, None)
1030 assert_equal(sip, None)
1031
1032 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
1033 if subscriber.has_service('DHCP'):
1034 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001035 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001036 tl = self.subscriber_dhcp_same_client_multiple_discover()
1037 self.test_status = True
1038 return self.test_status
1039 else:
1040 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1041 self.test_status = True
1042 return self.test_status
1043
1044 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
1045 ''' DHCP Client sending multiple discover . '''
1046 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1047 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1048 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1049 self.onos_dhcp_table_load(config)
1050 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
1051 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001052 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 -07001053 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001054 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001055 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
1056 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001057 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 -07001058 % (new_cip, new_sip, new_mac) )
1059 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001060 log_test.info('Ip after 1st discover %s' %cip)
1061 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001062 assert_equal(cip, new_cip)
1063
1064 def dhcp_same_client_multi_request_scenario(self, subscriber):
1065 if subscriber.has_service('DHCP'):
1066 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001067 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001068 tl = self.subscriber_dhcp_same_client_multiple_request()
1069 self.test_status = True
1070 return self.test_status
1071 else:
1072 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1073 self.test_status = True
1074 return self.test_status
1075
1076 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1077 ''' DHCP Client sending multiple repeat DHCP requests. '''
1078 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1079 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1080 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1081 self.onos_dhcp_table_load(config)
1082 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001083 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001084 cip, sip = self.send_recv()
1085 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001086 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001087 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1088 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001089 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 -07001090 % (new_cip, new_sip, mac) )
1091 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001092 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001093 assert_equal(new_cip, None)
1094 assert_equal(new_sip, None)
1095 else:
1096 print "Something went wrong."
1097
1098 def dhcp_client_desired_ip_scenario(self, subscriber):
1099 if subscriber.has_service('DHCP'):
1100 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001101 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001102 tl = self.subscriber_dhcp_client_desired_address()
1103 self.test_status = True
1104 return self.test_status
1105 else:
1106 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1107 self.test_status = True
1108 return self.test_status
1109
1110 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1111 '''DHCP Client asking for desired IP address.'''
1112 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1113 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1114 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1115 self.onos_dhcp_table_load(config)
1116 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1117 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001118 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001119 (cip, sip, mac) )
1120 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001121 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001122 (cip, sip, mac) )
1123 elif cip != self.dhcp.seed_ip:
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) )
A R Karthick76a497a2017-04-12 10:59:39 -07001126 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001127 assert_equal(cip, self.dhcp.seed_ip)
1128
1129 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1130 if subscriber.has_service('DHCP'):
1131 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001132 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001133 tl = self.subscriber_dhcp_server_nak_packet()
1134 self.test_status = True
1135 return self.test_status
1136 else:
1137 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1138 self.test_status = True
1139 return self.test_status
1140
1141 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1142 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1143 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1144 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1145 self.onos_dhcp_table_load(config)
1146 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1147 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001148 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001149 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001150 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 -07001151 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001152 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 -07001153 assert_not_equal(cip, None)
1154 else:
1155 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1156 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001157 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001158 assert_equal(new_cip, None) #Negative Test Case
1159
1160 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1161 if subscriber.has_service('DHCP'):
1162 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001163 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001164 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1165 self.test_status = True
1166 return self.test_status
1167 else:
1168 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1169 self.test_status = True
1170 return self.test_status
1171
1172 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1173 '''DHCP Client asking for desired IP address from out of pool.'''
1174 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1175 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1176 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1177 self.onos_dhcp_table_load(config)
1178 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1179 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001180 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001181 (cip, sip, mac) )
1182 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001183 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001184 (cip, sip, mac) )
1185 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1186
1187 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001188 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001189 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001190 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001191 assert_not_equal(cip, self.dhcp.seed_ip)
1192
1193 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001194 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001195
1196 def dhcp_client_specific_lease_scenario(self, subscriber):
1197 if subscriber.has_service('DHCP'):
1198 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001199 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001200 tl = self.subscriber_dhcp_specific_lease_packet()
1201 self.test_status = True
1202 return self.test_status
1203 else:
1204 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1205 self.test_status = True
1206 return self.test_status
1207
1208 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1209 ''' Client sends DHCP Discover packet for particular lease time.'''
1210 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1211 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1212 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1213 self.onos_dhcp_table_load(config)
1214 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001215 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001216 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1217
A R Karthick76a497a2017-04-12 10:59:39 -07001218 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001219 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001220 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 -07001221 assert_not_equal(cip, None)
1222 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001223 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 -07001224 (cip, sip, mac, lval) )
1225 assert_not_equal(lval, 700)
1226
1227 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001228 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001229 self.num_subscribers = 5
1230 self.num_channels = 1
A R Karthick38d5df42017-07-10 13:33:26 -07001231 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1232 num_channels = self.num_channels,
1233 port_list = self.generate_port_list(self.num_subscribers,
1234 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001235 assert_equal(test_status, True)
1236
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001237 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001238 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001239 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001240 self.num_channels = 10
1241 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1242 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001243 cbs = (self.tls_verify, self.dhcp_jump_verify,
1244 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001245 port_list = self.generate_port_list(self.num_subscribers,
1246 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001247 assert_equal(test_status, True)
1248
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001249 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001250 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001251 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001252 self.num_channels = 10
1253 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1254 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001255 cbs = (self.tls_verify, self.dhcp_next_verify,
1256 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001257 port_list = self.generate_port_list(self.num_subscribers,
1258 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001259 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001260
A.R Karthick517f7812017-05-18 11:22:46 -07001261 def test_cord_subscriber_join_next_without_leave(self):
1262 """Test subscriber join next for channel surfing"""
1263 self.num_subscribers = self.num_ports * len(self.switches)
1264 self.num_channels = 5
1265 self.leave_flag = False
1266 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1267 num_channels = self.num_channels,
1268 cbs = (self.tls_verify, self.dhcp_next_verify,
1269 self.igmp_next_verify, self.traffic_verify),
1270 port_list = self.generate_port_list(self.num_subscribers,
1271 self.num_channels))
1272 self.leave_flag = True
1273 assert_equal(test_status, True)
1274
A R Karthick31f1f342017-05-19 13:55:10 -07001275 def test_cord_subscriber_leave(self):
1276 """Test subscriber leaves for all the join nexts before"""
1277 self.num_subscribers = self.num_ports * len(self.switches)
1278 self.num_channels = 5
1279 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1280 num_channels = self.num_channels,
1281 cbs = (self.tls_verify, self.dhcp_next_verify,
1282 self.igmp_leave_verify, self.traffic_verify),
1283 port_list = self.generate_port_list(self.num_subscribers,
1284 self.num_channels))
1285 assert_equal(test_status, True)
1286
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001287 #@deferred(SUBSCRIBER_TIMEOUT)
1288 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1289 ### """Test subscriber to auth with invalidCertification and join channel"""
1290 num_subscribers = 1
1291 num_channels = 1
1292 df = defer.Deferred()
1293 def sub_auth_invalid_cert(df):
1294 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1295 num_channels = num_channels,
1296 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1297 self.igmp_verify, self.traffic_verify),
1298 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1299 assert_equal(test_status, False)
1300 df.callback(0)
1301 reactor.callLater(0, sub_auth_invalid_cert, df)
1302 return df
1303
1304 #@deferred(SUBSCRIBER_TIMEOUT)
1305 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1306 ### """Test subscriber to auth with No Certification and join channel"""
1307 num_subscribers = 1
1308 num_channels = 1
1309 df = defer.Deferred()
1310 def sub_auth_no_cert(df):
1311 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1312 num_channels = num_channels,
1313 cbs = (self.tls_no_cert, self.dhcp_verify,
1314 self.igmp_verify, self.traffic_verify),
1315 port_list = self.generate_port_list(num_subscribers, num_channels),
1316 negative_subscriber_auth = 'all')
1317 assert_equal(test_status, False)
1318 df.callback(0)
1319 reactor.callLater(0, sub_auth_no_cert, df)
1320 return df
1321 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1322 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1323 num_subscribers = 1
1324 num_channels = 1
1325 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1326 num_channels = num_channels,
1327 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1328 self.igmp_verify, self.traffic_verify),
1329 port_list = self.generate_port_list(num_subscribers, num_channels),
1330 negative_subscriber_auth = 'all')
1331 assert_equal(test_status, True)
1332
1333 @deferred(SUBSCRIBER_TIMEOUT)
1334 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1335 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1336 num_subscribers = 2
1337 num_channels = 1
1338 df = defer.Deferred()
1339 def sub_auth_invalid_cert(df):
1340 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1341 num_channels = num_channels,
1342 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1343 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1344 assert_equal(test_status, True)
1345 df.callback(0)
1346 reactor.callLater(0, sub_auth_invalid_cert, df)
1347 return df
1348
1349 @deferred(SUBSCRIBER_TIMEOUT)
1350 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1351 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1352 num_subscribers = 2
1353 num_channels = 1
1354 df = defer.Deferred()
1355 def sub_auth_no_cert(df):
1356 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1357 num_channels = num_channels,
1358 cbs = (self.tls_no_cert, self.dhcp_verify,
1359 self.igmp_verify, self.traffic_verify),
1360 port_list = self.generate_port_list(num_subscribers, num_channels),
1361 negative_subscriber_auth = 'half')
1362 assert_equal(test_status, True)
1363 df.callback(0)
1364 reactor.callLater(0, sub_auth_no_cert, df)
1365 return df
1366
1367 @deferred(SUBSCRIBER_TIMEOUT)
1368 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1369 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1370 num_subscribers = 2
1371 num_channels = 1
1372 df = defer.Deferred()
1373 def sub_auth_no_cert(df):
1374 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1375 num_channels = num_channels,
1376 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1377 self.igmp_verify, self.traffic_verify),
1378 port_list = self.generate_port_list(num_subscribers, num_channels),
1379 negative_subscriber_auth = 'half')
1380 assert_equal(test_status, True)
1381 df.callback(0)
1382 reactor.callLater(0, sub_auth_no_cert, df)
1383 return df
1384
1385 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1386 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1387 num_subscribers = 1
1388 num_channels = 1
1389 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1390 num_channels = num_channels,
1391 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1392 self.igmp_verify, self.traffic_verify),
1393 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1394 assert_equal(test_status, True)
1395
1396 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1397 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1398 num_subscribers = 1
1399 num_channels = 1
1400 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1401 num_channels = num_channels,
1402 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1403 self.igmp_verify, self.traffic_verify),
1404 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1405 assert_equal(test_status, True)
1406
1407 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1408 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1409 num_subscribers = 1
1410 num_channels = 1
1411 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1412 num_channels = num_channels,
1413 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1414 self.igmp_verify, self.traffic_verify),
1415 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1416 assert_equal(test_status, True)
1417
1418 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1419 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1420 num_subscribers = 1
1421 num_channels = 1
1422 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1423 num_channels = num_channels,
1424 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1425 self.igmp_verify, self.traffic_verify),
1426 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1427 assert_equal(test_status, True)
1428
1429
1430 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1431 ### """Test subscriber auth , DHCP starvation and join channel"""
1432 num_subscribers = 1
1433 num_channels = 1
1434 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1435 num_channels = num_channels,
1436 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1437 self.igmp_verify, self.traffic_verify),
1438 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1439 assert_equal(test_status, True)
1440
1441 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1442 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1443 num_subscribers = 1
1444 num_channels = 1
1445 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1446 num_channels = num_channels,
1447 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1448 self.igmp_verify, self.traffic_verify),
1449 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1450 assert_equal(test_status, True)
1451
1452 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1453 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1454 num_subscribers = 1
1455 num_channels = 1
1456 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1457 num_channels = num_channels,
1458 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1459 self.igmp_verify, self.traffic_verify),
1460 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1461 assert_equal(test_status, True)
1462
1463 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1464 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1465 num_subscribers = 1
1466 num_channels = 1
1467 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1468 num_channels = num_channels,
1469 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1470 self.igmp_verify, self.traffic_verify),
1471 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1472 assert_equal(test_status, True)
1473
1474 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1475 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1476 num_subscribers = 1
1477 num_channels = 1
1478 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1479 num_channels = num_channels,
1480 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1481 self.igmp_verify, self.traffic_verify),
1482 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1483 assert_equal(test_status, True)
1484
1485 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1486 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1487 num_subscribers = 1
1488 num_channels = 1
1489 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1490 num_channels = num_channels,
1491 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1492 self.igmp_verify, self.traffic_verify),
1493 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1494 assert_equal(test_status, True)
1495
1496
1497 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1498 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1499 num_subscribers = 1
1500 num_channels = 1
1501 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1502 num_channels = num_channels,
1503 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1504 self.igmp_verify, self.traffic_verify),
1505 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1506 assert_equal(test_status, True)
1507
1508 #@deferred(SUBSCRIBER_TIMEOUT)
1509 @nottest
1510 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1511 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1512 num_subscribers = 1000
1513 num_channels = 1
1514 df = defer.Deferred()
1515 def sub_auth_invalid_cert(df):
1516 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1517 num_channels = num_channels,
1518 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1519 self.igmp_verify, self.traffic_verify),
1520 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1521 assert_equal(test_status, True)
1522 df.callback(0)
1523 reactor.callLater(0, sub_auth_invalid_cert, df)
1524 return df
1525
1526 @nottest
1527 @deferred(SUBSCRIBER_TIMEOUT)
1528 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1529 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1530 num_subscribers = 1000
1531 num_channels = 1
1532 df = defer.Deferred()
1533 def sub_auth_no_cert(df):
1534 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1535 num_channels = num_channels,
1536 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1537 port_list = self.generate_port_list(num_subscribers, num_channels),
1538 negative_subscriber_auth = 'half')
1539 assert_equal(test_status, True)
1540 df.callback(0)
1541 reactor.callLater(0, sub_auth_no_cert, df)
1542 return df
1543
1544 #@deferred(SUBSCRIBER_TIMEOUT)
1545 @nottest
1546 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1547 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1548 num_subscribers = 1000
1549 num_channels = 1
1550 df = defer.Deferred()
1551 def sub_auth_no_cert(df):
1552 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1553 num_channels = num_channels,
1554 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1555 port_list = self.generate_port_list(num_subscribers, num_channels),
1556 negative_subscriber_auth = 'half')
1557 assert_equal(test_status, True)
1558 df.callback(0)
1559 reactor.callLater(0, sub_auth_no_cert, df)
1560 return df
1561
1562 #@deferred(SUBSCRIBER_TIMEOUT)
1563 @nottest
1564 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1565 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1566 num_subscribers = 5000
1567 num_channels = 1
1568 df = defer.Deferred()
1569 def sub_auth_invalid_cert(df):
1570 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1571 num_channels = num_channels,
1572 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1573 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1574 assert_equal(test_status, True)
1575 df.callback(0)
1576 reactor.callLater(0, sub_auth_invalid_cert, df)
1577 return df
1578
1579 #@deferred(SUBSCRIBER_TIMEOUT)
1580 @nottest
1581 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1582 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1583 num_subscribers = 5000
1584 num_channels = 1
1585 df = defer.Deferred()
1586 def sub_auth_no_cert(df):
1587 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1588 num_channels = num_channels,
1589 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1590 port_list = self.generate_port_list(num_subscribers, num_channels),
1591 negative_subscriber_auth = 'half')
1592 assert_equal(test_status, True)
1593 df.callback(0)
1594 reactor.callLater(0, sub_auth_no_cert, df)
1595 return df
1596
1597 #@deferred(SUBSCRIBER_TIMEOUT)
1598 @nottest
1599 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1600 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1601 num_subscribers = 5000
1602 num_channels = 1
1603 df = defer.Deferred()
1604 def sub_auth_no_cert(df):
1605 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1606 num_channels = num_channels,
1607 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1608 port_list = self.generate_port_list(num_subscribers, num_channels),
1609 negative_subscriber_auth = 'half')
1610 assert_equal(test_status, True)
1611 df.callback(0)
1612 reactor.callLater(0, sub_auth_no_cert, df)
1613 return df
1614
1615 #@deferred(SUBSCRIBER_TIMEOUT)
1616 @nottest
1617 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1618 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1619 num_subscribers = 10000
1620 num_channels = 1
1621 df = defer.Deferred()
1622 def sub_auth_invalid_cert(df):
1623 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1624 num_channels = num_channels,
1625 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1626 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1627 assert_equal(test_status, True)
1628 df.callback(0)
1629 reactor.callLater(0, sub_auth_invalid_cert, df)
1630 return df
1631
1632 #@deferred(SUBSCRIBER_TIMEOUT)
1633 @nottest
1634 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1635 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1636 num_subscribers = 10000
1637 num_channels = 1
1638 df = defer.Deferred()
1639 def sub_auth_no_cert(df):
1640 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1641 num_channels = num_channels,
1642 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1643 port_list = self.generate_port_list(num_subscribers, num_channels),
1644 negative_subscriber_auth = 'onethird')
1645 assert_equal(test_status, True)
1646 df.callback(0)
1647 reactor.callLater(0, sub_auth_no_cert, df)
1648 return df
1649
1650 #@deferred(SUBSCRIBER_TIMEOUT)
1651 @nottest
1652 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1653 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1654 num_subscribers = 10000
1655 num_channels = 1
1656 df = defer.Deferred()
1657 def sub_auth_no_cert(df):
1658 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1659 num_channels = num_channels,
1660 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1661 port_list = self.generate_port_list(num_subscribers, num_channels),
1662 negative_subscriber_auth = 'onethird')
1663 assert_equal(test_status, False)
1664 assert_equal(test_status, True)
1665 df.callback(0)
1666 reactor.callLater(0, sub_auth_no_cert, df)
1667 return df
1668
1669 @nottest
1670 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1671 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1672 num_subscribers = 1000
1673 num_channels = 1
1674 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1675 num_channels = num_channels,
1676 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1677 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1678 assert_equal(test_status, True)
1679
1680 @nottest
1681 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1682 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1683 num_subscribers = 1000
1684 num_channels = 1
1685 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1686 num_channels = num_channels,
1687 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1688 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1689 assert_equal(test_status, True)
1690
1691 @nottest
1692 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1693 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1694 num_subscribers = 1000
1695 num_channels = 1
1696 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1697 num_channels = num_channels,
1698 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1699 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1700 assert_equal(test_status, True)
1701
1702 @nottest
1703 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1704 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1705 num_subscribers = 1000
1706 num_channels = 1
1707 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1708 num_channels = num_channels,
1709 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1710 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1711 assert_equal(test_status, True)
1712
1713 @nottest
1714 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1715 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1716 num_subscribers = 1000
1717 num_channels = 1
1718 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1719 num_channels = num_channels,
1720 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1721 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1722 assert_equal(test_status, True)
1723
1724 @nottest
1725 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1726 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1727 num_subscribers = 1000
1728 num_channels = 1
1729 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1730 num_channels = num_channels,
1731 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1732 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1733 assert_equal(test_status, True)
1734
1735 @nottest
1736 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1737 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1738 num_subscribers = 1000
1739 num_channels = 1
1740 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1741 num_channels = num_channels,
1742 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1743 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1744 assert_equal(test_status, True)
1745
1746 def test_4_cord_subscribers_join_recv_5channel(self):
1747 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1748 num_subscribers = 4
1749 num_channels = 5
1750 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1751 num_channels = num_channels,
1752 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1753 port_list = self.generate_port_list(num_subscribers, num_channels),
1754 negative_subscriber_auth = 'all')
1755 assert_equal(test_status, True)
1756
1757 def test_4_cord_subscribers_join_jump_5channel(self):
1758 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1759 num_subscribers = 4
1760 num_channels = 5
1761 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1762 num_channels = num_channels,
1763 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1764 port_list = self.generate_port_list(num_subscribers, num_channels),
1765 negative_subscriber_auth = 'all')
1766 assert_equal(test_status, True)
1767
1768 def test_4_cord_subscribers_join_next_5channel(self):
1769 ###"""Test 4 subscribers join next for 5 channels"""
1770 num_subscribers = 4
1771 num_channels = 5
1772 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1773 num_channels = num_channels,
1774 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1775 port_list = self.generate_port_list(num_subscribers, num_channels),
1776 negative_subscriber_auth = 'all')
1777 assert_equal(test_status, True)
1778
1779 def test_10_cord_subscribers_join_recv_5channel(self):
1780 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1781 num_subscribers = 10
1782 num_channels = 5
1783 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1784 num_channels = num_channels,
1785 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1786 port_list = self.generate_port_list(num_subscribers, num_channels),
1787 negative_subscriber_auth = 'all')
1788 assert_equal(test_status, True)
1789
1790 def test_10_cord_subscribers_join_jump_5channel(self):
1791 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1792 num_subscribers = 10
1793 num_channels = 5
1794 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1795 num_channels = num_channels,
1796 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1797 port_list = self.generate_port_list(num_subscribers, num_channels),
1798 negative_subscriber_auth = 'all')
1799 assert_equal(test_status, True)
1800
1801
1802 def test_10_cord_subscribers_join_next_5channel(self):
1803 ###"""Test 10 subscribers join next for 5 channels"""
1804 num_subscribers = 10
1805 num_channels = 5
1806 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1807 num_channels = num_channels,
1808 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1809 port_list = self.generate_port_list(num_subscribers, num_channels),
1810 negative_subscriber_auth = 'all')
1811 assert_equal(test_status, True)
1812
1813
1814
1815 def test_cord_subscriber_join_recv_100channels(self):
1816 num_subscribers = 1
1817 num_channels = 100
1818 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1819 num_channels = num_channels,
1820 cbs = (self.tls_verify, self.dhcp_verify,
1821 self.igmp_verify, self.traffic_verify),
1822 port_list = self.generate_port_list(num_subscribers, num_channels),
1823 negative_subscriber_auth = 'all')
1824 assert_equal(test_status, True)
1825
1826 def test_cord_subscriber_join_recv_400channels(self):
1827 num_subscribers = 1
1828 num_channels = 400
1829 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1830 num_channels = num_channels,
1831 cbs = (self.tls_verify, self.dhcp_verify,
1832 self.igmp_verify, self.traffic_verify),
1833 port_list = self.generate_port_list(num_subscribers, num_channels),
1834 negative_subscriber_auth = 'all')
1835 assert_equal(test_status, True)
1836
1837 def test_cord_subscriber_join_recv_800channels(self):
1838 num_subscribers = 1
1839 num_channels = 800
1840 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1841 num_channels = num_channels,
1842 cbs = (self.tls_verify, self.dhcp_verify,
1843 self.igmp_verify, self.traffic_verify),
1844 port_list = self.generate_port_list(num_subscribers, num_channels),
1845 negative_subscriber_auth = 'all')
1846 assert_equal(test_status, True)
1847
1848 def test_cord_subscriber_join_recv_1200channels(self):
1849 num_subscribers = 1
1850 num_channels = 1200
1851 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1852 num_channels = num_channels,
1853 cbs = (self.tls_verify, self.dhcp_verify,
1854 self.igmp_verify, self.traffic_verify),
1855 port_list = self.generate_port_list(num_subscribers, num_channels),
1856 negative_subscriber_auth = 'all')
1857 assert_equal(test_status, True)
1858
1859 def test_cord_subscriber_join_recv_1500channels(self):
1860 num_subscribers = 1
1861 num_channels = 1500
1862 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1863 num_channels = num_channels,
1864 cbs = (self.tls_verify, self.dhcp_verify,
1865 self.igmp_verify, self.traffic_verify),
1866 port_list = self.generate_port_list(num_subscribers, num_channels),
1867 negative_subscriber_auth = 'all')
1868 assert_equal(test_status, True)
1869
1870 def test_cord_subscriber_join_jump_100channels(self):
1871 num_subscribers = 1
1872 num_channels = 100
1873 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1874 num_channels = num_channels,
1875 cbs = (self.tls_verify, self.dhcp_jump_verify,
1876 self.igmp_jump_verify, self.traffic_verify),
1877 port_list = self.generate_port_list(num_subscribers, num_channels),
1878 negative_subscriber_auth = 'all')
1879 assert_equal(test_status, True)
1880 def test_cord_subscriber_join_jump_400channels(self):
1881 num_subscribers = 1
1882 num_channels = 400
1883 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1884 num_channels = num_channels,
1885 cbs = (self.tls_verify, self.dhcp_jump_verify,
1886 self.igmp_jump_verify, self.traffic_verify),
1887 port_list = self.generate_port_list(num_subscribers, num_channels),
1888 negative_subscriber_auth = 'all')
1889 assert_equal(test_status, True)
1890
1891 def test_cord_subscriber_join_jump_800channels(self):
1892 num_subscribers = 1
1893 num_channels = 800
1894 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1895 num_channels = num_channels,
1896 cbs = (self.tls_verify, self.dhcp_jump_verify,
1897 self.igmp_jump_verify, self.traffic_verify),
1898 port_list = self.generate_port_list(num_subscribers, num_channels),
1899 negative_subscriber_auth = 'all')
1900 assert_equal(test_status, True)
1901 def test_cord_subscriber_join_jump_1200channel(sself):
1902 num_subscribers = 1
1903 num_channels = 1200
1904 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1905 num_channels = num_channels,
1906 cbs = (self.tls_verify, self.dhcp_jump_verify,
1907 self.igmp_jump_verify, self.traffic_verify),
1908 port_list = self.generate_port_list(num_subscribers, num_channels),
1909 negative_subscriber_auth = 'all')
1910 assert_equal(test_status, True)
1911 def test_cord_subscriber_join_jump_1500channels(self):
1912 num_subscribers = 1
1913 num_channels = 1500
1914 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1915 num_channels = num_channels,
1916 cbs = (self.tls_verify, self.dhcp_jump_verify,
1917 self.igmp_jump_verify, self.traffic_verify),
1918 port_list = self.generate_port_list(num_subscribers, num_channels),
1919 negative_subscriber_auth = 'all')
1920 assert_equal(test_status, True)
1921
1922 def test_cord_subscriber_join_next_100channels(self):
1923 num_subscribers = 1
1924 num_channels = 100
1925 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1926 num_channels = num_channels,
1927 cbs = (self.tls_verify, self.dhcp_next_verify,
1928 self.igmp_next_verify, self.traffic_verify),
1929 port_list = self.generate_port_list(num_subscribers, num_channels),
1930 negative_subscriber_auth = 'all')
1931 assert_equal(test_status, True)
1932
1933 def test_cord_subscriber_join_next_400channels(self):
1934 num_subscribers = 1
1935 num_channels = 400
1936 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1937 num_channels = num_channels,
1938 cbs = (self.tls_verify, self.dhcp_next_verify,
1939 self.igmp_next_verify, self.traffic_verify),
1940 port_list = self.generate_port_list(num_subscribers, num_channels),
1941 negative_subscriber_auth = 'all')
1942 assert_equal(test_status, True)
1943
1944 def test_cord_subscriber_join_next_800channels(self):
1945 num_subscribers = 1
1946 num_channels = 800
1947 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1948 num_channels = num_channels,
1949 cbs = (self.tls_verify, self.dhcp_next_verify,
1950 self.igmp_next_verify, self.traffic_verify),
1951 port_list = self.generate_port_list(num_subscribers, num_channels),
1952 negative_subscriber_auth = 'all')
1953 assert_equal(test_status, True)
1954
1955
1956 def test_cord_subscriber_join_next_1200channels(self):
1957 num_subscribers = 1
1958 num_channels = 1200
1959 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1960 num_channels = num_channels,
1961 cbs = (self.tls_verify, self.dhcp_next_verify,
1962 self.igmp_next_verify, self.traffic_verify),
1963 port_list = self.generate_port_list(num_subscribers, num_channels),
1964 negative_subscriber_auth = 'all')
1965 assert_equal(test_status, True)
1966
1967 def test_cord_subscriber_join_next_1500channels(self):
1968 num_subscribers = 1
1969 num_channels = 1500
1970 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1971 num_channels = num_channels,
1972 cbs = (self.tls_verify, self.dhcp_next_verify,
1973 self.igmp_next_verify, self.traffic_verify),
1974 port_list = self.generate_port_list(num_subscribers, num_channels),
1975 negative_subscriber_auth = 'all')
1976 assert_equal(test_status, True)
1977
1978 @nottest
1979 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1980 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1981 num_subscribers = 1000
1982 num_channels = 1
1983 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1984 num_channels = num_channels,
1985 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
1986 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1987 assert_equal(test_status, True)
1988
1989 @nottest
1990 def test_1k_cord_subscribers_join_recv_100channel(self):
1991 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
1992 num_subscribers = 1000
1993 num_channels = 100
1994 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1995 num_channels = num_channels,
1996 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1997 port_list = self.generate_port_list(num_subscribers, num_channels),
1998 negative_subscriber_auth = 'all')
1999 assert_equal(test_status, True)
2000
2001 @nottest
2002 def test_1k_cord_subscribers_join_jump_100channel(self):
2003 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
2004 num_subscribers = 1000
2005 num_channels = 100
2006 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2007 num_channels = num_channels,
2008 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2009 port_list = self.generate_port_list(num_subscribers, num_channels),
2010 negative_subscriber_auth = 'all')
2011 assert_equal(test_status, True)
2012
2013 @nottest
2014 def test_1k_cord_subscribers_join_next_100channel(self):
2015 ###"""Test 1k subscribers join next for 100 channels"""
2016 num_subscribers = 1000
2017 num_channels = 100
2018 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2019 num_channels = num_channels,
2020 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2021 port_list = self.generate_port_list(num_subscribers, num_channels),
2022 negative_subscriber_auth = 'all')
2023 assert_equal(test_status, True)
2024
2025 @nottest
2026 def test_1k_cord_subscribers_join_recv_400channel(self):
2027 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
2028 num_subscribers = 1000
2029 num_channels = 400
2030 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2031 num_channels = num_channels,
2032 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2033 port_list = self.generate_port_list(num_subscribers, num_channels),
2034 negative_subscriber_auth = 'all')
2035 assert_equal(test_status, True)
2036
2037 @nottest
2038 def test_1k_cord_subscribers_join_jump_400channel(self):
2039 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
2040 num_subscribers = 1000
2041 num_channels = 400
2042 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2043 num_channels = num_channels,
2044 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2045 port_list = self.generate_port_list(num_subscribers, num_channels),
2046 negative_subscriber_auth = 'all')
2047 assert_equal(test_status, True)
2048
2049 @nottest
2050 def test_1k_cord_subscribers_join_next_400channel(self):
2051 ###"""Test 1k subscribers join next for 400 channels"""
2052 num_subscribers = 1000
2053 num_channels = 400
2054 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2055 num_channels = num_channels,
2056 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2057 port_list = self.generate_port_list(num_subscribers, num_channels),
2058 negative_subscriber_auth = 'all')
2059 assert_equal(test_status, True)
2060
2061 @nottest
2062 def test_1k_cord_subscribers_join_recv_800channel(self):
2063 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2064 num_subscribers = 1000
2065 num_channels = 800
2066 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2067 num_channels = num_channels,
2068 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2069 port_list = self.generate_port_list(num_subscribers, num_channels),
2070 negative_subscriber_auth = 'all')
2071 assert_equal(test_status, True)
2072
2073 @nottest
2074 def test_1k_cord_subscribers_join_jump_800channel(self):
2075 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2076 num_subscribers = 1000
2077 num_channels = 800
2078 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2079 num_channels = num_channels,
2080 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2081 port_list = self.generate_port_list(num_subscribers, num_channels),
2082 negative_subscriber_auth = 'all')
2083 assert_equal(test_status, True)
2084
2085 @nottest
2086 def test_1k_cord_subscribers_join_next_800channel(self):
2087 ###"""Test 1k subscribers join next for 800 channels"""
2088 num_subscribers = 1000
2089 num_channels = 800
2090 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2091 num_channels = num_channels,
2092 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2093 port_list = self.generate_port_list(num_subscribers, num_channels),
2094 negative_subscriber_auth = 'all')
2095 assert_equal(test_status, True)
2096
2097 @nottest
2098 def test_1k_cord_subscribers_join_recv_1200channel(self):
2099 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2100 num_subscribers = 1000
2101 num_channels = 1200
2102 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2103 num_channels = num_channels,
2104 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2105 port_list = self.generate_port_list(num_subscribers, num_channels),
2106 negative_subscriber_auth = 'all')
2107 assert_equal(test_status, True)
2108
2109 @nottest
2110 def test_1k_cord_subscribers_join_jump_1200channel(self):
2111 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2112 num_subscribers = 1000
2113 num_channels = 1200
2114 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2115 num_channels = num_channels,
2116 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2117 port_list = self.generate_port_list(num_subscribers, num_channels),
2118 negative_subscriber_auth = 'all')
2119 assert_equal(test_status, True)
2120
2121 @nottest
2122 def test_1k_cord_subscribers_join_next_1200channel(self):
2123 ###"""Test 1k subscribers join next for 1200 channels"""
2124 num_subscribers = 1000
2125 num_channels = 1200
2126 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2127 num_channels = num_channels,
2128 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2129 port_list = self.generate_port_list(num_subscribers, num_channels),
2130 negative_subscriber_auth = 'all')
2131 assert_equal(test_status, True)
2132
2133 @nottest
2134 def test_1k_cord_subscribers_join_recv_1500channel(self):
2135 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2136 num_subscribers = 1000
2137 num_channels = 1500
2138 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2139 num_channels = num_channels,
2140 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2141 port_list = self.generate_port_list(num_subscribers, num_channels),
2142 negative_subscriber_auth = 'all')
2143 assert_equal(test_status, True)
2144
2145 @nottest
2146 def test_1k_cord_subscribers_join_jump_1500channel(self):
2147 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2148 num_subscribers = 1000
2149 num_channels = 1500
2150 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2151 num_channels = num_channels,
2152 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2153 port_list = self.generate_port_list(num_subscribers, num_channels),
2154 negative_subscriber_auth = 'all')
2155 assert_equal(test_status, True)
2156
2157 @nottest
2158 def test_1k_cord_subscribers_join_next_1500channel(self):
2159 ###"""Test 1k subscribers join next for 1500 channels"""
2160 num_subscribers = 1000
2161 num_channels = 1500
2162 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2163 num_channels = num_channels,
2164 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2165 port_list = self.generate_port_list(num_subscribers, num_channels),
2166 negative_subscriber_auth = 'all')
2167 assert_equal(test_status, True)
2168
2169 @nottest
2170 def test_5k_cord_subscribers_join_recv_100channel(self):
2171 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2172 num_subscribers = 5000
2173 num_channels = 100
2174 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2175 num_channels = num_channels,
2176 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2177 port_list = self.generate_port_list(num_subscribers, num_channels),
2178 negative_subscriber_auth = 'all')
2179 assert_equal(test_status, True)
2180
2181 @nottest
2182 def test_5k_cord_subscribers_join_jump_100channel(self):
2183 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2184 num_subscribers = 5000
2185 num_channels = 100
2186 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2187 num_channels = num_channels,
2188 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2189 port_list = self.generate_port_list(num_subscribers, num_channels),
2190 negative_subscriber_auth = 'all')
2191 assert_equal(test_status, True)
2192
2193 @nottest
2194 def test_5k_cord_subscribers_join_next_100channel(self):
2195 ###"""Test 5k subscribers join next for 100 channels"""
2196 num_subscribers = 5000
2197 num_channels = 100
2198 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2199 num_channels = num_channels,
2200 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2201 port_list = self.generate_port_list(num_subscribers, num_channels),
2202 negative_subscriber_auth = 'all')
2203 assert_equal(test_status, True)
2204
2205 @nottest
2206 def test_5k_cord_subscribers_join_recv_400channel(self):
2207 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2208 num_subscribers = 5000
2209 num_channels = 400
2210 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2211 num_channels = num_channels,
2212 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2213 port_list = self.generate_port_list(num_subscribers, num_channels),
2214 negative_subscriber_auth = 'all')
2215 assert_equal(test_status, True)
2216
2217 @nottest
2218 def test_5k_cord_subscribers_join_jump_400channel(self):
2219 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2220 num_subscribers = 5000
2221 num_channels = 400
2222 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2223 num_channels = num_channels,
2224 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2225 port_list = self.generate_port_list(num_subscribers, num_channels),
2226 negative_subscriber_auth = 'all')
2227 assert_equal(test_status, True)
2228
2229 @nottest
2230 def test_5k_cord_subscribers_join_next_400channel(self):
2231 ###"""Test 5k subscribers join next for 400 channels"""
2232 num_subscribers = 5000
2233 num_channels = 400
2234 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2235 num_channels = num_channels,
2236 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2237 port_list = self.generate_port_list(num_subscribers, num_channels),
2238 negative_subscriber_auth = 'all')
2239 assert_equal(test_status, True)
2240
2241 @nottest
2242 def test_5k_cord_subscribers_join_recv_800channel(self):
2243 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2244 num_subscribers = 5000
2245 num_channels = 800
2246 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2247 num_channels = num_channels,
2248 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2249 port_list = self.generate_port_list(num_subscribers, num_channels),
2250 negative_subscriber_auth = 'all')
2251 assert_equal(test_status, True)
2252
2253 @nottest
2254 def test_5k_cord_subscribers_join_jump_800channel(self):
2255 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2256 num_subscribers = 5000
2257 num_channels = 800
2258 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2259 num_channels = num_channels,
2260 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2261 port_list = self.generate_port_list(num_subscribers, num_channels),
2262 negative_subscriber_auth = 'all')
2263 assert_equal(test_status, True)
2264
2265 @nottest
2266 def test_5k_cord_subscribers_join_next_800channel(self):
2267 ###"""Test 5k subscribers join next for 800 channels"""
2268 num_subscribers = 5000
2269 num_channels = 800
2270 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2271 num_channels = num_channels,
2272 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2273 port_list = self.generate_port_list(num_subscribers, num_channels),
2274 negative_subscriber_auth = 'all')
2275 assert_equal(test_status, True)
2276
2277 @nottest
2278 def test_5k_cord_subscribers_join_recv_1200channel(self):
2279 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2280 num_subscribers = 5000
2281 num_channels = 1200
2282 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2283 num_channels = num_channels,
2284 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2285 port_list = self.generate_port_list(num_subscribers, num_channels),
2286 negative_subscriber_auth = 'all')
2287 assert_equal(test_status, True)
2288
2289 @nottest
2290 def test_5k_cord_subscribers_join_jump_1200channel(self):
2291 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2292 num_subscribers = 5000
2293 num_channels = 1200
2294 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2295 num_channels = num_channels,
2296 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2297 port_list = self.generate_port_list(num_subscribers, num_channels),
2298 negative_subscriber_auth = 'all')
2299 assert_equal(test_status, True)
2300
2301 @nottest
2302 def test_5k_cord_subscribers_join_next_1200channel(self):
2303 ###"""Test 5k subscribers join next for 1200 channels"""
2304 num_subscribers = 5000
2305 num_channels = 1200
2306 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2307 num_channels = num_channels,
2308 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2309 port_list = self.generate_port_list(num_subscribers, num_channels),
2310 negative_subscriber_auth = 'all')
2311 assert_equal(test_status, True)
2312
2313 @nottest
2314 def test_5k_cord_subscribers_join_recv_1500channel(self):
2315 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2316 num_subscribers = 5000
2317 num_channels = 1500
2318 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2319 num_channels = num_channels,
2320 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2321 port_list = self.generate_port_list(num_subscribers, num_channels),
2322 negative_subscriber_auth = 'all')
2323 assert_equal(test_status, True)
2324
2325 @nottest
2326 def test_5k_cord_subscribers_join_jump_1500channel(self):
2327 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2328 num_subscribers = 5000
2329 num_channels = 1500
2330 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2331 num_channels = num_channels,
2332 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2333 port_list = self.generate_port_list(num_subscribers, num_channels),
2334 negative_subscriber_auth = 'all')
2335 assert_equal(test_status, True)
2336
2337 @nottest
2338 def test_5k_cord_subscribers_join_next_1500channel(self):
2339 ###"""Test 5k subscribers join next for 1500 channels"""
2340 num_subscribers = 5000
2341 num_channels = 1500
2342 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2343 num_channels = num_channels,
2344 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2345 port_list = self.generate_port_list(num_subscribers, num_channels),
2346 negative_subscriber_auth = 'all')
2347 assert_equal(test_status, True)
2348
2349 @nottest
2350 def test_10k_cord_subscribers_join_recv_100channel(self):
2351 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2352 num_subscribers = 10000
2353 num_channels = 100
2354 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2355 num_channels = num_channels,
2356 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2357 port_list = self.generate_port_list(num_subscribers, num_channels),
2358 negative_subscriber_auth = 'all')
2359 assert_equal(test_status, True)
2360
2361 @nottest
2362 def test_10k_cord_subscribers_join_jump_100channel(self):
2363 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2364 num_subscribers = 10000
2365 num_channels = 100
2366 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2367 num_channels = num_channels,
2368 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2369 port_list = self.generate_port_list(num_subscribers, num_channels),
2370 negative_subscriber_auth = 'all')
2371 assert_equal(test_status, True)
2372
2373 @nottest
2374 def test_10k_cord_subscribers_join_next_100channel(self):
2375 ###"""Test 10k subscribers join next for 100 channels"""
2376 num_subscribers = 10000
2377 num_channels = 100
2378 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2379 num_channels = num_channels,
2380 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2381 port_list = self.generate_port_list(num_subscribers, num_channels),
2382 negative_subscriber_auth = 'all')
2383 assert_equal(test_status, True)
2384
2385 @nottest
2386 def test_100k_cord_subscribers_join_recv_100channel(self):
2387 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2388 num_subscribers = 100000
2389 num_channels = 100
2390 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2391 num_channels = num_channels,
2392 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2393 port_list = self.generate_port_list(num_subscribers, num_channels),
2394 negative_subscriber_auth = 'all')
2395 assert_equal(test_status, True)
2396
2397 @nottest
2398 def test_100k_cord_subscribers_join_jump_100channel(self):
2399 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2400 num_subscribers = 100000
2401 num_channels = 100
2402 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2403 num_channels = num_channels,
2404 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2405 port_list = self.generate_port_list(num_subscribers, num_channels),
2406 negative_subscriber_auth = 'all')
2407 assert_equal(test_status, True)
2408
2409 @nottest
2410 def test_100k_cord_subscribers_join_next_100channel(self):
2411 ###"""Test 100k subscribers join next for 100 channels"""
2412 num_subscribers = 100000
2413 num_channels = 100
2414 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2415 num_channels = num_channels,
2416 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2417 port_list = self.generate_port_list(num_subscribers, num_channels),
2418 negative_subscriber_auth = 'all')
2419 assert_equal(test_status, True)
2420
2421 @nottest
2422 def test_10k_cord_subscribers_join_recv_400channel(self):
2423 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2424 num_subscribers = 10000
2425 num_channels = 400
2426 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2427 num_channels = num_channels,
2428 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2429 port_list = self.generate_port_list(num_subscribers, num_channels),
2430 negative_subscriber_auth = 'all')
2431 assert_equal(test_status, True)
2432
2433 @nottest
2434 def test_10k_cord_subscribers_join_jump_400channel(self):
2435 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2436 num_subscribers = 10000
2437 num_channels = 400
2438 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2439 num_channels = num_channels,
2440 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2441 port_list = self.generate_port_list(num_subscribers, num_channels),
2442 negative_subscriber_auth = 'all')
2443 assert_equal(test_status, True)
2444
2445 @nottest
2446 def test_10k_cord_subscribers_join_next_400channel(self):
2447 ###"""Test 10k subscribers join next for 400 channels"""
2448 num_subscribers = 10000
2449 num_channels = 400
2450 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2451 num_channels = num_channels,
2452 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2453 port_list = self.generate_port_list(num_subscribers, num_channels),
2454 negative_subscriber_auth = 'all')
2455 assert_equal(test_status, True)
2456
2457 @nottest
2458 def test_10k_cord_subscribers_join_recv_800channel(self):
2459 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2460 num_subscribers = 10000
2461 num_channels = 800
2462 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2463 num_channels = num_channels,
2464 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2465 port_list = self.generate_port_list(num_subscribers, num_channels),
2466 negative_subscriber_auth = 'all')
2467 assert_equal(test_status, True)
2468
2469 @nottest
2470 def test_10k_cord_subscribers_join_jump_800channel(self):
2471 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2472 num_subscribers = 10000
2473 num_channels = 800
2474 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2475 num_channels = num_channels,
2476 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2477 port_list = self.generate_port_list(num_subscribers, num_channels),
2478 negative_subscriber_auth = 'all')
2479 assert_equal(test_status, True)
2480
2481 @nottest
2482 def test_10k_cord_subscribers_join_next_800channel(self):
2483 ###"""Test 10k subscribers join next for 800 channels"""
2484 num_subscribers = 10000
2485 num_channels = 800
2486 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2487 num_channels = num_channels,
2488 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2489 port_list = self.generate_port_list(num_subscribers, num_channels),
2490 negative_subscriber_auth = 'all')
2491 assert_equal(test_status, True)
2492
2493 @nottest
2494 def test_10k_cord_subscribers_join_recv_1200channel(self):
2495 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2496 num_subscribers = 10000
2497 num_channels = 1200
2498 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2499 num_channels = num_channels,
2500 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2501 port_list = self.generate_port_list(num_subscribers, num_channels),
2502 negative_subscriber_auth = 'all')
2503 assert_equal(test_status, True)
2504
2505 @nottest
2506 def test_10k_cord_subscribers_join_jump_1200channel(self):
2507 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2508 num_subscribers = 10000
2509 num_channels = 1200
2510 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2511 num_channels = num_channels,
2512 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2513 port_list = self.generate_port_list(num_subscribers, num_channels),
2514 negative_subscriber_auth = 'all')
2515 assert_equal(test_status, True)
2516
2517 @nottest
2518 def test_10k_cord_subscribers_join_next_1200channel(self):
2519 ###"""Test 10k subscribers join next for 1200 channels"""
2520 num_subscribers = 10000
2521 num_channels = 1200
2522 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2523 num_channels = num_channels,
2524 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2525 port_list = self.generate_port_list(num_subscribers, num_channels),
2526 negative_subscriber_auth = 'all')
2527 assert_equal(test_status, True)
2528
2529 @nottest
2530 def test_10k_cord_subscribers_join_recv_1500channel(self):
2531 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2532 num_subscribers = 10000
2533 num_channels = 1500
2534 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2535 num_channels = num_channels,
2536 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2537 port_list = self.generate_port_list(num_subscribers, num_channels),
2538 negative_subscriber_auth = 'all')
2539 assert_equal(test_status, True)
2540
2541 @nottest
2542 def test_10k_cord_subscribers_join_jump_1500channel(self):
2543 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2544 num_subscribers = 10000
2545 num_channels = 1500
2546 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2547 num_channels = num_channels,
2548 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2549 port_list = self.generate_port_list(num_subscribers, num_channels),
2550 negative_subscriber_auth = 'all')
2551 assert_equal(test_status, True)
2552
2553 @nottest
2554 def test_10k_cord_subscribers_join_next_1500channel(self):
2555 ###"""Test 10k subscribers join next for 1500 channels"""
2556 num_subscribers = 10000
2557 num_channels = 1500
2558 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2559 num_channels = num_channels,
2560 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2561 port_list = self.generate_port_list(num_subscribers, num_channels),
2562 negative_subscriber_auth = 'all')
2563 assert_equal(test_status, True)
2564
2565 @nottest
2566 def test_100k_cord_subscribers_join_recv_1500channel(self):
2567 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2568 num_subscribers = 100000
2569 num_channels = 1500
2570 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2571 num_channels = num_channels,
2572 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2573 port_list = self.generate_port_list(num_subscribers, num_channels),
2574 negative_subscriber_auth = 'all')
2575 assert_equal(test_status, True)
2576
2577 @nottest
2578 def test_100k_cord_subscribers_join_jump_1500channel(self):
2579 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2580 num_subscribers = 100000
2581 num_channels = 1500
2582 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2583 num_channels = num_channels,
2584 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2585 port_list = self.generate_port_list(num_subscribers, num_channels),
2586 negative_subscriber_auth = 'all')
2587 assert_equal(test_status, True)
2588
2589 @nottest
2590 def test_100k_cord_subscribers_join_next_1500channel(self):
2591 ###"""Test 10k subscribers join next for 1500 channels"""
2592 num_subscribers = 100000
2593 num_channels = 1500
2594 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2595 num_channels = num_channels,
2596 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2597 port_list = self.generate_port_list(num_subscribers, num_channels),
2598 negative_subscriber_auth = 'all')
2599 assert_equal(test_status, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002600
2601
2602
A.R Karthick8a507cf2017-06-02 18:44:49 -07002603 def remove_olt(self, switch_map):
2604 controller = get_controller()
2605 auth = ('karaf', 'karaf')
2606 #remove subscriber for every port on all the voltha devices
2607 for device, device_map in switch_map.iteritems():
2608 uni_ports = device_map['ports']
2609 uplink_vlan = device_map['uplink_vlan']
2610 for port in uni_ports:
2611 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}'.format(controller,
2612 device,
2613 port)
2614 resp = requests.delete(rest_url, auth = auth)
2615 if resp.status_code not in [204, 202, 200]:
2616 log_test.error('Error deleting subscriber for device %s on port %s' %(device, port))
2617 else:
2618 log_test.info('Deleted subscriber for device %s on port %s' %(device, port))
A.R Karthick4c4d0492017-05-26 19:23:05 -07002619
2620 def config_olt(self, switch_map):
2621 controller = get_controller()
A.R Karthick4c4d0492017-05-26 19:23:05 -07002622 auth = ('karaf', 'karaf')
2623 #configure subscriber for every port on all the voltha devices
2624 for device, device_map in switch_map.iteritems():
2625 uni_ports = device_map['ports']
2626 uplink_vlan = device_map['uplink_vlan']
2627 for port in uni_ports:
2628 vlan = port
2629 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}/{}'.format(controller,
2630 device,
2631 port,
2632 vlan)
A.R Karthick4bd5f532017-06-06 11:37:27 -07002633 requests.post(rest_url, auth = auth)
2634 #assert_equal(resp.ok, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002635
A.R Karthick56e59432017-06-06 18:05:46 -07002636 def cord_subscriber_voltha(self, services, cbs = None, num_subscribers = 1, num_channels = 1):
A.R Karthick4c4d0492017-05-26 19:23:05 -07002637 """Test subscriber join next for channel surfing"""
2638 if self.VOLTHA_HOST is None:
2639 log_test.info('Skipping test as no voltha host')
2640 return
A.R Karthick8a507cf2017-06-02 18:44:49 -07002641 switch_map = None
2642 olt_configured = False
2643 try:
A R Karthick9dc6e922017-07-12 14:40:16 -07002644 switch_map = self.voltha_switch_map
A.R Karthick8a507cf2017-06-02 18:44:49 -07002645 if not switch_map:
2646 log_test.info('No voltha devices found')
2647 return
A.R Karthick8a507cf2017-06-02 18:44:49 -07002648 log_test.info('Adding subscribers through OLT app')
2649 self.config_olt(switch_map)
2650 olt_configured = True
2651 time.sleep(5)
A.R Karthick56e59432017-06-06 18:05:46 -07002652 self.num_subscribers = num_subscribers
2653 self.num_channels = num_channels
A.R Karthick8a507cf2017-06-02 18:44:49 -07002654 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
2655 num_channels = self.num_channels,
A.R Karthick56e59432017-06-06 18:05:46 -07002656 cbs = cbs,
A.R Karthick8a507cf2017-06-02 18:44:49 -07002657 port_list = self.generate_port_list(self.num_subscribers,
2658 self.num_channels),
2659 services = services)
2660 assert_equal(test_status, True)
2661 finally:
A R Karthick18d0fb62017-09-01 18:49:07 -07002662 if self.VOLTHA_TEARDOWN is True and switch_map is not None:
2663 if self.voltha_preconfigured is False and olt_configured is True:
A.R Karthick8a507cf2017-06-02 18:44:49 -07002664 self.remove_olt(switch_map)
A.R Karthick56e59432017-06-06 18:05:46 -07002665
2666 def test_cord_subscriber_voltha_tls(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002667 """Test subscriber TLS authentication with voltha"""
A.R Karthick56e59432017-06-06 18:05:46 -07002668 if self.VOLTHA_HOST is None:
2669 log_test.info('Skipping test as no voltha host')
2670 return
2671 num_subscribers = 1
2672 num_channels = 1
2673 services = ('TLS',)
2674 cbs = ( self.tls_verify, )
2675 self.cord_subscriber_voltha(services, cbs = cbs,
2676 num_subscribers = num_subscribers,
2677 num_channels = num_channels)
2678
2679 def test_cord_subscriber_voltha_tls_igmp(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002680 """Test subscriber TLS and IGMP with voltha with 1 channel"""
A.R Karthick56e59432017-06-06 18:05:46 -07002681 if self.VOLTHA_HOST is None:
2682 log_test.info('Skipping test as no voltha host')
2683 return
2684 num_subscribers = 1
2685 num_channels = 1
2686 services = ('TLS','IGMP',)
2687 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2688 self.cord_subscriber_voltha(services, cbs = cbs,
2689 num_subscribers = num_subscribers,
2690 num_channels = num_channels)
A.R Karthick4f583842017-06-09 17:15:47 -07002691
2692 def test_cord_subscriber_voltha_tls_igmp_3(self):
A R Karthick9dc6e922017-07-12 14:40:16 -07002693 """Test subscriber TLS and IGMP with voltha for channel surfing with 3 subscribers browsing 3 channels each"""
A.R Karthick4f583842017-06-09 17:15:47 -07002694 if self.VOLTHA_HOST is None:
2695 log_test.info('Skipping test as no voltha host')
2696 return
2697 num_subscribers = 3
2698 num_channels = 3
2699 services = ('TLS','IGMP',)
2700 cbs = ( self.tls_verify, self.voltha_igmp_next_verify,)
2701 self.cord_subscriber_voltha(services, cbs = cbs,
2702 num_subscribers = num_subscribers,
2703 num_channels = num_channels)