blob: da4f758e39750843150c3cc58ede479adfb32de4 [file] [log] [blame]
A R Karthicke237aee2016-12-01 17:46:43 -08001#
A R Karthick07608ef2016-08-23 16:51:19 -07002# Copyright 2016-present Ciena Corporation
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
A R Karthicke237aee2016-12-01 17:46:43 -08007#
A R Karthick07608ef2016-08-23 16:51:19 -07008# http://www.apache.org/licenses/LICENSE-2.0
A R Karthicke237aee2016-12-01 17:46:43 -08009#
A R Karthick07608ef2016-08-23 16:51:19 -070010# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
A R Karthickb7e80902016-05-17 09:38:31 -070016import unittest
17from nose.tools import *
18from nose.twistedtools import reactor, deferred
19from twisted.internet import defer
A.R Karthick401a1ed2017-05-18 11:08:27 -070020from scapy.all import IP
A R Karthickb7e80902016-05-17 09:38:31 -070021import time, monotonic
22import os, sys
23import tempfile
24import random
25import threading
26import json
A R Karthick65c4d722016-07-18 14:20:17 -070027import requests
A R Karthickb7e80902016-05-17 09:38:31 -070028from Stats import Stats
29from OnosCtrl import OnosCtrl
A.R Karthick4c4d0492017-05-26 19:23:05 -070030from VolthaCtrl import VolthaCtrl
A R Karthickb7e80902016-05-17 09:38:31 -070031from DHCP import DHCPTest
32from EapTLS import TLSAuthTest
33from Channels import Channels, IgmpChannel
34from subscriberDb import SubscriberDB
35from threadPool import ThreadPool
A.R Karthick95d044e2016-06-10 18:44:36 -070036from portmaps import g_subscriber_port_map
A R Karthickb7e80902016-05-17 09:38:31 -070037from OltConfig import *
A R Karthicka013a272016-08-16 16:40:19 -070038from CordTestServer import cord_test_onos_restart, cord_test_shell
A.R Karthick4c4d0492017-05-26 19:23:05 -070039from CordTestUtils import log_test, get_controller
A R Karthick9313b762016-11-07 13:14:35 -080040from CordLogger import CordLogger
A.R Karthick4c4d0492017-05-26 19:23:05 -070041from CordTestConfig import setup_module
A R Karthickb7e80902016-05-17 09:38:31 -070042
A R Karthick76a497a2017-04-12 10:59:39 -070043log_test.setLevel('INFO')
A R Karthickb7e80902016-05-17 09:38:31 -070044
45class Subscriber(Channels):
46 PORT_TX_DEFAULT = 2
47 PORT_RX_DEFAULT = 1
48 INTF_TX_DEFAULT = 'veth2'
49 INTF_RX_DEFAULT = 'veth0'
50 STATS_RX = 0
51 STATS_TX = 1
52 STATS_JOIN = 2
53 STATS_LEAVE = 3
54 SUBSCRIBER_SERVICES = 'DHCP IGMP TLS'
A.R Karthick4c4d0492017-05-26 19:23:05 -070055
A R Karthickb7e80902016-05-17 09:38:31 -070056 def __init__(self, name = 'sub', service = SUBSCRIBER_SERVICES, port_map = None,
57 num = 1, channel_start = 0,
58 tx_port = PORT_TX_DEFAULT, rx_port = PORT_RX_DEFAULT,
59 iface = INTF_RX_DEFAULT, iface_mcast = INTF_TX_DEFAULT,
60 mcast_cb = None, loginType = 'wireless'):
61 self.tx_port = tx_port
62 self.rx_port = rx_port
63 self.port_map = port_map or g_subscriber_port_map
64 try:
65 self.tx_intf = self.port_map[tx_port]
66 self.rx_intf = self.port_map[rx_port]
67 except:
68 self.tx_intf = self.port_map[self.PORT_TX_DEFAULT]
69 self.rx_intf = self.port_map[self.PORT_RX_DEFAULT]
70
A R Karthick76a497a2017-04-12 10:59:39 -070071 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 -070072 Channels.__init__(self, num, channel_start = channel_start,
A R Karthickb7e80902016-05-17 09:38:31 -070073 iface = self.rx_intf, iface_mcast = self.tx_intf, mcast_cb = mcast_cb)
74 self.name = name
75 self.service = service
76 self.service_map = {}
77 services = self.service.strip().split(' ')
78 for s in services:
79 self.service_map[s] = True
80 self.loginType = loginType
81 ##start streaming channels
82 self.join_map = {}
83 ##accumulated join recv stats
84 self.join_rx_stats = Stats()
A R Karthick338268f2016-06-21 17:12:13 -070085 self.recv_timeout = False
A R Karthickb7e80902016-05-17 09:38:31 -070086
87 def has_service(self, service):
88 if self.service_map.has_key(service):
89 return self.service_map[service]
90 if self.service_map.has_key(service.upper()):
91 return self.service_map[service.upper()]
92 return False
93
94 def channel_join_update(self, chan, join_time):
95 self.join_map[chan] = ( Stats(), Stats(), Stats(), Stats() )
96 self.channel_update(chan, self.STATS_JOIN, 1, t = join_time)
97
98 def channel_join(self, chan = 0, delay = 2):
99 '''Join a channel and create a send/recv stats map'''
100 if self.join_map.has_key(chan):
101 del self.join_map[chan]
102 self.delay = delay
103 chan, join_time = self.join(chan)
104 self.channel_join_update(chan, join_time)
105 return chan
106
A.R Karthick517f7812017-05-18 11:22:46 -0700107 def channel_join_next(self, delay = 2, leave_flag = True):
A R Karthickb7e80902016-05-17 09:38:31 -0700108 '''Joins the next channel leaving the last channel'''
109 if self.last_chan:
110 if self.join_map.has_key(self.last_chan):
111 del self.join_map[self.last_chan]
112 self.delay = delay
A.R Karthick517f7812017-05-18 11:22:46 -0700113 chan, join_time = self.join_next(leave_flag = leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700114 self.channel_join_update(chan, join_time)
115 return chan
116
117 def channel_jump(self, delay = 2):
118 '''Jumps randomly to the next channel leaving the last channel'''
119 if self.last_chan is not None:
120 if self.join_map.has_key(self.last_chan):
121 del self.join_map[self.last_chan]
122 self.delay = delay
123 chan, join_time = self.jump()
124 self.channel_join_update(chan, join_time)
125 return chan
126
A R Karthick78d1f492017-05-19 14:24:17 -0700127 def channel_leave(self, chan = 0, force = False):
A R Karthickb7e80902016-05-17 09:38:31 -0700128 if self.join_map.has_key(chan):
129 del self.join_map[chan]
A R Karthick78d1f492017-05-19 14:24:17 -0700130 self.leave(chan, force = force)
A R Karthickb7e80902016-05-17 09:38:31 -0700131
132 def channel_update(self, chan, stats_type, packets, t=0):
133 if type(chan) == type(0):
134 chan_list = (chan,)
135 else:
136 chan_list = chan
A.R Karthick95d044e2016-06-10 18:44:36 -0700137 for c in chan_list:
A R Karthickb7e80902016-05-17 09:38:31 -0700138 if self.join_map.has_key(c):
139 self.join_map[c][stats_type].update(packets = packets, t = t)
140
A R Karthick338268f2016-06-21 17:12:13 -0700141 def channel_receive(self, chan, cb = None, count = 1, timeout = 5):
A R Karthick76a497a2017-04-12 10:59:39 -0700142 log_test.info('Subscriber %s on port %s receiving from group %s, channel %d' %
A R Karthick338268f2016-06-21 17:12:13 -0700143 (self.name, self.rx_intf, self.gaddr(chan), chan))
144 r = self.recv(chan, cb = cb, count = count, timeout = timeout)
A R Karthicka013a272016-08-16 16:40:19 -0700145 if len(r) == 0:
A R Karthick76a497a2017-04-12 10:59:39 -0700146 log_test.info('Subscriber %s on port %s timed out' %(self.name, self.rx_intf))
A R Karthicka013a272016-08-16 16:40:19 -0700147 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700148 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 -0700149 if self.recv_timeout:
150 ##Negative test case is disabled for now
151 assert_equal(len(r), 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700152
153 def recv_channel_cb(self, pkt):
154 ##First verify that we have received the packet for the joined instance
A R Karthick76a497a2017-04-12 10:59:39 -0700155 log_test.info('Packet received for group %s, subscriber %s, port %s' %
A R Karthick338268f2016-06-21 17:12:13 -0700156 (pkt[IP].dst, self.name, self.rx_intf))
157 if self.recv_timeout:
158 return
A R Karthickb7e80902016-05-17 09:38:31 -0700159 chan = self.caddr(pkt[IP].dst)
160 assert_equal(chan in self.join_map.keys(), True)
161 recv_time = monotonic.monotonic() * 1000000
162 join_time = self.join_map[chan][self.STATS_JOIN].start
163 delta = recv_time - join_time
164 self.join_rx_stats.update(packets=1, t = delta, usecs = True)
165 self.channel_update(chan, self.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700166 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 -0700167
168class subscriber_pool:
169
170 def __init__(self, subscriber, test_cbs):
171 self.subscriber = subscriber
172 self.test_cbs = test_cbs
173
174 def pool_cb(self):
175 for cb in self.test_cbs:
176 if cb:
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700177 self.test_status = cb(self.subscriber)
178 if self.test_status is not True:
179 ## This is chaning for other sub status has to check again
180 self.test_status = True
A R Karthick76a497a2017-04-12 10:59:39 -0700181 log_test.info('This service is failed and other services will not run for this subscriber')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700182 break
A R Karthick76a497a2017-04-12 10:59:39 -0700183 log_test.info('This Subscriber is tested for multiple service eligibility ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700184 self.test_status = True
185
A.R Karthick95d044e2016-06-10 18:44:36 -0700186
A R Karthick9313b762016-11-07 13:14:35 -0800187class subscriber_exchange(CordLogger):
A R Karthickb7e80902016-05-17 09:38:31 -0700188
A.R Karthick95d044e2016-06-10 18:44:36 -0700189 apps = ('org.opencord.aaa', 'org.onosproject.dhcp')
190 olt_apps = () #'org.opencord.cordmcast')
A R Karthicka013a272016-08-16 16:40:19 -0700191 vtn_app = 'org.opencord.vtn'
A R Karthickb7e80902016-05-17 09:38:31 -0700192 table_app = 'org.ciena.cordigmp'
193 dhcp_server_config = {
194 "ip": "10.1.11.50",
195 "mac": "ca:fe:ca:fe:ca:fe",
196 "subnet": "255.255.252.0",
197 "broadcast": "10.1.11.255",
198 "router": "10.1.8.1",
199 "domain": "8.8.8.8",
200 "ttl": "63",
201 "delay": "2",
202 "startip": "10.1.11.51",
203 "endip": "10.1.11.100"
204 }
205
206 aaa_loaded = False
207 test_path = os.path.dirname(os.path.realpath(__file__))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700208 table_app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-multitable-2.0-SNAPSHOT.oar')
209 app_file = os.path.join(test_path, '..', 'apps/ciena-cordigmp-2.0-SNAPSHOT.oar')
A.R Karthick4c4d0492017-05-26 19:23:05 -0700210 olt_app_file = os.path.join(test_path, '..', 'apps/olt-app-1.2-SNAPSHOT.oar')
A R Karthickb7e80902016-05-17 09:38:31 -0700211 onos_config_path = os.path.join(test_path, '..', 'setup/onos-config')
A.R Karthick5968e0d2017-05-16 14:50:46 -0700212 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 -0700213 cpqd_path = os.path.join(test_path, '..', 'setup')
214 ovs_path = cpqd_path
A R Karthick65c4d722016-07-18 14:20:17 -0700215 test_services = ('IGMP', 'TRAFFIC')
A R Karthick338268f2016-06-21 17:12:13 -0700216 num_joins = 0
217 num_subscribers = 0
A.R Karthick517f7812017-05-18 11:22:46 -0700218 leave_flag = True
A R Karthick338268f2016-06-21 17:12:13 -0700219 num_channels = 0
220 recv_timeout = False
A R Karthick4e0c0912016-08-17 16:57:42 -0700221 onos_restartable = bool(int(os.getenv('ONOS_RESTART', 0)))
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700222 INTF_TX_DEFAULT = 'veth2'
223 INTF_RX_DEFAULT = 'veth0'
224 SUBSCRIBER_TIMEOUT = 300
225
226 CLIENT_CERT = """-----BEGIN CERTIFICATE-----
227MIICuDCCAiGgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
228CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
229IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
230RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwNjA2MjExMjI3WhcN
231MTcwNjAxMjExMjI3WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
232BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
233hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkC
234gYEAwvXiSzb9LZ6c7uNziUfKvoHO7wu/uiFC5YUpXbmVGuGZizbVrny0xnR85Dfe
235+9R4diansfDhIhzOUl1XjN3YDeSS9OeF5YWNNE8XDhlz2d3rVzaN6hIhdotBkUjg
236rUewjTg5OFR31QEyG3v8xR3CLgiE9xQELjZbSA07pD79zuUCAwEAAaNPME0wEwYD
237VR0lBAwwCgYIKwYBBQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5l
238eGFtcGxlLmNvbS9leGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOBgQDAjkrY
2396tDChmKbvr8w6Du/t8vHjTCoCIocHTN0qzWOeb1YsAGX89+TrWIuO1dFyYd+Z0KC
240PDKB5j/ygml9Na+AklSYAVJIjvlzXKZrOaPmhZqDufi+rXWti/utVqY4VMW2+HKC
241nXp37qWeuFLGyR1519Y1d6F/5XzqmvbwURuEug==
242-----END CERTIFICATE-----"""
243
244 CLIENT_CERT_INVALID = '''-----BEGIN CERTIFICATE-----
245MIIDvTCCAqWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADCBizELMAkGA1UEBhMCVVMx
246CzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTb21ld2hlcmUxEzARBgNVBAoTCkNpZW5h
247IEluYy4xHjAcBgkqhkiG9w0BCQEWD2FkbWluQGNpZW5hLmNvbTEmMCQGA1UEAxMd
248RXhhbXBsZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTYwMzExMTg1MzM2WhcN
249MTcwMzA2MTg1MzM2WjBnMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExEzARBgNV
250BAoTCkNpZW5hIEluYy4xFzAVBgNVBAMUDnVzZXJAY2llbmEuY29tMR0wGwYJKoZI
251hvcNAQkBFg51c2VyQGNpZW5hLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
252AQoCggEBAOxemcBsPn9tZsCa5o2JA6sQDC7A6JgCNXXl2VFzKLNNvB9PS6D7ZBsQ
2535An0zEDMNzi51q7lnrYg1XyiE4S8FzMGAFr94RlGMQJUbRD9V/oqszMX4k++iAOK
254tIA1gr3x7Zi+0tkjVSVzXTmgNnhChAamdMsjYUG5+CY9WAicXyy+VEV3zTphZZDR
255OjcjEp4m/TSXVPYPgYDXI40YZKX5BdvqykWtT/tIgZb48RS1NPyN/XkCYzl3bv21
256qx7Mc0fcEbsJBIIRYTUkfxnsilcnmLxSYO+p+DZ9uBLBzcQt+4Rd5pLSfi21WM39
2572Z2oOi3vs/OYAPAqgmi2JWOv3mePa/8CAwEAAaNPME0wEwYDVR0lBAwwCgYIKwYB
258BQUHAwIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL3d3dy5leGFtcGxlLmNvbS9l
259eGFtcGxlX2NhLmNybDANBgkqhkiG9w0BAQUFAAOCAQEALBzMPDTIB6sLyPl0T6JV
260MjOkyldAVhXWiQsTjaGQGJUUe1cmUJyZbUZEc13MygXMPOM4x7z6VpXGuq1c/Vxn
261VzQ2fNnbJcIAHi/7G8W5/SQfPesIVDsHTEc4ZspPi5jlS/MVX3HOC+BDbOjdbwqP
262RX0JEr+uOyhjO+lRxG8ilMRACoBUbw1eDuVDoEBgErSUC44pq5ioDw2xelc+Y6hQ
263dmtYwfY0DbvwxHtA495frLyPcastDiT/zre7NL51MyUDPjjYjghNQEwvu66IKbQ3
264T1tJBrgI7/WI+dqhKBFolKGKTDWIHsZXQvZ1snGu/FRYzg1l+R/jT8cRB9BDwhUt
265yg==
266-----END CERTIFICATE-----'''
267
A.R Karthick4c4d0492017-05-26 19:23:05 -0700268 VOLTHA_HOST = None
269 VOLTHA_REST_PORT = 8881
270 VOLTHA_UPLINK_VLAN_MAP = { 'of:0000000000000001' : '222' }
271 VOLTHA_IGMP_ITERATIONS = 100
272 VOLTHA_CONFIG_FAKE = True
273 VOLTHA_OLT_TYPE = 'simulated_olt'
274 VOLTHA_OLT_MAC = '00:0c:e2:31:12:00'
275 VOLTHA_ENABLED = bool(int(os.getenv('VOLTHA_ENABLED', 0)))
276
A R Karthickb7e80902016-05-17 09:38:31 -0700277 @classmethod
A R Karthickd44cea12016-07-20 12:16:41 -0700278 def load_device_id(cls):
A R Karthickb03cecd2016-07-27 10:27:55 -0700279 '''Configure the device id'''
280 did = OnosCtrl.get_device_id()
A R Karthickd44cea12016-07-20 12:16:41 -0700281 #Set the default config
282 cls.device_id = did
283 cls.device_dict = { "devices" : {
284 "{}".format(did) : {
285 "basic" : {
286 "driver" : "pmc-olt"
287 }
288 }
289 },
290 }
291 return did
292
293 @classmethod
A R Karthickb7e80902016-05-17 09:38:31 -0700294 def setUpClass(cls):
295 '''Load the OLT config and activate relevant apps'''
A R Karthick0f6b6842016-12-06 17:17:44 -0800296 dids = OnosCtrl.get_device_ids()
297 device_map = {}
298 for did in dids:
299 device_map[did] = { 'basic' : { 'driver' : 'pmc-olt' } }
300 network_cfg = {}
301 network_cfg = { 'devices' : device_map }
A R Karthick4b72d4b2016-06-15 11:09:17 -0700302 ## Restart ONOS with cpqd driver config for OVS
303 cls.start_onos(network_cfg = network_cfg)
A R Karthickb7e80902016-05-17 09:38:31 -0700304 cls.install_app_table()
A R Karthickb7e80902016-05-17 09:38:31 -0700305 cls.olt = OltConfig(olt_conf_file = cls.olt_conf_file)
A.R Karthick4c4d0492017-05-26 19:23:05 -0700306 if cls.VOLTHA_ENABLED is False:
307 OnosCtrl.cord_olt_config(cls.olt)
A R Karthickb03cecd2016-07-27 10:27:55 -0700308 cls.port_map, cls.port_list = cls.olt.olt_port_map()
A R Karthick0f6b6842016-12-06 17:17:44 -0800309 cls.switches = cls.port_map['switches']
310 cls.num_ports = cls.port_map['num_ports']
311 if cls.num_ports > 1:
312 cls.num_ports -= 1 ##account for the tx port
A R Karthickb7e80902016-05-17 09:38:31 -0700313 cls.activate_apps(cls.apps + cls.olt_apps)
314
315 @classmethod
316 def tearDownClass(cls):
317 '''Deactivate the olt apps and restart OVS back'''
318 apps = cls.olt_apps + ( cls.table_app,)
319 for app in apps:
320 onos_ctrl = OnosCtrl(app)
321 onos_ctrl.deactivate()
A R Karthicke0f33fa2016-06-22 13:36:02 -0700322 cls.start_onos(network_cfg = {})
A R Karthicke5939f02016-11-16 12:08:07 -0800323 cls.install_app_igmp()
A R Karthickb7e80902016-05-17 09:38:31 -0700324
325 @classmethod
326 def activate_apps(cls, apps):
327 for app in apps:
328 onos_ctrl = OnosCtrl(app)
329 status, _ = onos_ctrl.activate()
330 assert_equal(status, True)
331 time.sleep(2)
332
333 @classmethod
334 def install_app_table(cls):
335 ##Uninstall the existing app if any
336 OnosCtrl.uninstall_app(cls.table_app)
337 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700338 log_test.info('Installing the multi table app %s for subscriber test' %(cls.table_app_file))
A R Karthickb7e80902016-05-17 09:38:31 -0700339 OnosCtrl.install_app(cls.table_app_file)
340 time.sleep(3)
A R Karthickedab01c2016-09-08 14:05:44 -0700341 #onos_ctrl = OnosCtrl(cls.vtn_app)
342 #onos_ctrl.deactivate()
A R Karthickb7e80902016-05-17 09:38:31 -0700343
344 @classmethod
A R Karthicke5939f02016-11-16 12:08:07 -0800345 def install_app_igmp(cls):
A R Karthickb7e80902016-05-17 09:38:31 -0700346 ##Uninstall the table app on class exit
347 OnosCtrl.uninstall_app(cls.table_app)
348 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700349 log_test.info('Installing back the cord igmp app %s for subscriber test on exit' %(cls.app_file))
A R Karthickb7e80902016-05-17 09:38:31 -0700350 OnosCtrl.install_app(cls.app_file)
A R Karthickedab01c2016-09-08 14:05:44 -0700351 #onos_ctrl = OnosCtrl(cls.vtn_app)
352 #onos_ctrl.activate()
A R Karthickb7e80902016-05-17 09:38:31 -0700353
354 @classmethod
355 def start_onos(cls, network_cfg = None):
A R Karthicka478df42016-07-27 16:51:08 -0700356 if cls.onos_restartable is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700357 log_test.info('ONOS restart is disabled. Skipping ONOS restart')
A R Karthick65c4d722016-07-18 14:20:17 -0700358 return
A.R Karthick4c4d0492017-05-26 19:23:05 -0700359 if cls.VOLTHA_ENABLED is True:
360 log_test.info('ONOS restart skipped as VOLTHA is running')
361 return
A R Karthickb7e80902016-05-17 09:38:31 -0700362 if network_cfg is None:
A R Karthick4b72d4b2016-06-15 11:09:17 -0700363 network_cfg = cls.device_dict
A R Karthickb7e80902016-05-17 09:38:31 -0700364
365 if type(network_cfg) is tuple:
366 res = []
367 for v in network_cfg:
368 res += v.items()
369 config = dict(res)
370 else:
371 config = network_cfg
A R Karthick76a497a2017-04-12 10:59:39 -0700372 log_test.info('Restarting ONOS with new network configuration')
A R Karthick338268f2016-06-21 17:12:13 -0700373 return cord_test_onos_restart(config = config)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700374
375 @classmethod
376 def remove_onos_config(cls):
377 try:
378 os.unlink('{}/network-cfg.json'.format(cls.onos_config_path))
379 except: pass
A R Karthickb7e80902016-05-17 09:38:31 -0700380
381 @classmethod
382 def start_cpqd(cls, mac = '00:11:22:33:44:55'):
383 dpid = mac.replace(':', '')
384 cpqd_file = os.sep.join( (cls.cpqd_path, 'cpqd.sh') )
385 cpqd_cmd = '{} {}'.format(cpqd_file, dpid)
386 ret = os.system(cpqd_cmd)
387 assert_equal(ret, 0)
388 time.sleep(10)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700389 device_id = 'of:{}{}'.format('0'*4, dpid)
390 return device_id
A R Karthickb7e80902016-05-17 09:38:31 -0700391
392 @classmethod
393 def start_ovs(cls):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700394 ovs_file = os.sep.join( (cls.ovs_path, 'of-bridge.sh') )
A R Karthickb7e80902016-05-17 09:38:31 -0700395 ret = os.system(ovs_file)
396 assert_equal(ret, 0)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700397 time.sleep(30)
A R Karthickb7e80902016-05-17 09:38:31 -0700398
A R Karthicka013a272016-08-16 16:40:19 -0700399 @classmethod
400 def ovs_cleanup(cls):
401 ##For every test case, delete all the OVS groups
402 cmd = 'ovs-ofctl del-groups br-int -OOpenFlow11 >/dev/null 2>&1'
A R Karthicka013a272016-08-16 16:40:19 -0700403 try:
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700404 cord_test_shell(cmd)
405 ##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 -0700406 os.system(cmd)
A.R Karthick98fc7cf2017-05-17 14:39:46 -0700407 finally:
408 return
A R Karthicka013a272016-08-16 16:40:19 -0700409
A R Karthickb7e80902016-05-17 09:38:31 -0700410 def onos_aaa_load(self):
411 if self.aaa_loaded:
412 return
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700413 aaa_dict = {'apps' : { 'org.opencord.aaa' : { 'AAA' : { 'radiusSecret': 'radius_password',
414 'radiusIp': '172.17.0.2' } } } }
A R Karthickb7e80902016-05-17 09:38:31 -0700415 radius_ip = os.getenv('ONOS_AAA_IP') or '172.17.0.2'
A.R Karthicka6c88fd2017-03-13 09:29:41 -0700416 aaa_dict['apps']['org.opencord.aaa']['AAA']['radiusIp'] = radius_ip
417 self.onos_load_config('org.opencord.aaa', aaa_dict)
A R Karthickb7e80902016-05-17 09:38:31 -0700418 self.aaa_loaded = True
419
420 def onos_dhcp_table_load(self, config = None):
421 dhcp_dict = {'apps' : { 'org.onosproject.dhcp' : { 'dhcp' : copy.copy(self.dhcp_server_config) } } }
422 dhcp_config = dhcp_dict['apps']['org.onosproject.dhcp']['dhcp']
423 if config:
424 for k in config.keys():
425 if dhcp_config.has_key(k):
426 dhcp_config[k] = config[k]
427 self.onos_load_config('org.onosproject.dhcp', dhcp_dict)
428
429 def onos_load_config(self, app, config):
430 status, code = OnosCtrl.config(config)
431 if status is False:
A R Karthick76a497a2017-04-12 10:59:39 -0700432 log_test.info('JSON config request for app %s returned status %d' %(app, code))
A R Karthickb7e80902016-05-17 09:38:31 -0700433 assert_equal(status, True)
434 time.sleep(2)
435
436 def dhcp_sndrcv(self, dhcp, update_seed = False):
437 cip, sip = dhcp.discover(update_seed = update_seed)
438 assert_not_equal(cip, None)
439 assert_not_equal(sip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700440 log_test.info('Got dhcp client IP %s from server %s for mac %s' %
A R Karthickb7e80902016-05-17 09:38:31 -0700441 (cip, sip, dhcp.get_mac(cip)[0]))
442 return cip,sip
443
444 def dhcp_request(self, subscriber, seed_ip = '10.10.10.1', update_seed = False):
445 config = {'startip':'10.10.10.20', 'endip':'10.10.10.200',
446 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
447 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
448 self.onos_dhcp_table_load(config)
449 dhcp = DHCPTest(seed_ip = seed_ip, iface = subscriber.iface)
450 cip, sip = self.dhcp_sndrcv(dhcp, update_seed = update_seed)
451 return cip, sip
452
453 def recv_channel_cb(self, pkt):
454 ##First verify that we have received the packet for the joined instance
455 chan = self.subscriber.caddr(pkt[IP].dst)
456 assert_equal(chan in self.subscriber.join_map.keys(), True)
457 recv_time = monotonic.monotonic() * 1000000
458 join_time = self.subscriber.join_map[chan][self.subscriber.STATS_JOIN].start
459 delta = recv_time - join_time
460 self.subscriber.join_rx_stats.update(packets=1, t = delta, usecs = True)
461 self.subscriber.channel_update(chan, self.subscriber.STATS_RX, 1, t = delta)
A R Karthick76a497a2017-04-12 10:59:39 -0700462 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 -0700463 self.test_status = True
464
A R Karthick65c4d722016-07-18 14:20:17 -0700465 def traffic_verify(self, subscriber):
466 if subscriber.has_service('TRAFFIC'):
467 url = 'http://www.google.com'
468 resp = requests.get(url)
469 self.test_status = resp.ok
470 if resp.ok == False:
A R Karthick76a497a2017-04-12 10:59:39 -0700471 log_test.info('Subscriber %s failed get from url %s with status code %d'
A R Karthick65c4d722016-07-18 14:20:17 -0700472 %(subscriber.name, url, resp.status_code))
473 else:
A R Karthick76a497a2017-04-12 10:59:39 -0700474 log_test.info('GET request from %s succeeded for subscriber %s'
A R Karthick65c4d722016-07-18 14:20:17 -0700475 %(url, subscriber.name))
A R Karthicka013a272016-08-16 16:40:19 -0700476 return self.test_status
A R Karthick65c4d722016-07-18 14:20:17 -0700477
A R Karthickb7e80902016-05-17 09:38:31 -0700478 def tls_verify(self, subscriber):
479 if subscriber.has_service('TLS'):
480 time.sleep(2)
A R Karthick4b72d4b2016-06-15 11:09:17 -0700481 tls = TLSAuthTest(intf = subscriber.rx_intf)
A R Karthick76a497a2017-04-12 10:59:39 -0700482 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700483 tls.runTest()
484 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700485 return self.test_status
486 else:
487 self.test_status = True
488 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700489
490 def dhcp_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700491 if subscriber.has_service('DHCP'):
492 cip, sip = self.dhcp_request(subscriber, update_seed = True)
A R Karthick76a497a2017-04-12 10:59:39 -0700493 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700494 subscriber.src_list = [cip]
495 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700496 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700497 else:
498 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
499 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700500 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700501
502 def dhcp_jump_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700503 if subscriber.has_service('DHCP'):
504 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.200.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700505 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700506 subscriber.src_list = [cip]
507 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700508 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700509 else:
510 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
511 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700512 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700513
514 def dhcp_next_verify(self, subscriber):
A R Karthick4b72d4b2016-06-15 11:09:17 -0700515 if subscriber.has_service('DHCP'):
516 cip, sip = self.dhcp_request(subscriber, seed_ip = '10.10.150.1')
A R Karthick76a497a2017-04-12 10:59:39 -0700517 log_test.info('Subscriber %s got client ip %s from server %s' %(subscriber.name, cip, sip))
A R Karthick4b72d4b2016-06-15 11:09:17 -0700518 subscriber.src_list = [cip]
519 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700520 return self.test_status
A R Karthick4b72d4b2016-06-15 11:09:17 -0700521 else:
522 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
523 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700524 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700525
526 def igmp_verify(self, subscriber):
527 chan = 0
528 if subscriber.has_service('IGMP'):
A R Karthick338268f2016-06-21 17:12:13 -0700529 ##We wait for all the subscribers to join before triggering leaves
530 if subscriber.rx_port > 1:
531 time.sleep(5)
532 subscriber.channel_join(chan, delay = 0)
533 self.num_joins += 1
534 while self.num_joins < self.num_subscribers:
535 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700536 log_test.info('All subscribers have joined the channel')
A R Karthick338268f2016-06-21 17:12:13 -0700537 for i in range(10):
538 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
A R Karthick76a497a2017-04-12 10:59:39 -0700539 log_test.info('Leaving channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700540 subscriber.channel_leave(chan)
A R Karthick338268f2016-06-21 17:12:13 -0700541 time.sleep(5)
A R Karthick76a497a2017-04-12 10:59:39 -0700542 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 -0700543 #Should not receive packets for this subscriber
544 self.recv_timeout = True
545 subscriber.recv_timeout = True
546 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 10)
547 subscriber.recv_timeout = False
548 self.recv_timeout = False
A R Karthick76a497a2017-04-12 10:59:39 -0700549 log_test.info('Joining channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthick338268f2016-06-21 17:12:13 -0700550 subscriber.channel_join(chan, delay = 0)
A R Karthickb7e80902016-05-17 09:38:31 -0700551 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700552 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700553
554 def igmp_jump_verify(self, subscriber):
555 if subscriber.has_service('IGMP'):
556 for i in xrange(subscriber.num):
A R Karthick76a497a2017-04-12 10:59:39 -0700557 log_test.info('Subscriber %s jumping channel' %subscriber.name)
A R Karthickb7e80902016-05-17 09:38:31 -0700558 chan = subscriber.channel_jump(delay=0)
559 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count = 1)
A R Karthick76a497a2017-04-12 10:59:39 -0700560 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700561 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700562 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 -0700563 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700564 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700565
566 def igmp_next_verify(self, subscriber):
567 if subscriber.has_service('IGMP'):
568 for i in xrange(subscriber.num):
569 if i:
A.R Karthick517f7812017-05-18 11:22:46 -0700570 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
A R Karthickb7e80902016-05-17 09:38:31 -0700571 else:
572 chan = subscriber.channel_join(i, delay=0)
A R Karthick76a497a2017-04-12 10:59:39 -0700573 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700574 subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
A R Karthick76a497a2017-04-12 10:59:39 -0700575 log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
A R Karthickb7e80902016-05-17 09:38:31 -0700576 time.sleep(3)
A R Karthick76a497a2017-04-12 10:59:39 -0700577 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 -0700578 self.test_status = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700579 return self.test_status
A R Karthickb7e80902016-05-17 09:38:31 -0700580
A.R Karthick4c4d0492017-05-26 19:23:05 -0700581 def voltha_igmp_next_verify(self, subscriber):
582 if subscriber.has_service('IGMP'):
583 for c in xrange(self.VOLTHA_IGMP_ITERATIONS):
584 for i in xrange(subscriber.num):
585 if i:
586 chan = subscriber.channel_join_next(delay=0, leave_flag = self.leave_flag)
587 time.sleep(0.2)
588 else:
589 chan = subscriber.channel_join(i, delay=0)
590 time.sleep(0.2)
591 subscriber.channel_leave(chan)
592 log_test.info('Joined next channel %d for subscriber %s' %(chan, subscriber.name))
593 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
594 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
595 self.test_status = True
596 return self.test_status
597
A R Karthick31f1f342017-05-19 13:55:10 -0700598 def igmp_leave_verify(self, subscriber):
599 if subscriber.has_service('IGMP'):
600 for chan in xrange(subscriber.num):
A R Karthick78d1f492017-05-19 14:24:17 -0700601 subscriber.channel_leave(chan, force = True)
A R Karthick31f1f342017-05-19 13:55:10 -0700602 time.sleep(2)
603 log_test.info('Left channel %d for subscriber %s' %(chan, subscriber.name))
604 #self.recv_timeout = True
605 #subscriber.recv_timeout = True
606 #subscriber.channel_receive(chan, cb = subscriber.recv_channel_cb, count=1)
607 #self.recv_timeout = False
608 #subscriber.recv_timeout = False
609 #log_test.info('Verified receive for channel %d, subscriber %s' %(chan, subscriber.name))
610 #time.sleep(1)
611
612 self.test_status = True
613 return self.test_status
614
A R Karthickb7e80902016-05-17 09:38:31 -0700615 def generate_port_list(self, subscribers, channels):
616 return self.port_list[:subscribers]
617
A.R Karthick4c4d0492017-05-26 19:23:05 -0700618 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 -0700619 '''Load the subscriber from the database'''
A.R Karthick4c4d0492017-05-26 19:23:05 -0700620 test_services = services if services else self.test_services
621 self.subscriber_db = SubscriberDB(create = create, services = test_services)
A R Karthickb7e80902016-05-17 09:38:31 -0700622 if create is True:
623 self.subscriber_db.generate(num)
624 self.subscriber_info = self.subscriber_db.read(num)
625 self.subscriber_list = []
626 if not port_list:
627 port_list = self.generate_port_list(num, num_channels)
628
629 index = 0
630 for info in self.subscriber_info:
A.R Karthick95d044e2016-06-10 18:44:36 -0700631 self.subscriber_list.append(Subscriber(name=info['Name'],
A R Karthickb7e80902016-05-17 09:38:31 -0700632 service=info['Service'],
633 port_map = self.port_map,
634 num=num_channels,
635 channel_start = channel_start,
636 tx_port = port_list[index][0],
637 rx_port = port_list[index][1]))
638 if num_channels > 1:
639 channel_start += num_channels
640 index += 1
641
642 #load the ssm list for all subscriber channels
643 igmpChannel = IgmpChannel()
644 ssm_groups = map(lambda sub: sub.channels, self.subscriber_list)
645 ssm_list = reduce(lambda ssm1, ssm2: ssm1+ssm2, ssm_groups)
646 igmpChannel.igmp_load_ssm_config(ssm_list)
647
A.R Karthick95d044e2016-06-10 18:44:36 -0700648 def subscriber_join_verify( self, num_subscribers = 10, num_channels = 1,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700649 channel_start = 0, cbs = None, port_list = [],
650 services = None, negative_subscriber_auth = None):
A R Karthickb7e80902016-05-17 09:38:31 -0700651 self.test_status = False
A R Karthicka013a272016-08-16 16:40:19 -0700652 self.ovs_cleanup()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700653 subscribers_count = num_subscribers
654 sub_loop_count = num_subscribers
A R Karthickb7e80902016-05-17 09:38:31 -0700655 self.subscriber_load(create = True, num = num_subscribers,
A.R Karthick4c4d0492017-05-26 19:23:05 -0700656 num_channels = num_channels, channel_start = channel_start, port_list = port_list,
657 services = services)
A R Karthickb7e80902016-05-17 09:38:31 -0700658 self.onos_aaa_load()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700659 self.thread_pool = ThreadPool(min(100, subscribers_count), queue_size=1, wait_timeout=1)
660
A R Karthick338268f2016-06-21 17:12:13 -0700661 chan_leave = False #for single channel, multiple subscribers
A R Karthicke237aee2016-12-01 17:46:43 -0800662 if cbs is None:
A R Karthick65c4d722016-07-18 14:20:17 -0700663 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
A R Karthick338268f2016-06-21 17:12:13 -0700664 chan_leave = True
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700665 cbs_negative = cbs
A R Karthickb7e80902016-05-17 09:38:31 -0700666 for subscriber in self.subscriber_list:
667 subscriber.start()
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700668 if negative_subscriber_auth is 'half' and sub_loop_count%2 is not 0:
669 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
670 elif negative_subscriber_auth is 'onethird' and sub_loop_count%3 is not 0:
671 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify, self.traffic_verify)
672 else:
673 cbs = cbs_negative
674 sub_loop_count = sub_loop_count - 1
A R Karthickb7e80902016-05-17 09:38:31 -0700675 pool_object = subscriber_pool(subscriber, cbs)
676 self.thread_pool.addTask(pool_object.pool_cb)
677 self.thread_pool.cleanUpThreads()
678 for subscriber in self.subscriber_list:
679 subscriber.stop()
A R Karthick338268f2016-06-21 17:12:13 -0700680 if chan_leave is True:
681 subscriber.channel_leave(0)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700682 subscribers_count = 0
A R Karthickb7e80902016-05-17 09:38:31 -0700683 return self.test_status
684
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700685 def tls_invalid_cert(self, subscriber):
686 if subscriber.has_service('TLS'):
687 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700688 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700689 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_INVALID)
690 tls.runTest()
691 if tls.failTest == True:
692 self.test_status = False
693 return self.test_status
694 else:
695 self.test_status = True
696 return self.test_status
697
698 def tls_no_cert(self, subscriber):
699 if subscriber.has_service('TLS'):
700 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700701 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700702 tls = TLSAuthTest(client_cert = '')
703 tls.runTest()
704 if tls.failTest == True:
705 self.test_status = False
706 return self.test_status
707 else:
708 self.test_status = True
709 return self.test_status
710
711 def tls_self_signed_cert(self, subscriber):
712 if subscriber.has_service('TLS'):
713 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700714 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700715 tls = TLSAuthTest(client_cert = self.CLIENT_CERT)
716 tls.runTest()
717 if tls.failTest == False:
718 self.test_status = True
719 return self.test_status
720 else:
721 self.test_status = True
722 return self.test_status
723
724 def tls_non_ca_authrized_cert(self, subscriber):
725 if subscriber.has_service('TLS'):
726 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700727 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700728 tls = TLSAuthTest(client_cert = self.CLIENT_CERT_NON_CA_AUTHORIZED)
729 tls.runTest()
730 if tls.failTest == False:
731 self.test_status = True
732 return self.test_status
733 else:
734 self.test_status = True
735 return self.test_status
736
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700737 def tls_Nsubscribers_use_same_valid_cert(self, subscriber):
738 if subscriber.has_service('TLS'):
739 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700740 log_test.info('Running subscriber %s tls auth test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700741 num_users = 3
742 for i in xrange(num_users):
743 tls = TLSAuthTest(intf = 'veth{}'.format(i*2))
744 tls.runTest()
745 if tls.failTest == False:
746 self.test_status = True
747 return self.test_status
748 else:
749 self.test_status = True
750 return self.test_status
751
752 def dhcp_discover_scenario(self, subscriber):
753 if subscriber.has_service('DHCP'):
754 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700755 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700756 t1 = self.subscriber_dhcp_1release()
757 self.test_status = True
758 return self.test_status
759 else:
760 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
761 self.test_status = True
762 return self.test_status
763
764 def subscriber_dhcp_1release(self, iface = INTF_RX_DEFAULT):
A R Karthick76a497a2017-04-12 10:59:39 -0700765 config = {'startip':'10.10.100.20', 'endip':'10.10.100.21',
766 'ip':'10.10.100.2', 'mac': "ca:fe:ca:fe:8a:fe",
767 'subnet': '255.255.255.0', 'broadcast':'10.10.100.255', 'router':'10.10.100.1'}
768 self.onos_dhcp_table_load(config)
769 self.dhcp = DHCPTest(seed_ip = '10.10.100.10', iface = iface)
770 cip, sip = self.send_recv()
771 log_test.info('Releasing ip %s to server %s' %(cip, sip))
772 assert_equal(self.dhcp.release(cip), True)
773 log_test.info('Triggering DHCP discover again after release')
774 cip2, sip2 = self.send_recv(update_seed = True)
775 log_test.info('Verifying released IP was given back on rediscover')
776 assert_equal(cip, cip2)
777 log_test.info('Test done. Releasing ip %s to server %s' %(cip2, sip2))
778 assert_equal(self.dhcp.release(cip2), True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700779
780 def dhcp_client_reboot_scenario(self, subscriber):
781 if subscriber.has_service('DHCP'):
782 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700783 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700784 tl = self.subscriber_dhcp_client_request_after_reboot()
785 self.test_status = True
786 return self.test_status
787 else:
788 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
789 self.test_status = True
790 return self.test_status
791
792 def subscriber_dhcp_client_request_after_reboot(self, iface = INTF_RX_DEFAULT):
793 #''' Client sends DHCP Request after reboot.'''
794
795 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
796 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
797 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
798 self.onos_dhcp_table_load(config)
799 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
800 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700801 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700802 (cip, sip, mac) )
803
A R Karthick76a497a2017-04-12 10:59:39 -0700804 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 -0700805
806 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700807 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 -0700808 assert_not_equal(cip, None)
809
810 else:
811 new_cip, new_sip = self.dhcp.only_request(cip, mac)
812 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700813 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700814 os.system('ifconfig '+iface+' down')
A R Karthick76a497a2017-04-12 10:59:39 -0700815 log_test.info('Client goes down.')
816 log_test.info('Delay for 5 seconds.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700817
818 time.sleep(5)
819
820 os.system('ifconfig '+iface+' up')
A R Karthick76a497a2017-04-12 10:59:39 -0700821 log_test.info('Client is up now.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700822
823 new_cip, new_sip = self.dhcp.only_request(cip, mac)
824 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700825 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700826 assert_not_equal(new_cip, None)
827 elif new_cip != None:
A R Karthick76a497a2017-04-12 10:59:39 -0700828 log_test.info("Got DHCP ACK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700829
830 def dhcp_client_renew_scenario(self, subscriber):
831 if subscriber.has_service('DHCP'):
832 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700833 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700834 tl = self.subscriber_dhcp_client_renew_time()
835 self.test_status = True
836 return self.test_status
837 else:
838 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
839 self.test_status = True
840 return self.test_status
841
842 def subscriber_dhcp_client_renew_time(self, iface = INTF_RX_DEFAULT):
843 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
844 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
845 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
846 self.onos_dhcp_table_load(config)
847 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
848 cip, sip, mac , lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700849 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700850 (cip, sip, mac) )
851
A R Karthick76a497a2017-04-12 10:59:39 -0700852 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 -0700853 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700854 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 -0700855 assert_not_equal(cip, None)
856 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700857 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700858 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, renew_time = True)
859 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700860 log_test.info("Client 's Renewal time is :%s",lval)
861 log_test.info("Generating delay till renewal time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700862 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700863 log_test.info("Client Sending Unicast DHCP request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700864 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac, unicast = True)
865 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700866 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700867 (latest_cip, mac, latest_sip) )
868
869 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700870 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700871 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700872 log_test.info("Got DHCP NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700873
874 def dhcp_server_reboot_scenario(self, subscriber):
875 if subscriber.has_service('DHCP'):
876 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700877 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700878 tl = self.subscriber_dhcp_server_after_reboot()
879 self.test_status = True
880 return self.test_status
881 else:
882 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
883 self.test_status = True
884 return self.test_status
885
886 def subscriber_dhcp_server_after_reboot(self, iface = INTF_RX_DEFAULT):
887 ''' DHCP server goes down.'''
888 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
889 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
890 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
891 self.onos_dhcp_table_load(config)
892 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
893 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700894 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700895 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700896 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 -0700897 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700898 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 -0700899 assert_not_equal(cip, None)
900 else:
901 new_cip, new_sip = self.dhcp.only_request(cip, mac)
902 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700903 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700904 assert_not_equal(new_cip, None)
A R Karthick76a497a2017-04-12 10:59:39 -0700905 log_test.info('Getting DHCP server Down.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700906 onos_ctrl = OnosCtrl(self.dhcp_app)
907 onos_ctrl.deactivate()
908 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700909 log_test.info("Sending DHCP Request.")
910 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700911 new_cip, new_sip = self.dhcp.only_request(cip, mac)
912 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700913 log_test.info('')
914 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700915 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700916 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700917 assert_equal(new_cip,None) #Neagtive Test Case
A R Karthick76a497a2017-04-12 10:59:39 -0700918 log_test.info('Getting DHCP server Up.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700919# self.activate_apps(self.dhcp_app)
920 onos_ctrl = OnosCtrl(self.dhcp_app)
921 status, _ = onos_ctrl.activate()
922 assert_equal(status, True)
923 time.sleep(3)
924 for i in range(0,4):
A R Karthick76a497a2017-04-12 10:59:39 -0700925 log_test.info("Sending DHCP Request after DHCP server is up.")
926 log_test.info('')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700927 new_cip, new_sip = self.dhcp.only_request(cip, mac)
928 if new_cip == None and new_sip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700929 log_test.info('')
930 log_test.info("DHCP Request timed out.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700931 elif new_cip and new_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700932 log_test.info("Got Reply from DHCP server.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700933 assert_equal(new_cip,None) #Neagtive Test Case
934
935 def dhcp_client_rebind_scenario(self, subscriber):
936 if subscriber.has_service('DHCP'):
937 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700938 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700939 tl = self.subscriber_dhcp_client_rebind_time()
940 self.test_status = True
941 return self.test_status
942 else:
943 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
944 self.test_status = True
945 return self.test_status
946
947 def subscriber_dhcp_client_rebind_time(self, iface = INTF_RX_DEFAULT):
948 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
949 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
950 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
951 self.onos_dhcp_table_load(config)
952 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
953 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -0700954 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700955 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -0700956 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 -0700957 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -0700958 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 -0700959 assert_not_equal(cip, None)
960 elif cip and sip and mac:
A R Karthick76a497a2017-04-12 10:59:39 -0700961 log_test.info("Triggering DHCP Request.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700962 new_cip, new_sip, lval = self.dhcp.only_request(cip, mac, rebind_time = True)
963 if new_cip and new_sip and lval:
A R Karthick76a497a2017-04-12 10:59:39 -0700964 log_test.info("Client 's Rebind time is :%s",lval)
965 log_test.info("Generating delay till rebind time.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700966 time.sleep(lval)
A R Karthick76a497a2017-04-12 10:59:39 -0700967 log_test.info("Client Sending broadcast DHCP requests for renewing lease or for getting new ip.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700968 self.dhcp.after_T2 = True
969 for i in range(0,4):
970 latest_cip, latest_sip = self.dhcp.only_request(new_cip, mac)
971 if latest_cip and latest_sip:
A R Karthick76a497a2017-04-12 10:59:39 -0700972 log_test.info("Got DHCP Ack. Lease Renewed for ip %s and mac %s from server %s." %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700973 (latest_cip, mac, latest_sip) )
974 break
975 elif latest_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700976 log_test.info("Got DHCP NAK. Lease not renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700977 assert_not_equal(latest_cip, None)
978 elif new_cip == None or new_sip == None or lval == None:
A R Karthick76a497a2017-04-12 10:59:39 -0700979 log_test.info("Got DHCP NAK.Lease not Renewed.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700980
981 def dhcp_starvation_scenario(self, subscriber):
982 if subscriber.has_service('DHCP'):
983 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -0700984 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -0700985 tl = self.subscriber_dhcp_starvation()
986 self.test_status = True
987 return self.test_status
988 else:
989 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
990 self.test_status = True
991 return self.test_status
992
993 def subscriber_dhcp_starvation(self, iface = INTF_RX_DEFAULT):
994 '''DHCP starve'''
995 config = {'startip':'182.17.0.20', 'endip':'182.17.0.69',
996 'ip':'182.17.0.2', 'mac': "ca:fe:c3:fe:ca:fe",
997 'subnet': '255.255.255.0', 'broadcast':'182.17.0.255', 'router':'182.17.0.1'}
998 self.onos_dhcp_table_load(config)
999 self.dhcp = DHCPTest(seed_ip = '182.17.0.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001000 log_test.info('Verifying 1 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001001 for x in xrange(50):
1002 mac = RandMAC()._fix()
1003 self.send_recv(mac = mac)
A R Karthick76a497a2017-04-12 10:59:39 -07001004 log_test.info('Verifying 2 ')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001005 cip, sip = self.send_recv(update_seed = True, validate = False)
1006 assert_equal(cip, None)
1007 assert_equal(sip, None)
1008
1009 def dhcp_same_client_multi_discovers_scenario(self, subscriber):
1010 if subscriber.has_service('DHCP'):
1011 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001012 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001013 tl = self.subscriber_dhcp_same_client_multiple_discover()
1014 self.test_status = True
1015 return self.test_status
1016 else:
1017 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1018 self.test_status = True
1019 return self.test_status
1020
1021 def subscriber_dhcp_same_client_multiple_discover(self, iface = INTF_RX_DEFAULT):
1022 ''' DHCP Client sending multiple discover . '''
1023 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1024 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1025 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1026 self.onos_dhcp_table_load(config)
1027 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
1028 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001029 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 -07001030 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001031 log_test.info('Triggering DHCP discover again.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001032 new_cip, new_sip, new_mac , lval = self.dhcp.only_discover()
1033 if cip == new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001034 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 -07001035 % (new_cip, new_sip, new_mac) )
1036 elif cip != new_cip:
A R Karthick76a497a2017-04-12 10:59:39 -07001037 log_test.info('Ip after 1st discover %s' %cip)
1038 log_test.info('Map after 2nd discover %s' %new_cip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001039 assert_equal(cip, new_cip)
1040
1041 def dhcp_same_client_multi_request_scenario(self, subscriber):
1042 if subscriber.has_service('DHCP'):
1043 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001044 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001045 tl = self.subscriber_dhcp_same_client_multiple_request()
1046 self.test_status = True
1047 return self.test_status
1048 else:
1049 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1050 self.test_status = True
1051 return self.test_status
1052
1053 def subscriber_dhcp_same_client_multiple_request(self, iface = INTF_RX_DEFAULT):
1054 ''' DHCP Client sending multiple repeat DHCP requests. '''
1055 config = {'startip':'10.10.10.20', 'endip':'10.10.10.69',
1056 'ip':'10.10.10.2', 'mac': "ca:fe:ca:fe:ca:fe",
1057 'subnet': '255.255.255.0', 'broadcast':'10.10.10.255', 'router':'10.10.10.1'}
1058 self.onos_dhcp_table_load(config)
1059 self.dhcp = DHCPTest(seed_ip = '10.10.10.1', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001060 log_test.info('Sending DHCP discover and DHCP request.')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001061 cip, sip = self.send_recv()
1062 mac = self.dhcp.get_mac(cip)[0]
A R Karthick76a497a2017-04-12 10:59:39 -07001063 log_test.info("Sending DHCP request again.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001064 new_cip, new_sip = self.dhcp.only_request(cip, mac)
1065 if (new_cip,new_sip) == (cip,sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001066 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 -07001067 % (new_cip, new_sip, mac) )
1068 elif (new_cip,new_sip):
A R Karthick76a497a2017-04-12 10:59:39 -07001069 log_test.info('No DHCP ACK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001070 assert_equal(new_cip, None)
1071 assert_equal(new_sip, None)
1072 else:
1073 print "Something went wrong."
1074
1075 def dhcp_client_desired_ip_scenario(self, subscriber):
1076 if subscriber.has_service('DHCP'):
1077 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001078 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001079 tl = self.subscriber_dhcp_client_desired_address()
1080 self.test_status = True
1081 return self.test_status
1082 else:
1083 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1084 self.test_status = True
1085 return self.test_status
1086
1087 def subscriber_dhcp_client_desired_address(self, iface = INTF_RX_DEFAULT):
1088 '''DHCP Client asking for desired IP address.'''
1089 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1090 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1091 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1092 self.onos_dhcp_table_load(config)
1093 self.dhcp = DHCPTest(seed_ip = '20.20.20.31', iface = iface)
1094 cip, sip, mac , lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001095 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001096 (cip, sip, mac) )
1097 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001098 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001099 (cip, sip, mac) )
1100 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001101 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001102 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001103 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001104 assert_equal(cip, self.dhcp.seed_ip)
1105
1106 def dhcp_client_request_pkt_with_non_offered_ip_scenario(self, subscriber):
1107 if subscriber.has_service('DHCP'):
1108 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001109 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001110 tl = self.subscriber_dhcp_server_nak_packet()
1111 self.test_status = True
1112 return self.test_status
1113 else:
1114 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1115 self.test_status = True
1116 return self.test_status
1117
1118 def subscriber_dhcp_server_nak_packet(self, iface = INTF_RX_DEFAULT):
1119 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1120 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1121 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1122 self.onos_dhcp_table_load(config)
1123 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
1124 cip, sip, mac, lval = self.dhcp.only_discover()
A R Karthick76a497a2017-04-12 10:59:39 -07001125 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001126 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001127 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 -07001128 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001129 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 -07001130 assert_not_equal(cip, None)
1131 else:
1132 new_cip, new_sip = self.dhcp.only_request('20.20.20.31', mac)
1133 if new_cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001134 log_test.info("Got DHCP server NAK.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001135 assert_equal(new_cip, None) #Negative Test Case
1136
1137 def dhcp_client_requested_out_pool_ip_scenario(self, subscriber):
1138 if subscriber.has_service('DHCP'):
1139 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001140 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001141 tl = self.subscriber_dhcp_client_desired_address_out_of_pool()
1142 self.test_status = True
1143 return self.test_status
1144 else:
1145 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1146 self.test_status = True
1147 return self.test_status
1148
1149 def subscriber_dhcp_client_desired_address_out_of_pool(self, iface = INTF_RX_DEFAULT):
1150 '''DHCP Client asking for desired IP address from out of pool.'''
1151 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1152 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1153 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1154 self.onos_dhcp_table_load(config)
1155 self.dhcp = DHCPTest(seed_ip = '20.20.20.35', iface = iface)
1156 cip, sip, mac, lval = self.dhcp.only_discover(desired = True)
A R Karthick76a497a2017-04-12 10:59:39 -07001157 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001158 (cip, sip, mac) )
1159 if cip == self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001160 log_test.info('Got dhcp client IP %s from server %s for mac %s as desired .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001161 (cip, sip, mac) )
1162 assert_equal(cip, self.dhcp.seed_ip) #Negative Test Case
1163
1164 elif cip != self.dhcp.seed_ip:
A R Karthick76a497a2017-04-12 10:59:39 -07001165 log_test.info('Got dhcp client IP %s from server %s for mac %s .' %
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001166 (cip, sip, mac) )
A R Karthick76a497a2017-04-12 10:59:39 -07001167 log_test.info('The desired ip was: %s .' % self.dhcp.seed_ip)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001168 assert_not_equal(cip, self.dhcp.seed_ip)
1169
1170 elif cip == None:
A R Karthick76a497a2017-04-12 10:59:39 -07001171 log_test.info('Got DHCP NAK')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001172
1173 def dhcp_client_specific_lease_scenario(self, subscriber):
1174 if subscriber.has_service('DHCP'):
1175 time.sleep(2)
A R Karthick76a497a2017-04-12 10:59:39 -07001176 log_test.info('Running subscriber %s DHCP rediscover scenario test' %subscriber.name)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001177 tl = self.subscriber_dhcp_specific_lease_packet()
1178 self.test_status = True
1179 return self.test_status
1180 else:
1181 subscriber.src_list = ['10.10.10.{}'.format(subscriber.rx_port)]
1182 self.test_status = True
1183 return self.test_status
1184
1185 def subscriber_dhcp_specific_lease_packet(self, iface = INTF_RX_DEFAULT):
1186 ''' Client sends DHCP Discover packet for particular lease time.'''
1187 config = {'startip':'20.20.20.30', 'endip':'20.20.20.69',
1188 'ip':'20.20.20.2', 'mac': "ca:fe:ca:fe:ca:fe",
1189 'subnet': '255.255.255.0', 'broadcast':'20.20.20.255', 'router':'20.20.20.1'}
1190 self.onos_dhcp_table_load(config)
1191 self.dhcp = DHCPTest(seed_ip = '20.20.20.45', iface = iface)
A R Karthick76a497a2017-04-12 10:59:39 -07001192 log_test.info('Sending DHCP discover with lease time of 700')
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001193 cip, sip, mac, lval = self.dhcp.only_discover(lease_time = True)
1194
A R Karthick76a497a2017-04-12 10:59:39 -07001195 log_test.info("Verifying Client 's IP and mac in DHCP Offer packet.")
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001196 if (cip == None and mac != None):
A R Karthick76a497a2017-04-12 10:59:39 -07001197 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 -07001198 assert_not_equal(cip, None)
1199 elif lval != 700:
A R Karthick76a497a2017-04-12 10:59:39 -07001200 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 -07001201 (cip, sip, mac, lval) )
1202 assert_not_equal(lval, 700)
1203
1204 def test_cord_subscriber_join_recv(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001205 """Test subscriber join and receive for channel surfing"""
A R Karthick338268f2016-06-21 17:12:13 -07001206 self.num_subscribers = 5
1207 self.num_channels = 1
A R Karthicka478df42016-07-27 16:51:08 -07001208 test_status = True
1209 ##Run this test only if ONOS can be restarted as it incurs a network-cfg change
1210 if self.onos_restartable is True:
1211 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1212 num_channels = self.num_channels,
1213 port_list = self.generate_port_list(self.num_subscribers,
1214 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001215 assert_equal(test_status, True)
1216
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001217 def test_cord_subscriber_join_jump(self):
A R Karthicka478df42016-07-27 16:51:08 -07001218 """Test subscriber join jump for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001219 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001220 self.num_channels = 10
1221 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1222 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001223 cbs = (self.tls_verify, self.dhcp_jump_verify,
1224 self.igmp_jump_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001225 port_list = self.generate_port_list(self.num_subscribers,
1226 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001227 assert_equal(test_status, True)
1228
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001229 def test_cord_subscriber_join_next(self):
ChetanGaonkerf9c2f8b2016-07-19 15:49:41 -07001230 """Test subscriber join next for channel surfing"""
A R Karthick0f6b6842016-12-06 17:17:44 -08001231 self.num_subscribers = self.num_ports * len(self.switches)
A R Karthick338268f2016-06-21 17:12:13 -07001232 self.num_channels = 10
1233 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1234 num_channels = self.num_channels,
A R Karthick65c4d722016-07-18 14:20:17 -07001235 cbs = (self.tls_verify, self.dhcp_next_verify,
1236 self.igmp_next_verify, self.traffic_verify),
A R Karthick338268f2016-06-21 17:12:13 -07001237 port_list = self.generate_port_list(self.num_subscribers,
1238 self.num_channels))
A R Karthickb7e80902016-05-17 09:38:31 -07001239 assert_equal(test_status, True)
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001240
A.R Karthick517f7812017-05-18 11:22:46 -07001241 def test_cord_subscriber_join_next_without_leave(self):
1242 """Test subscriber join next for channel surfing"""
1243 self.num_subscribers = self.num_ports * len(self.switches)
1244 self.num_channels = 5
1245 self.leave_flag = False
1246 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1247 num_channels = self.num_channels,
1248 cbs = (self.tls_verify, self.dhcp_next_verify,
1249 self.igmp_next_verify, self.traffic_verify),
1250 port_list = self.generate_port_list(self.num_subscribers,
1251 self.num_channels))
1252 self.leave_flag = True
1253 assert_equal(test_status, True)
1254
A R Karthick31f1f342017-05-19 13:55:10 -07001255 def test_cord_subscriber_leave(self):
1256 """Test subscriber leaves for all the join nexts before"""
1257 self.num_subscribers = self.num_ports * len(self.switches)
1258 self.num_channels = 5
1259 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
1260 num_channels = self.num_channels,
1261 cbs = (self.tls_verify, self.dhcp_next_verify,
1262 self.igmp_leave_verify, self.traffic_verify),
1263 port_list = self.generate_port_list(self.num_subscribers,
1264 self.num_channels))
1265 assert_equal(test_status, True)
1266
ChetanGaonkerbd9e3942016-08-05 10:02:20 -07001267 #@deferred(SUBSCRIBER_TIMEOUT)
1268 def test_cord_subscriber_authentication_with_invalid_certificate_and_channel_surfing(self):
1269 ### """Test subscriber to auth with invalidCertification and join channel"""
1270 num_subscribers = 1
1271 num_channels = 1
1272 df = defer.Deferred()
1273 def sub_auth_invalid_cert(df):
1274 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1275 num_channels = num_channels,
1276 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1277 self.igmp_verify, self.traffic_verify),
1278 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1279 assert_equal(test_status, False)
1280 df.callback(0)
1281 reactor.callLater(0, sub_auth_invalid_cert, df)
1282 return df
1283
1284 #@deferred(SUBSCRIBER_TIMEOUT)
1285 def test_cord_subscriber_authentication_with_no_certificate_and_channel_surfing(self):
1286 ### """Test subscriber to auth with No Certification and join channel"""
1287 num_subscribers = 1
1288 num_channels = 1
1289 df = defer.Deferred()
1290 def sub_auth_no_cert(df):
1291 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1292 num_channels = num_channels,
1293 cbs = (self.tls_no_cert, self.dhcp_verify,
1294 self.igmp_verify, self.traffic_verify),
1295 port_list = self.generate_port_list(num_subscribers, num_channels),
1296 negative_subscriber_auth = 'all')
1297 assert_equal(test_status, False)
1298 df.callback(0)
1299 reactor.callLater(0, sub_auth_no_cert, df)
1300 return df
1301 def test_cord_subscriber_authentication_with_self_signed_certificate_and_channel_surfing(self):
1302 ### """Test subscriber to auth with Self Signed Certification and join channel"""
1303 num_subscribers = 1
1304 num_channels = 1
1305 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1306 num_channels = num_channels,
1307 cbs = (self.tls_self_signed_cert, self.dhcp_verify,
1308 self.igmp_verify, self.traffic_verify),
1309 port_list = self.generate_port_list(num_subscribers, num_channels),
1310 negative_subscriber_auth = 'all')
1311 assert_equal(test_status, True)
1312
1313 @deferred(SUBSCRIBER_TIMEOUT)
1314 def test_2_cord_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1315 ### """Test 2 subscribers to auth, one of the subscriber with invalidCertification and join channel"""
1316 num_subscribers = 2
1317 num_channels = 1
1318 df = defer.Deferred()
1319 def sub_auth_invalid_cert(df):
1320 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1321 num_channels = num_channels,
1322 cbs = (self.tls_invalid_cert, self.dhcp_verify,self.igmp_verify, self.traffic_verify),
1323 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1324 assert_equal(test_status, True)
1325 df.callback(0)
1326 reactor.callLater(0, sub_auth_invalid_cert, df)
1327 return df
1328
1329 @deferred(SUBSCRIBER_TIMEOUT)
1330 def test_2_cord_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1331 ### """Test 2 subscribers to auth, one of the subscriber with No Certification and join channel"""
1332 num_subscribers = 2
1333 num_channels = 1
1334 df = defer.Deferred()
1335 def sub_auth_no_cert(df):
1336 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1337 num_channels = num_channels,
1338 cbs = (self.tls_no_cert, self.dhcp_verify,
1339 self.igmp_verify, self.traffic_verify),
1340 port_list = self.generate_port_list(num_subscribers, num_channels),
1341 negative_subscriber_auth = 'half')
1342 assert_equal(test_status, True)
1343 df.callback(0)
1344 reactor.callLater(0, sub_auth_no_cert, df)
1345 return df
1346
1347 @deferred(SUBSCRIBER_TIMEOUT)
1348 def test_2_cord_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1349 ### """Test 2 subscribers to auth, one of the subscriber with Non CA authorized Certificate and join channel"""
1350 num_subscribers = 2
1351 num_channels = 1
1352 df = defer.Deferred()
1353 def sub_auth_no_cert(df):
1354 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1355 num_channels = num_channels,
1356 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify,
1357 self.igmp_verify, self.traffic_verify),
1358 port_list = self.generate_port_list(num_subscribers, num_channels),
1359 negative_subscriber_auth = 'half')
1360 assert_equal(test_status, True)
1361 df.callback(0)
1362 reactor.callLater(0, sub_auth_no_cert, df)
1363 return df
1364
1365 def test_cord_subscriber_authentication_with_dhcp_discover_and_channel_surfing(self):
1366 ### """Test subscriber auth success, DHCP re-discover with DHCP server and join channel"""
1367 num_subscribers = 1
1368 num_channels = 1
1369 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1370 num_channels = num_channels,
1371 cbs = (self.tls_verify, self.dhcp_discover_scenario,
1372 self.igmp_verify, self.traffic_verify),
1373 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1374 assert_equal(test_status, True)
1375
1376 def test_cord_subscriber_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1377 ### """Test subscriber auth success, DHCP client got re-booted and join channel"""
1378 num_subscribers = 1
1379 num_channels = 1
1380 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1381 num_channels = num_channels,
1382 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario,
1383 self.igmp_verify, self.traffic_verify),
1384 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1385 assert_equal(test_status, True)
1386
1387 def test_cord_subscriber_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1388 ### """Test subscriber auth , DHCP server re-boot during DHCP process and join channel"""
1389 num_subscribers = 1
1390 num_channels = 1
1391 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1392 num_channels = num_channels,
1393 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario,
1394 self.igmp_verify, self.traffic_verify),
1395 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1396 assert_equal(test_status, True)
1397
1398 def test_cord_subscriber_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1399 ### """Test subscriber auth , DHCP client rebind IP and join channel"""
1400 num_subscribers = 1
1401 num_channels = 1
1402 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1403 num_channels = num_channels,
1404 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario,
1405 self.igmp_verify, self.traffic_verify),
1406 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1407 assert_equal(test_status, True)
1408
1409
1410 def test_cord_subscriber_authentication_with_dhcp_starvation_and_channel_surfing(self):
1411 ### """Test subscriber auth , DHCP starvation and join channel"""
1412 num_subscribers = 1
1413 num_channels = 1
1414 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1415 num_channels = num_channels,
1416 cbs = (self.tls_verify, self.dhcp_starvation_scenario,
1417 self.igmp_verify, self.traffic_verify),
1418 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1419 assert_equal(test_status, True)
1420
1421 def test_cord_subscriber_authentication_with_multiple_dhcp_discover_for_same_subscriber_and_channel_surfing(self):
1422 ### """Test subscriber auth , sending same DHCP client discover multiple times and join channel"""
1423 num_subscribers = 1
1424 num_channels = 1
1425 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1426 num_channels = num_channels,
1427 cbs = (self.tls_verify, self.dhcp_same_client_multi_discovers_scenario,
1428 self.igmp_verify, self.traffic_verify),
1429 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1430 assert_equal(test_status, True)
1431
1432 def test_cord_subscriber_authentication_with_multiple_dhcp_request_for_same_subscriber_and_channel_surfing(self):
1433 ### """Test subscriber auth , same DHCP client multiple requerts times and join channel"""
1434 num_subscribers = 1
1435 num_channels = 1
1436 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1437 num_channels = num_channels,
1438 cbs = (self.tls_verify, self.dhcp_same_client_multi_request_scenario,
1439 self.igmp_verify, self.traffic_verify),
1440 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1441 assert_equal(test_status, True)
1442
1443 def test_cord_subscriber_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1444 ### """Test subscriber auth with DHCP client requesting ip and join channel"""
1445 num_subscribers = 1
1446 num_channels = 1
1447 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1448 num_channels = num_channels,
1449 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario,
1450 self.igmp_verify, self.traffic_verify),
1451 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1452 assert_equal(test_status, True)
1453
1454 def test_cord_subscriber_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1455 ### """Test subscriber auth with DHCP client request for non-offered ip and join channel"""
1456 num_subscribers = 1
1457 num_channels = 1
1458 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1459 num_channels = num_channels,
1460 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario,
1461 self.igmp_verify, self.traffic_verify),
1462 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1463 assert_equal(test_status, True)
1464
1465 def test_cord_subscriber_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1466 ### """Test subscriber auth with DHCP client requesting out of pool ip and join channel"""
1467 num_subscribers = 1
1468 num_channels = 1
1469 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1470 num_channels = num_channels,
1471 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario,
1472 self.igmp_verify, self.traffic_verify),
1473 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1474 assert_equal(test_status, True)
1475
1476
1477 def test_cord_subscriber_authentication_with_dhcp_specified_lease_time_functionality_and_channel_surfing(self):
1478 ### """Test subscriber auth with DHCP client specifying lease time and join channel"""
1479 num_subscribers = 1
1480 num_channels = 1
1481 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1482 num_channels = num_channels,
1483 cbs = (self.tls_verify, self.dhcp_client_specific_lease_scenario,
1484 self.igmp_verify, self.traffic_verify),
1485 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1486 assert_equal(test_status, True)
1487
1488 #@deferred(SUBSCRIBER_TIMEOUT)
1489 @nottest
1490 def test_1k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1491 ### """Test 1k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1492 num_subscribers = 1000
1493 num_channels = 1
1494 df = defer.Deferred()
1495 def sub_auth_invalid_cert(df):
1496 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1497 num_channels = num_channels,
1498 cbs = (self.tls_invalid_cert, self.dhcp_verify,
1499 self.igmp_verify, self.traffic_verify),
1500 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1501 assert_equal(test_status, True)
1502 df.callback(0)
1503 reactor.callLater(0, sub_auth_invalid_cert, df)
1504 return df
1505
1506 @nottest
1507 @deferred(SUBSCRIBER_TIMEOUT)
1508 def test_1k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1509 ### """Test 1k subscribers to auth, half of the subscribers with No Certification and join channel"""
1510 num_subscribers = 1000
1511 num_channels = 1
1512 df = defer.Deferred()
1513 def sub_auth_no_cert(df):
1514 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1515 num_channels = num_channels,
1516 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1517 port_list = self.generate_port_list(num_subscribers, num_channels),
1518 negative_subscriber_auth = 'half')
1519 assert_equal(test_status, True)
1520 df.callback(0)
1521 reactor.callLater(0, sub_auth_no_cert, df)
1522 return df
1523
1524 #@deferred(SUBSCRIBER_TIMEOUT)
1525 @nottest
1526 def test_1k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1527 ### """Test 1k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1528 num_subscribers = 1000
1529 num_channels = 1
1530 df = defer.Deferred()
1531 def sub_auth_no_cert(df):
1532 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1533 num_channels = num_channels,
1534 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1535 port_list = self.generate_port_list(num_subscribers, num_channels),
1536 negative_subscriber_auth = 'half')
1537 assert_equal(test_status, True)
1538 df.callback(0)
1539 reactor.callLater(0, sub_auth_no_cert, df)
1540 return df
1541
1542 #@deferred(SUBSCRIBER_TIMEOUT)
1543 @nottest
1544 def test_5k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1545 ### """Test 5k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1546 num_subscribers = 5000
1547 num_channels = 1
1548 df = defer.Deferred()
1549 def sub_auth_invalid_cert(df):
1550 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1551 num_channels = num_channels,
1552 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1553 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'half')
1554 assert_equal(test_status, True)
1555 df.callback(0)
1556 reactor.callLater(0, sub_auth_invalid_cert, df)
1557 return df
1558
1559 #@deferred(SUBSCRIBER_TIMEOUT)
1560 @nottest
1561 def test_5k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1562 ### """Test 5k subscribers to auth, half of the subscribers with No Certification and join channel"""
1563 num_subscribers = 5000
1564 num_channels = 1
1565 df = defer.Deferred()
1566 def sub_auth_no_cert(df):
1567 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1568 num_channels = num_channels,
1569 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1570 port_list = self.generate_port_list(num_subscribers, num_channels),
1571 negative_subscriber_auth = 'half')
1572 assert_equal(test_status, True)
1573 df.callback(0)
1574 reactor.callLater(0, sub_auth_no_cert, df)
1575 return df
1576
1577 #@deferred(SUBSCRIBER_TIMEOUT)
1578 @nottest
1579 def test_5k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1580 ### """Test 5k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1581 num_subscribers = 5000
1582 num_channels = 1
1583 df = defer.Deferred()
1584 def sub_auth_no_cert(df):
1585 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1586 num_channels = num_channels,
1587 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1588 port_list = self.generate_port_list(num_subscribers, num_channels),
1589 negative_subscriber_auth = 'half')
1590 assert_equal(test_status, True)
1591 df.callback(0)
1592 reactor.callLater(0, sub_auth_no_cert, df)
1593 return df
1594
1595 #@deferred(SUBSCRIBER_TIMEOUT)
1596 @nottest
1597 def test_10k_subscribers_authentication_with_valid_and_invalid_certificates_and_channel_surfing(self):
1598 ### """Test 10k subscribers to auth, half of the subscribers with invalidCertification and join channel"""
1599 num_subscribers = 10000
1600 num_channels = 1
1601 df = defer.Deferred()
1602 def sub_auth_invalid_cert(df):
1603 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1604 num_channels = num_channels,
1605 cbs = (self.tls_invalid_cert, self.dhcp_verify, self.igmp_verify),
1606 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'onethird')
1607 assert_equal(test_status, True)
1608 df.callback(0)
1609 reactor.callLater(0, sub_auth_invalid_cert, df)
1610 return df
1611
1612 #@deferred(SUBSCRIBER_TIMEOUT)
1613 @nottest
1614 def test_10k_subscribers_authentication_with_valid_and_no_certificates_and_channel_surfing(self):
1615 ### """Test 10k subscribers to auth, half of the subscribers with No Certification and join channel"""
1616 num_subscribers = 10000
1617 num_channels = 1
1618 df = defer.Deferred()
1619 def sub_auth_no_cert(df):
1620 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1621 num_channels = num_channels,
1622 cbs = (self.tls_no_cert, self.dhcp_verify, self.igmp_verify),
1623 port_list = self.generate_port_list(num_subscribers, num_channels),
1624 negative_subscriber_auth = 'onethird')
1625 assert_equal(test_status, True)
1626 df.callback(0)
1627 reactor.callLater(0, sub_auth_no_cert, df)
1628 return df
1629
1630 #@deferred(SUBSCRIBER_TIMEOUT)
1631 @nottest
1632 def test_10k_subscribers_authentication_with_valid_and_non_ca_authorized_certificates_and_channel_surfing(self):
1633 ### """Test 10k subscribers to auth, half of the subscribers with Non CA authorized Certificate and join channel"""
1634 num_subscribers = 10000
1635 num_channels = 1
1636 df = defer.Deferred()
1637 def sub_auth_no_cert(df):
1638 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1639 num_channels = num_channels,
1640 cbs = (self.tls_non_ca_authrized_cert, self.dhcp_verify, self.igmp_verify),
1641 port_list = self.generate_port_list(num_subscribers, num_channels),
1642 negative_subscriber_auth = 'onethird')
1643 assert_equal(test_status, False)
1644 assert_equal(test_status, True)
1645 df.callback(0)
1646 reactor.callLater(0, sub_auth_no_cert, df)
1647 return df
1648
1649 @nottest
1650 def test_1k_cord_subscribers_authentication_with_dhcp_discovers_and_channel_surfing(self):
1651 ### """Test 1k subscribers auth success, DHCP re-discover with DHCP server and join channel"""
1652 num_subscribers = 1000
1653 num_channels = 1
1654 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1655 num_channels = num_channels,
1656 cbs = (self.tls_verify, self.dhcp_discover_scenario, self.igmp_verify),
1657 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1658 assert_equal(test_status, True)
1659
1660 @nottest
1661 def test_1k_cord_subscribers_authentication_with_dhcp_client_reboot_and_channel_surfing(self):
1662 ### """Test 1k subscribers auth success, DHCP client got re-booted and join channel"""
1663 num_subscribers = 1000
1664 num_channels = 1
1665 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1666 num_channels = num_channels,
1667 cbs = (self.tls_verify, self.dhcp_client_reboot_scenario, self.igmp_verify),
1668 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1669 assert_equal(test_status, True)
1670
1671 @nottest
1672 def test_1k_cord_subscribers_authentication_with_dhcp_server_reboot_and_channel_surfing(self):
1673 ### """Test 1k subscribers auth , DHCP server re-boot during DHCP process and join channel"""
1674 num_subscribers = 1000
1675 num_channels = 1
1676 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1677 num_channels = num_channels,
1678 cbs = (self.tls_verify, self.dhcp_server_reboot_scenario, self.igmp_verify),
1679 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1680 assert_equal(test_status, True)
1681
1682 @nottest
1683 def test_1k_cord_subscribers_authentication_with_dhcp_client_rebind_and_channel_surfing(self):
1684 ### """Test 1k subscribers auth , DHCP client rebind IP and join channel"""
1685 num_subscribers = 1000
1686 num_channels = 1
1687 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1688 num_channels = num_channels,
1689 cbs = (self.tls_verify, self.dhcp_client_rebind_scenario, self.igmp_verify),
1690 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1691 assert_equal(test_status, True)
1692
1693 @nottest
1694 def test_1k_cord_subscribers_authentication_with_dhcp_starvation_and_channel_surfing(self):
1695 ### """Test 1k subscribers auth , DHCP starvation and join channel"""
1696 num_subscribers = 1000
1697 num_channels = 1
1698 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1699 num_channels = num_channels,
1700 cbs = (self.tls_verify, self.dhcp_starvation_scenario, self.igmp_verify),
1701 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1702 assert_equal(test_status, True)
1703
1704 @nottest
1705 def test_1k_cord_subscribers_authentication_with_dhcp_client_requested_ip_and_channel_surfing(self):
1706 ### """Test 1k subscribers auth with DHCP client requesting ip and join channel"""
1707 num_subscribers = 1000
1708 num_channels = 1
1709 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1710 num_channels = num_channels,
1711 cbs = (self.tls_verify, self.dhcp_client_desired_ip_scenario, self.igmp_verify),
1712 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1713 assert_equal(test_status, True)
1714
1715 @nottest
1716 def test_1k_cord_subscribers_authentication_with_dhcp_non_offered_ip_and_channel_surfing(self):
1717 ### """Test subscribers auth with DHCP client request for non-offered ip and join channel"""
1718 num_subscribers = 1000
1719 num_channels = 1
1720 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1721 num_channels = num_channels,
1722 cbs = (self.tls_verify, self.dhcp_client_request_pkt_with_non_offered_ip_scenario, self.igmp_verify),
1723 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1724 assert_equal(test_status, True)
1725
1726 def test_4_cord_subscribers_join_recv_5channel(self):
1727 ###"""Test 4 subscribers join and receive for 5 channels surfing"""
1728 num_subscribers = 4
1729 num_channels = 5
1730 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1731 num_channels = num_channels,
1732 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1733 port_list = self.generate_port_list(num_subscribers, num_channels),
1734 negative_subscriber_auth = 'all')
1735 assert_equal(test_status, True)
1736
1737 def test_4_cord_subscribers_join_jump_5channel(self):
1738 ###"""Test 4 subscribers jump and receive for 5 channels surfing"""
1739 num_subscribers = 4
1740 num_channels = 5
1741 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1742 num_channels = num_channels,
1743 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1744 port_list = self.generate_port_list(num_subscribers, num_channels),
1745 negative_subscriber_auth = 'all')
1746 assert_equal(test_status, True)
1747
1748 def test_4_cord_subscribers_join_next_5channel(self):
1749 ###"""Test 4 subscribers join next for 5 channels"""
1750 num_subscribers = 4
1751 num_channels = 5
1752 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1753 num_channels = num_channels,
1754 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1755 port_list = self.generate_port_list(num_subscribers, num_channels),
1756 negative_subscriber_auth = 'all')
1757 assert_equal(test_status, True)
1758
1759 def test_10_cord_subscribers_join_recv_5channel(self):
1760 ###"""Test 10 subscribers join and receive for 5 channels surfing"""
1761 num_subscribers = 10
1762 num_channels = 5
1763 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1764 num_channels = num_channels,
1765 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1766 port_list = self.generate_port_list(num_subscribers, num_channels),
1767 negative_subscriber_auth = 'all')
1768 assert_equal(test_status, True)
1769
1770 def test_10_cord_subscribers_join_jump_5channel(self):
1771 ###"""Test 10 subscribers jump and receive for 5 channels surfing"""
1772 num_subscribers = 10
1773 num_channels = 5
1774 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1775 num_channels = num_channels,
1776 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1777 port_list = self.generate_port_list(num_subscribers, num_channels),
1778 negative_subscriber_auth = 'all')
1779 assert_equal(test_status, True)
1780
1781
1782 def test_10_cord_subscribers_join_next_5channel(self):
1783 ###"""Test 10 subscribers join next for 5 channels"""
1784 num_subscribers = 10
1785 num_channels = 5
1786 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1787 num_channels = num_channels,
1788 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
1789 port_list = self.generate_port_list(num_subscribers, num_channels),
1790 negative_subscriber_auth = 'all')
1791 assert_equal(test_status, True)
1792
1793
1794
1795 def test_cord_subscriber_join_recv_100channels(self):
1796 num_subscribers = 1
1797 num_channels = 100
1798 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1799 num_channels = num_channels,
1800 cbs = (self.tls_verify, self.dhcp_verify,
1801 self.igmp_verify, self.traffic_verify),
1802 port_list = self.generate_port_list(num_subscribers, num_channels),
1803 negative_subscriber_auth = 'all')
1804 assert_equal(test_status, True)
1805
1806 def test_cord_subscriber_join_recv_400channels(self):
1807 num_subscribers = 1
1808 num_channels = 400
1809 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1810 num_channels = num_channels,
1811 cbs = (self.tls_verify, self.dhcp_verify,
1812 self.igmp_verify, self.traffic_verify),
1813 port_list = self.generate_port_list(num_subscribers, num_channels),
1814 negative_subscriber_auth = 'all')
1815 assert_equal(test_status, True)
1816
1817 def test_cord_subscriber_join_recv_800channels(self):
1818 num_subscribers = 1
1819 num_channels = 800
1820 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1821 num_channels = num_channels,
1822 cbs = (self.tls_verify, self.dhcp_verify,
1823 self.igmp_verify, self.traffic_verify),
1824 port_list = self.generate_port_list(num_subscribers, num_channels),
1825 negative_subscriber_auth = 'all')
1826 assert_equal(test_status, True)
1827
1828 def test_cord_subscriber_join_recv_1200channels(self):
1829 num_subscribers = 1
1830 num_channels = 1200
1831 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1832 num_channels = num_channels,
1833 cbs = (self.tls_verify, self.dhcp_verify,
1834 self.igmp_verify, self.traffic_verify),
1835 port_list = self.generate_port_list(num_subscribers, num_channels),
1836 negative_subscriber_auth = 'all')
1837 assert_equal(test_status, True)
1838
1839 def test_cord_subscriber_join_recv_1500channels(self):
1840 num_subscribers = 1
1841 num_channels = 1500
1842 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1843 num_channels = num_channels,
1844 cbs = (self.tls_verify, self.dhcp_verify,
1845 self.igmp_verify, self.traffic_verify),
1846 port_list = self.generate_port_list(num_subscribers, num_channels),
1847 negative_subscriber_auth = 'all')
1848 assert_equal(test_status, True)
1849
1850 def test_cord_subscriber_join_jump_100channels(self):
1851 num_subscribers = 1
1852 num_channels = 100
1853 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1854 num_channels = num_channels,
1855 cbs = (self.tls_verify, self.dhcp_jump_verify,
1856 self.igmp_jump_verify, self.traffic_verify),
1857 port_list = self.generate_port_list(num_subscribers, num_channels),
1858 negative_subscriber_auth = 'all')
1859 assert_equal(test_status, True)
1860 def test_cord_subscriber_join_jump_400channels(self):
1861 num_subscribers = 1
1862 num_channels = 400
1863 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1864 num_channels = num_channels,
1865 cbs = (self.tls_verify, self.dhcp_jump_verify,
1866 self.igmp_jump_verify, self.traffic_verify),
1867 port_list = self.generate_port_list(num_subscribers, num_channels),
1868 negative_subscriber_auth = 'all')
1869 assert_equal(test_status, True)
1870
1871 def test_cord_subscriber_join_jump_800channels(self):
1872 num_subscribers = 1
1873 num_channels = 800
1874 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1875 num_channels = num_channels,
1876 cbs = (self.tls_verify, self.dhcp_jump_verify,
1877 self.igmp_jump_verify, self.traffic_verify),
1878 port_list = self.generate_port_list(num_subscribers, num_channels),
1879 negative_subscriber_auth = 'all')
1880 assert_equal(test_status, True)
1881 def test_cord_subscriber_join_jump_1200channel(sself):
1882 num_subscribers = 1
1883 num_channels = 1200
1884 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1885 num_channels = num_channels,
1886 cbs = (self.tls_verify, self.dhcp_jump_verify,
1887 self.igmp_jump_verify, self.traffic_verify),
1888 port_list = self.generate_port_list(num_subscribers, num_channels),
1889 negative_subscriber_auth = 'all')
1890 assert_equal(test_status, True)
1891 def test_cord_subscriber_join_jump_1500channels(self):
1892 num_subscribers = 1
1893 num_channels = 1500
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
1902 def test_cord_subscriber_join_next_100channels(self):
1903 num_subscribers = 1
1904 num_channels = 100
1905 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1906 num_channels = num_channels,
1907 cbs = (self.tls_verify, self.dhcp_next_verify,
1908 self.igmp_next_verify, self.traffic_verify),
1909 port_list = self.generate_port_list(num_subscribers, num_channels),
1910 negative_subscriber_auth = 'all')
1911 assert_equal(test_status, True)
1912
1913 def test_cord_subscriber_join_next_400channels(self):
1914 num_subscribers = 1
1915 num_channels = 400
1916 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1917 num_channels = num_channels,
1918 cbs = (self.tls_verify, self.dhcp_next_verify,
1919 self.igmp_next_verify, self.traffic_verify),
1920 port_list = self.generate_port_list(num_subscribers, num_channels),
1921 negative_subscriber_auth = 'all')
1922 assert_equal(test_status, True)
1923
1924 def test_cord_subscriber_join_next_800channels(self):
1925 num_subscribers = 1
1926 num_channels = 800
1927 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1928 num_channels = num_channels,
1929 cbs = (self.tls_verify, self.dhcp_next_verify,
1930 self.igmp_next_verify, self.traffic_verify),
1931 port_list = self.generate_port_list(num_subscribers, num_channels),
1932 negative_subscriber_auth = 'all')
1933 assert_equal(test_status, True)
1934
1935
1936 def test_cord_subscriber_join_next_1200channels(self):
1937 num_subscribers = 1
1938 num_channels = 1200
1939 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1940 num_channels = num_channels,
1941 cbs = (self.tls_verify, self.dhcp_next_verify,
1942 self.igmp_next_verify, self.traffic_verify),
1943 port_list = self.generate_port_list(num_subscribers, num_channels),
1944 negative_subscriber_auth = 'all')
1945 assert_equal(test_status, True)
1946
1947 def test_cord_subscriber_join_next_1500channels(self):
1948 num_subscribers = 1
1949 num_channels = 1500
1950 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1951 num_channels = num_channels,
1952 cbs = (self.tls_verify, self.dhcp_next_verify,
1953 self.igmp_next_verify, self.traffic_verify),
1954 port_list = self.generate_port_list(num_subscribers, num_channels),
1955 negative_subscriber_auth = 'all')
1956 assert_equal(test_status, True)
1957
1958 @nottest
1959 def test_1k_cord_subscribers_authentication_with_dhcp_request_out_of_pool_ip_by_client_and_channel_surfing(self):
1960 ### """Test 1k subscribers auth with DHCP client requesting out of pool ip and join channel"""
1961 num_subscribers = 1000
1962 num_channels = 1
1963 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1964 num_channels = num_channels,
1965 cbs = (self.tls_verify, self.dhcp_client_requested_out_pool_ip_scenario, self.igmp_verify),
1966 port_list = self.generate_port_list(num_subscribers, num_channels), negative_subscriber_auth = 'all')
1967 assert_equal(test_status, True)
1968
1969 @nottest
1970 def test_1k_cord_subscribers_join_recv_100channel(self):
1971 ###"""Test 1k subscribers join and receive for 100 channels surfing"""
1972 num_subscribers = 1000
1973 num_channels = 100
1974 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1975 num_channels = num_channels,
1976 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
1977 port_list = self.generate_port_list(num_subscribers, num_channels),
1978 negative_subscriber_auth = 'all')
1979 assert_equal(test_status, True)
1980
1981 @nottest
1982 def test_1k_cord_subscribers_join_jump_100channel(self):
1983 ###"""Test 1k subscribers jump and receive for 100 channels surfing"""
1984 num_subscribers = 1000
1985 num_channels = 100
1986 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1987 num_channels = num_channels,
1988 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
1989 port_list = self.generate_port_list(num_subscribers, num_channels),
1990 negative_subscriber_auth = 'all')
1991 assert_equal(test_status, True)
1992
1993 @nottest
1994 def test_1k_cord_subscribers_join_next_100channel(self):
1995 ###"""Test 1k subscribers join next for 100 channels"""
1996 num_subscribers = 1000
1997 num_channels = 100
1998 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
1999 num_channels = num_channels,
2000 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2001 port_list = self.generate_port_list(num_subscribers, num_channels),
2002 negative_subscriber_auth = 'all')
2003 assert_equal(test_status, True)
2004
2005 @nottest
2006 def test_1k_cord_subscribers_join_recv_400channel(self):
2007 ###"""Test 1k subscribers join and receive for 400 channels surfing"""
2008 num_subscribers = 1000
2009 num_channels = 400
2010 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2011 num_channels = num_channels,
2012 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2013 port_list = self.generate_port_list(num_subscribers, num_channels),
2014 negative_subscriber_auth = 'all')
2015 assert_equal(test_status, True)
2016
2017 @nottest
2018 def test_1k_cord_subscribers_join_jump_400channel(self):
2019 ###"""Test 1k subscribers jump and receive for 400 channels surfing"""
2020 num_subscribers = 1000
2021 num_channels = 400
2022 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2023 num_channels = num_channels,
2024 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2025 port_list = self.generate_port_list(num_subscribers, num_channels),
2026 negative_subscriber_auth = 'all')
2027 assert_equal(test_status, True)
2028
2029 @nottest
2030 def test_1k_cord_subscribers_join_next_400channel(self):
2031 ###"""Test 1k subscribers join next for 400 channels"""
2032 num_subscribers = 1000
2033 num_channels = 400
2034 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2035 num_channels = num_channels,
2036 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2037 port_list = self.generate_port_list(num_subscribers, num_channels),
2038 negative_subscriber_auth = 'all')
2039 assert_equal(test_status, True)
2040
2041 @nottest
2042 def test_1k_cord_subscribers_join_recv_800channel(self):
2043 ###"""Test 1k subscribers join and receive for 800 channels surfing"""
2044 num_subscribers = 1000
2045 num_channels = 800
2046 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2047 num_channels = num_channels,
2048 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2049 port_list = self.generate_port_list(num_subscribers, num_channels),
2050 negative_subscriber_auth = 'all')
2051 assert_equal(test_status, True)
2052
2053 @nottest
2054 def test_1k_cord_subscribers_join_jump_800channel(self):
2055 ###"""Test 1k subscribers jump and receive for 800 channels surfing"""
2056 num_subscribers = 1000
2057 num_channels = 800
2058 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2059 num_channels = num_channels,
2060 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2061 port_list = self.generate_port_list(num_subscribers, num_channels),
2062 negative_subscriber_auth = 'all')
2063 assert_equal(test_status, True)
2064
2065 @nottest
2066 def test_1k_cord_subscribers_join_next_800channel(self):
2067 ###"""Test 1k subscribers join next for 800 channels"""
2068 num_subscribers = 1000
2069 num_channels = 800
2070 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2071 num_channels = num_channels,
2072 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2073 port_list = self.generate_port_list(num_subscribers, num_channels),
2074 negative_subscriber_auth = 'all')
2075 assert_equal(test_status, True)
2076
2077 @nottest
2078 def test_1k_cord_subscribers_join_recv_1200channel(self):
2079 ###"""Test 1k subscribers join and receive for 1200 channels surfing"""
2080 num_subscribers = 1000
2081 num_channels = 1200
2082 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2083 num_channels = num_channels,
2084 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2085 port_list = self.generate_port_list(num_subscribers, num_channels),
2086 negative_subscriber_auth = 'all')
2087 assert_equal(test_status, True)
2088
2089 @nottest
2090 def test_1k_cord_subscribers_join_jump_1200channel(self):
2091 ###"""Test 1k subscribers jump and receive for 1200 channels surfing"""
2092 num_subscribers = 1000
2093 num_channels = 1200
2094 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2095 num_channels = num_channels,
2096 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2097 port_list = self.generate_port_list(num_subscribers, num_channels),
2098 negative_subscriber_auth = 'all')
2099 assert_equal(test_status, True)
2100
2101 @nottest
2102 def test_1k_cord_subscribers_join_next_1200channel(self):
2103 ###"""Test 1k subscribers join next for 1200 channels"""
2104 num_subscribers = 1000
2105 num_channels = 1200
2106 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2107 num_channels = num_channels,
2108 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2109 port_list = self.generate_port_list(num_subscribers, num_channels),
2110 negative_subscriber_auth = 'all')
2111 assert_equal(test_status, True)
2112
2113 @nottest
2114 def test_1k_cord_subscribers_join_recv_1500channel(self):
2115 ###"""Test 1k subscribers join and receive for 1500 channels surfing"""
2116 num_subscribers = 1000
2117 num_channels = 1500
2118 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2119 num_channels = num_channels,
2120 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2121 port_list = self.generate_port_list(num_subscribers, num_channels),
2122 negative_subscriber_auth = 'all')
2123 assert_equal(test_status, True)
2124
2125 @nottest
2126 def test_1k_cord_subscribers_join_jump_1500channel(self):
2127 ###"""Test 1k subscribers jump and receive for 1500 channels surfing"""
2128 num_subscribers = 1000
2129 num_channels = 1500
2130 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2131 num_channels = num_channels,
2132 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2133 port_list = self.generate_port_list(num_subscribers, num_channels),
2134 negative_subscriber_auth = 'all')
2135 assert_equal(test_status, True)
2136
2137 @nottest
2138 def test_1k_cord_subscribers_join_next_1500channel(self):
2139 ###"""Test 1k subscribers join next for 1500 channels"""
2140 num_subscribers = 1000
2141 num_channels = 1500
2142 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2143 num_channels = num_channels,
2144 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2145 port_list = self.generate_port_list(num_subscribers, num_channels),
2146 negative_subscriber_auth = 'all')
2147 assert_equal(test_status, True)
2148
2149 @nottest
2150 def test_5k_cord_subscribers_join_recv_100channel(self):
2151 ###"""Test 5k subscribers join and receive for 100 channels surfing"""
2152 num_subscribers = 5000
2153 num_channels = 100
2154 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2155 num_channels = num_channels,
2156 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2157 port_list = self.generate_port_list(num_subscribers, num_channels),
2158 negative_subscriber_auth = 'all')
2159 assert_equal(test_status, True)
2160
2161 @nottest
2162 def test_5k_cord_subscribers_join_jump_100channel(self):
2163 ###"""Test 5k subscribers jump and receive for 100 channels surfing"""
2164 num_subscribers = 5000
2165 num_channels = 100
2166 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2167 num_channels = num_channels,
2168 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2169 port_list = self.generate_port_list(num_subscribers, num_channels),
2170 negative_subscriber_auth = 'all')
2171 assert_equal(test_status, True)
2172
2173 @nottest
2174 def test_5k_cord_subscribers_join_next_100channel(self):
2175 ###"""Test 5k subscribers join next for 100 channels"""
2176 num_subscribers = 5000
2177 num_channels = 100
2178 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2179 num_channels = num_channels,
2180 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2181 port_list = self.generate_port_list(num_subscribers, num_channels),
2182 negative_subscriber_auth = 'all')
2183 assert_equal(test_status, True)
2184
2185 @nottest
2186 def test_5k_cord_subscribers_join_recv_400channel(self):
2187 ###"""Test 5k subscribers join and receive for 400 channels surfing"""
2188 num_subscribers = 5000
2189 num_channels = 400
2190 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2191 num_channels = num_channels,
2192 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2193 port_list = self.generate_port_list(num_subscribers, num_channels),
2194 negative_subscriber_auth = 'all')
2195 assert_equal(test_status, True)
2196
2197 @nottest
2198 def test_5k_cord_subscribers_join_jump_400channel(self):
2199 ###"""Test 5k subscribers jump and receive for 400 channels surfing"""
2200 num_subscribers = 5000
2201 num_channels = 400
2202 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2203 num_channels = num_channels,
2204 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2205 port_list = self.generate_port_list(num_subscribers, num_channels),
2206 negative_subscriber_auth = 'all')
2207 assert_equal(test_status, True)
2208
2209 @nottest
2210 def test_5k_cord_subscribers_join_next_400channel(self):
2211 ###"""Test 5k subscribers join next for 400 channels"""
2212 num_subscribers = 5000
2213 num_channels = 400
2214 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2215 num_channels = num_channels,
2216 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2217 port_list = self.generate_port_list(num_subscribers, num_channels),
2218 negative_subscriber_auth = 'all')
2219 assert_equal(test_status, True)
2220
2221 @nottest
2222 def test_5k_cord_subscribers_join_recv_800channel(self):
2223 ###"""Test 5k subscribers join and receive for 800 channels surfing"""
2224 num_subscribers = 5000
2225 num_channels = 800
2226 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2227 num_channels = num_channels,
2228 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2229 port_list = self.generate_port_list(num_subscribers, num_channels),
2230 negative_subscriber_auth = 'all')
2231 assert_equal(test_status, True)
2232
2233 @nottest
2234 def test_5k_cord_subscribers_join_jump_800channel(self):
2235 ###"""Test 5k subscribers jump and receive for 800 channels surfing"""
2236 num_subscribers = 5000
2237 num_channels = 800
2238 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2239 num_channels = num_channels,
2240 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2241 port_list = self.generate_port_list(num_subscribers, num_channels),
2242 negative_subscriber_auth = 'all')
2243 assert_equal(test_status, True)
2244
2245 @nottest
2246 def test_5k_cord_subscribers_join_next_800channel(self):
2247 ###"""Test 5k subscribers join next for 800 channels"""
2248 num_subscribers = 5000
2249 num_channels = 800
2250 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2251 num_channels = num_channels,
2252 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2253 port_list = self.generate_port_list(num_subscribers, num_channels),
2254 negative_subscriber_auth = 'all')
2255 assert_equal(test_status, True)
2256
2257 @nottest
2258 def test_5k_cord_subscribers_join_recv_1200channel(self):
2259 ###"""Test 5k subscribers join and receive for 1200 channels surfing"""
2260 num_subscribers = 5000
2261 num_channels = 1200
2262 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2263 num_channels = num_channels,
2264 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2265 port_list = self.generate_port_list(num_subscribers, num_channels),
2266 negative_subscriber_auth = 'all')
2267 assert_equal(test_status, True)
2268
2269 @nottest
2270 def test_5k_cord_subscribers_join_jump_1200channel(self):
2271 ###"""Test 5k subscribers jump and receive for 1200 channels surfing"""
2272 num_subscribers = 5000
2273 num_channels = 1200
2274 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2275 num_channels = num_channels,
2276 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2277 port_list = self.generate_port_list(num_subscribers, num_channels),
2278 negative_subscriber_auth = 'all')
2279 assert_equal(test_status, True)
2280
2281 @nottest
2282 def test_5k_cord_subscribers_join_next_1200channel(self):
2283 ###"""Test 5k subscribers join next for 1200 channels"""
2284 num_subscribers = 5000
2285 num_channels = 1200
2286 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2287 num_channels = num_channels,
2288 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2289 port_list = self.generate_port_list(num_subscribers, num_channels),
2290 negative_subscriber_auth = 'all')
2291 assert_equal(test_status, True)
2292
2293 @nottest
2294 def test_5k_cord_subscribers_join_recv_1500channel(self):
2295 ###"""Test 5k subscribers join and receive for 1500 channels surfing"""
2296 num_subscribers = 5000
2297 num_channels = 1500
2298 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2299 num_channels = num_channels,
2300 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2301 port_list = self.generate_port_list(num_subscribers, num_channels),
2302 negative_subscriber_auth = 'all')
2303 assert_equal(test_status, True)
2304
2305 @nottest
2306 def test_5k_cord_subscribers_join_jump_1500channel(self):
2307 ###"""Test 5k subscribers jump and receive for 1500 channels surfing"""
2308 num_subscribers = 5000
2309 num_channels = 1500
2310 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2311 num_channels = num_channels,
2312 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2313 port_list = self.generate_port_list(num_subscribers, num_channels),
2314 negative_subscriber_auth = 'all')
2315 assert_equal(test_status, True)
2316
2317 @nottest
2318 def test_5k_cord_subscribers_join_next_1500channel(self):
2319 ###"""Test 5k subscribers join next for 1500 channels"""
2320 num_subscribers = 5000
2321 num_channels = 1500
2322 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2323 num_channels = num_channels,
2324 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2325 port_list = self.generate_port_list(num_subscribers, num_channels),
2326 negative_subscriber_auth = 'all')
2327 assert_equal(test_status, True)
2328
2329 @nottest
2330 def test_10k_cord_subscribers_join_recv_100channel(self):
2331 ###"""Test 10k subscribers join and receive for 100 channels surfing"""
2332 num_subscribers = 10000
2333 num_channels = 100
2334 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2335 num_channels = num_channels,
2336 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2337 port_list = self.generate_port_list(num_subscribers, num_channels),
2338 negative_subscriber_auth = 'all')
2339 assert_equal(test_status, True)
2340
2341 @nottest
2342 def test_10k_cord_subscribers_join_jump_100channel(self):
2343 ###"""Test 10k subscribers jump and receive for 100 channels surfing"""
2344 num_subscribers = 10000
2345 num_channels = 100
2346 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2347 num_channels = num_channels,
2348 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2349 port_list = self.generate_port_list(num_subscribers, num_channels),
2350 negative_subscriber_auth = 'all')
2351 assert_equal(test_status, True)
2352
2353 @nottest
2354 def test_10k_cord_subscribers_join_next_100channel(self):
2355 ###"""Test 10k subscribers join next for 100 channels"""
2356 num_subscribers = 10000
2357 num_channels = 100
2358 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2359 num_channels = num_channels,
2360 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2361 port_list = self.generate_port_list(num_subscribers, num_channels),
2362 negative_subscriber_auth = 'all')
2363 assert_equal(test_status, True)
2364
2365 @nottest
2366 def test_100k_cord_subscribers_join_recv_100channel(self):
2367 ###"""Test 100k subscribers join and receive for 100 channels surfing"""
2368 num_subscribers = 100000
2369 num_channels = 100
2370 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2371 num_channels = num_channels,
2372 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2373 port_list = self.generate_port_list(num_subscribers, num_channels),
2374 negative_subscriber_auth = 'all')
2375 assert_equal(test_status, True)
2376
2377 @nottest
2378 def test_100k_cord_subscribers_join_jump_100channel(self):
2379 ###"""Test 100k subscribers jump and receive for 100 channels surfing"""
2380 num_subscribers = 100000
2381 num_channels = 100
2382 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2383 num_channels = num_channels,
2384 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2385 port_list = self.generate_port_list(num_subscribers, num_channels),
2386 negative_subscriber_auth = 'all')
2387 assert_equal(test_status, True)
2388
2389 @nottest
2390 def test_100k_cord_subscribers_join_next_100channel(self):
2391 ###"""Test 100k subscribers join next for 100 channels"""
2392 num_subscribers = 100000
2393 num_channels = 100
2394 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2395 num_channels = num_channels,
2396 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2397 port_list = self.generate_port_list(num_subscribers, num_channels),
2398 negative_subscriber_auth = 'all')
2399 assert_equal(test_status, True)
2400
2401 @nottest
2402 def test_10k_cord_subscribers_join_recv_400channel(self):
2403 ###"""Test 10k subscribers join and receive for 400 channels surfing"""
2404 num_subscribers = 10000
2405 num_channels = 400
2406 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2407 num_channels = num_channels,
2408 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2409 port_list = self.generate_port_list(num_subscribers, num_channels),
2410 negative_subscriber_auth = 'all')
2411 assert_equal(test_status, True)
2412
2413 @nottest
2414 def test_10k_cord_subscribers_join_jump_400channel(self):
2415 ###"""Test 10k subscribers jump and receive for 400 channels surfing"""
2416 num_subscribers = 10000
2417 num_channels = 400
2418 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2419 num_channels = num_channels,
2420 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2421 port_list = self.generate_port_list(num_subscribers, num_channels),
2422 negative_subscriber_auth = 'all')
2423 assert_equal(test_status, True)
2424
2425 @nottest
2426 def test_10k_cord_subscribers_join_next_400channel(self):
2427 ###"""Test 10k subscribers join next for 400 channels"""
2428 num_subscribers = 10000
2429 num_channels = 400
2430 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2431 num_channels = num_channels,
2432 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2433 port_list = self.generate_port_list(num_subscribers, num_channels),
2434 negative_subscriber_auth = 'all')
2435 assert_equal(test_status, True)
2436
2437 @nottest
2438 def test_10k_cord_subscribers_join_recv_800channel(self):
2439 ###"""Test 10k subscribers join and receive for 800 channels surfing"""
2440 num_subscribers = 10000
2441 num_channels = 800
2442 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2443 num_channels = num_channels,
2444 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2445 port_list = self.generate_port_list(num_subscribers, num_channels),
2446 negative_subscriber_auth = 'all')
2447 assert_equal(test_status, True)
2448
2449 @nottest
2450 def test_10k_cord_subscribers_join_jump_800channel(self):
2451 ###"""Test 10k subscribers jump and receive for 800 channels surfing"""
2452 num_subscribers = 10000
2453 num_channels = 800
2454 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2455 num_channels = num_channels,
2456 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2457 port_list = self.generate_port_list(num_subscribers, num_channels),
2458 negative_subscriber_auth = 'all')
2459 assert_equal(test_status, True)
2460
2461 @nottest
2462 def test_10k_cord_subscribers_join_next_800channel(self):
2463 ###"""Test 10k subscribers join next for 800 channels"""
2464 num_subscribers = 10000
2465 num_channels = 800
2466 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2467 num_channels = num_channels,
2468 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2469 port_list = self.generate_port_list(num_subscribers, num_channels),
2470 negative_subscriber_auth = 'all')
2471 assert_equal(test_status, True)
2472
2473 @nottest
2474 def test_10k_cord_subscribers_join_recv_1200channel(self):
2475 ###"""Test 10k subscribers join and receive for 1200 channels surfing"""
2476 num_subscribers = 10000
2477 num_channels = 1200
2478 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2479 num_channels = num_channels,
2480 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2481 port_list = self.generate_port_list(num_subscribers, num_channels),
2482 negative_subscriber_auth = 'all')
2483 assert_equal(test_status, True)
2484
2485 @nottest
2486 def test_10k_cord_subscribers_join_jump_1200channel(self):
2487 ###"""Test 10k subscribers jump and receive for 1200 channels surfing"""
2488 num_subscribers = 10000
2489 num_channels = 1200
2490 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2491 num_channels = num_channels,
2492 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2493 port_list = self.generate_port_list(num_subscribers, num_channels),
2494 negative_subscriber_auth = 'all')
2495 assert_equal(test_status, True)
2496
2497 @nottest
2498 def test_10k_cord_subscribers_join_next_1200channel(self):
2499 ###"""Test 10k subscribers join next for 1200 channels"""
2500 num_subscribers = 10000
2501 num_channels = 1200
2502 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2503 num_channels = num_channels,
2504 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2505 port_list = self.generate_port_list(num_subscribers, num_channels),
2506 negative_subscriber_auth = 'all')
2507 assert_equal(test_status, True)
2508
2509 @nottest
2510 def test_10k_cord_subscribers_join_recv_1500channel(self):
2511 ###"""Test 10k subscribers join and receive for 1500 channels surfing"""
2512 num_subscribers = 10000
2513 num_channels = 1500
2514 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2515 num_channels = num_channels,
2516 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2517 port_list = self.generate_port_list(num_subscribers, num_channels),
2518 negative_subscriber_auth = 'all')
2519 assert_equal(test_status, True)
2520
2521 @nottest
2522 def test_10k_cord_subscribers_join_jump_1500channel(self):
2523 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2524 num_subscribers = 10000
2525 num_channels = 1500
2526 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2527 num_channels = num_channels,
2528 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2529 port_list = self.generate_port_list(num_subscribers, num_channels),
2530 negative_subscriber_auth = 'all')
2531 assert_equal(test_status, True)
2532
2533 @nottest
2534 def test_10k_cord_subscribers_join_next_1500channel(self):
2535 ###"""Test 10k subscribers join next for 1500 channels"""
2536 num_subscribers = 10000
2537 num_channels = 1500
2538 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2539 num_channels = num_channels,
2540 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2541 port_list = self.generate_port_list(num_subscribers, num_channels),
2542 negative_subscriber_auth = 'all')
2543 assert_equal(test_status, True)
2544
2545 @nottest
2546 def test_100k_cord_subscribers_join_recv_1500channel(self):
2547 ###"""Test 100k subscribers join and receive for 1500 channels surfing"""
2548 num_subscribers = 100000
2549 num_channels = 1500
2550 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2551 num_channels = num_channels,
2552 cbs = (self.tls_verify, self.dhcp_verify, self.igmp_verify),
2553 port_list = self.generate_port_list(num_subscribers, num_channels),
2554 negative_subscriber_auth = 'all')
2555 assert_equal(test_status, True)
2556
2557 @nottest
2558 def test_100k_cord_subscribers_join_jump_1500channel(self):
2559 ###"""Test 10k subscribers jump and receive for 1500 channels surfing"""
2560 num_subscribers = 100000
2561 num_channels = 1500
2562 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2563 num_channels = num_channels,
2564 cbs = (self.tls_verify, self.dhcp_jump_verify, self.igmp_jump_verify),
2565 port_list = self.generate_port_list(num_subscribers, num_channels),
2566 negative_subscriber_auth = 'all')
2567 assert_equal(test_status, True)
2568
2569 @nottest
2570 def test_100k_cord_subscribers_join_next_1500channel(self):
2571 ###"""Test 10k subscribers join next for 1500 channels"""
2572 num_subscribers = 100000
2573 num_channels = 1500
2574 test_status = self.subscriber_join_verify(num_subscribers = num_subscribers,
2575 num_channels = num_channels,
2576 cbs = (self.tls_verify, self.dhcp_next_verify, self.igmp_next_verify),
2577 port_list = self.generate_port_list(num_subscribers, num_channels),
2578 negative_subscriber_auth = 'all')
2579 assert_equal(test_status, True)
A.R Karthick4c4d0492017-05-26 19:23:05 -07002580
2581
2582
2583 def remove_olt(self):
A.R Karthick4c4d0492017-05-26 19:23:05 -07002584 OnosCtrl.uninstall_app(self.olt_app_file)
2585
2586 def config_olt(self, switch_map):
2587 controller = get_controller()
2588 OnosCtrl.install_app(self.olt_app_file)
2589 time.sleep(5)
2590 auth = ('karaf', 'karaf')
2591 #configure subscriber for every port on all the voltha devices
2592 for device, device_map in switch_map.iteritems():
2593 uni_ports = device_map['ports']
2594 uplink_vlan = device_map['uplink_vlan']
2595 for port in uni_ports:
2596 vlan = port
2597 rest_url = 'http://{}:8181/onos/olt/oltapp/{}/{}/{}'.format(controller,
2598 device,
2599 port,
2600 vlan)
2601 resp = requests.post(rest_url, auth = auth)
2602 assert_equal(resp.ok, True)
2603
2604 def test_cord_subscriber_voltha(self):
2605 """Test subscriber join next for channel surfing"""
2606 if self.VOLTHA_HOST is None:
2607 log_test.info('Skipping test as no voltha host')
2608 return
2609 voltha = VolthaCtrl(self.VOLTHA_HOST,
2610 rest_port = self.VOLTHA_REST_PORT,
2611 uplink_vlan_map = self.VOLTHA_UPLINK_VLAN_MAP)
2612 log_test.info('Enabling OLT instance for %s with mac %s' %(self.VOLTHA_OLT_TYPE, self.VOLTHA_OLT_MAC))
2613 status = voltha.enable_device(self.VOLTHA_OLT_TYPE, self.VOLTHA_OLT_MAC)
2614 assert_equal(status, True)
2615 time.sleep(10)
2616 switch_map = voltha.config(fake = self.VOLTHA_CONFIG_FAKE)
2617 if not switch_map:
2618 log_test.info('No voltha devices found')
2619 return
2620 log_test.info('Adding subscribers through OLT app')
2621 self.config_olt(switch_map)
2622 time.sleep(5)
2623 self.num_subscribers = 1
2624 self.num_channels = 1
2625 services = ('TLS', 'IGMP')
2626 test_status = self.subscriber_join_verify(num_subscribers = self.num_subscribers,
2627 num_channels = self.num_channels,
2628 cbs = (self.tls_verify, self.dhcp_next_verify,
2629 self.voltha_igmp_next_verify, self.traffic_verify),
2630 port_list = self.generate_port_list(self.num_subscribers,
2631 self.num_channels),
2632 services = services)
2633 assert_equal(test_status, True)