diff --git a/unittest/vslib/TestSwitchStateBase.cpp b/unittest/vslib/TestSwitchStateBase.cpp index 391302b4e0..29027edcb2 100644 --- a/unittest/vslib/TestSwitchStateBase.cpp +++ b/unittest/vslib/TestSwitchStateBase.cpp @@ -1,4 +1,5 @@ #include "SwitchStateBase.h" +#include "MACsecAttr.h" #include @@ -6,6 +7,31 @@ using namespace saivs; +//Test the following function: +//sai_status_t initialize_voq_switch_objects( +// _In_ uint32_t attr_count, +// _In_ const sai_attribute_t *attr_list); + +TEST(SwitchStateBase, initialize_voq_switch_objects) +{ + auto sc = std::make_shared(0, ""); + auto scc = std::make_shared(); + + SwitchStateBase ss( + 0x2100000000, + std::make_shared(0, scc), + sc); + + sai_attribute_t attr; + + attr.id = SAI_SWITCH_ATTR_TYPE; + attr.value.u32 = SAI_SWITCH_TYPE_FABRIC; + sc->m_fabricLaneMap = LaneMap::getDefaultLaneMap(0); + // Check the result of the initialize_voq_switch_objects + EXPECT_EQ(SAI_STATUS_SUCCESS, + ss.initialize_voq_switch_objects(1, &attr)); +} + TEST(SwitchStateBase, initialize_voq_switch) { auto sc = std::make_shared(0, ""); diff --git a/vslib/SwitchStateBase.cpp b/vslib/SwitchStateBase.cpp index bc93e6a522..2c0faf846a 100644 --- a/vslib/SwitchStateBase.cpp +++ b/vslib/SwitchStateBase.cpp @@ -3018,6 +3018,16 @@ sai_status_t SwitchStateBase::initialize_voq_switch_objects( if (attr_list[i].value.u32 != SAI_SWITCH_TYPE_VOQ) { // Switch is not being set as VOQ type. + SWSS_LOG_NOTICE("initialize_voq_switch_objects the value is %d", attr_list[i].value.u32); + if (attr_list[i].value.u32 == SAI_SWITCH_TYPE_FABRIC) + { + SWSS_LOG_NOTICE("about to config fabric ports"); + if (m_switchConfig->m_fabricLaneMap) + { + CHECK_STATUS(create_fabric_ports()); + CHECK_STATUS(set_fabric_port_list()); + } + } return SAI_STATUS_SUCCESS; } else