
# 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 - 








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