
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.




##########################################################################################
###########################  CORD CERTIFICATION PROGRAM (CCP)   ##########################
##########################################################################################

##############   This file lists the mandatory test cases to be executed  ################
##################   for certifying a Fabric switch against SEBA1.0   ####################





### Functional Test cases ###
## Total #test cases - 19

functional.FabricSW_OF_Bridging_TC_0001
functional.FabricSW_OF_PacketInArp_TC_0005
functional.FabricSW_OF_PacketInUDP_TC_0010
functional.FabricSW_OF_L2FloodQinQ_TC_0015
functional.FabricSW_OF_L2UnicastTagged_TC_0020
functional.FabricSW_OF_EcmpGroupMod_TC_0025
functional.FabricSW_OF_FloodGroupMod_TC_0030
functional.FabricSW_OF_Mtu1500_TC_0035
functional.FabricSW_OF__24ECMPL3_TC_0040
functional.FabricSW_OF__24UcastTagged_TC_0045
functional.FabricSW_OF__32ECMPL3_TC_0050
functional.FabricSW_OF__32UcastTagged_TC_0055
functional.FabricSW_OF_EAPOL_TC_0060
functional.FabricSW_OF_ARP_TC_0065
functional.FabricSW_OF_VLANPUSH_TC_0070
functional.FabricSW_OF_LLDP_TC_0075
functional.FabricSW_OF_BDDP_TC_0080
functional.FabricSW_OF_VLANXConnect_Single_TC_0085
#functional.FabricSW_OF_VLANXConnect_Multi_TC_0090
#functional.FabricSW_OF_Counters_TC_0095




### Operational Test cases ###
## Total #test cases - 8

##################   Operational tests have to be run in the following order: run the Operational tests ###########
##################   with OFTEST controller only (ONOS controller is NOT required)                      ###########

operational.FabricSW_OP_TC_0005
operational.FabricSW_OP_TC_0010
operational.FabricSW_OP_TC_0025
operational.FabricSW_OP_TC_0030

##################   then uncomment these tests cases to run with both OFTEST and ONOS controller configured ###########

#operational.FabricSW_OP_TC_0015
#operational.FabricSW_OP_TC_0020
#operational.FabricSW_OP_TC_0035
#operational.FabricSW_OP_TC_0040



### Scalability Test cases ###
## Total #test cases - 5

##################   Scalability tests have to be with both OFTEST and ONOS controller configured  ###########

#scalability.FabricSW_Scale_Base_TC_0005
#scalability.FabricSW_Scale_Base_TC_0010
#scalability.FabricSW_Scale_Base_TC_0015
#scalability.FabricSW_Scale_Base_TC_0020
#scalability.FabricSW_Scale_Base_TC_0025

