Skip to content

Commit f3933e0

Browse files
authored
[unittest] Bump code coverage on meta to over 80% (sonic-net#949)
1 parent ecb95a8 commit f3933e0

File tree

2 files changed

+309
-0
lines changed

2 files changed

+309
-0
lines changed

unittest/lib/test_sai_redis_nexthopgroup.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,9 @@ TEST(libsairedis, next_hop_group)
2828

2929
EXPECT_NE(SAI_STATUS_SUCCESS, api->create_next_hop_group_members(0,0,0,0,SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR,0,0));
3030
EXPECT_NE(SAI_STATUS_SUCCESS, api->remove_next_hop_group_members(0,0,SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR,0));
31+
32+
EXPECT_NE(SAI_STATUS_SUCCESS, api->create_next_hop_group_map(&id,0,0,0));
33+
EXPECT_NE(SAI_STATUS_SUCCESS, api->remove_next_hop_group_map(0));
34+
EXPECT_NE(SAI_STATUS_SUCCESS, api->set_next_hop_group_map_attribute(0,0));
35+
EXPECT_NE(SAI_STATUS_SUCCESS, api->get_next_hop_group_map_attribute(0,0,0));
3136
}

unittest/meta/TestMeta.cpp

+304
Original file line numberDiff line numberDiff line change
@@ -752,3 +752,307 @@ TEST(Meta, quad_bulk_nat_entry)
752752

753753
EXPECT_EQ(SAI_STATUS_SUCCESS, m.bulkRemove(2, e, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
754754
}
755+
756+
TEST(Meta, getStats)
757+
{
758+
Meta m(std::make_shared<MetaTestSaiInterface>());
759+
760+
sai_object_id_t switchId = 0;
761+
762+
sai_attribute_t attr;
763+
764+
attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
765+
attr.value.booldata = true;
766+
767+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1, &attr));
768+
769+
sai_stat_id_t counter_ids[2];
770+
771+
counter_ids[0] = SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS;
772+
counter_ids[1] = SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS;
773+
774+
uint64_t counters[2];
775+
776+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.getStats(SAI_OBJECT_TYPE_SWITCH, switchId, 2, counter_ids, counters));
777+
}
778+
779+
TEST(Meta, getStatsExt)
780+
{
781+
Meta m(std::make_shared<MetaTestSaiInterface>());
782+
783+
sai_object_id_t switchId = 0;
784+
785+
sai_attribute_t attr;
786+
787+
attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
788+
attr.value.booldata = true;
789+
790+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1, &attr));
791+
792+
sai_stat_id_t counter_ids[2];
793+
794+
counter_ids[0] = SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS;
795+
counter_ids[1] = SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS;
796+
797+
uint64_t counters[2];
798+
799+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.getStatsExt(SAI_OBJECT_TYPE_SWITCH, switchId, 2, counter_ids, SAI_STATS_MODE_READ, counters));
800+
}
801+
802+
TEST(Meta, clearStats)
803+
{
804+
Meta m(std::make_shared<MetaTestSaiInterface>());
805+
806+
sai_object_id_t switchId = 0;
807+
808+
sai_attribute_t attr;
809+
810+
attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
811+
attr.value.booldata = true;
812+
813+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1, &attr));
814+
815+
sai_stat_id_t counter_ids[2];
816+
817+
counter_ids[0] = SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS;
818+
counter_ids[1] = SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS;
819+
820+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.clearStats(SAI_OBJECT_TYPE_SWITCH, switchId, 2, counter_ids));
821+
}
822+
823+
TEST(Meta, quad_bulk_my_sid_entry)
824+
{
825+
Meta m(std::make_shared<MetaTestSaiInterface>());
826+
827+
sai_object_id_t switchId = 0;
828+
829+
sai_attribute_t attr;
830+
831+
attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
832+
attr.value.booldata = true;
833+
834+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1, &attr));
835+
836+
sai_object_id_t vlanId = 0;
837+
838+
attr.id = SAI_VLAN_ATTR_VLAN_ID;
839+
attr.value.u16 = 2;
840+
841+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_VLAN, &vlanId, switchId, 1, &attr));
842+
843+
sai_object_id_t vrId = 0;
844+
845+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_VIRTUAL_ROUTER, &vrId, switchId, 0, &attr));
846+
847+
// create
848+
849+
sai_my_sid_entry_t e[2];
850+
851+
memset(e, 0, sizeof(e));
852+
853+
e[0].switch_id = switchId;
854+
e[1].switch_id = switchId;
855+
856+
e[0].vr_id = vrId;
857+
e[1].vr_id = vrId;
858+
859+
e[0].locator_block_len = 1;
860+
e[1].locator_block_len = 2;
861+
862+
uint32_t attr_count[2];
863+
864+
attr_count[0] = 1;
865+
attr_count[1] = 1;
866+
867+
sai_attribute_t list1[2];
868+
sai_attribute_t list2[2];
869+
870+
list1[0].id = SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR;
871+
list1[0].value.s32 = SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E;
872+
873+
list2[0].id = SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR;
874+
list2[0].value.s32 = SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E;
875+
876+
std::vector<const sai_attribute_t*> alist;
877+
878+
alist.push_back(list1);
879+
alist.push_back(list2);
880+
881+
const sai_attribute_t **attr_list = alist.data();
882+
883+
sai_status_t statuses[2];
884+
885+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.bulkCreate(2, e, attr_count, attr_list, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
886+
887+
// set
888+
889+
sai_attribute_t setlist[2];
890+
891+
setlist[0].id = SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR;
892+
setlist[0].value.s32 = SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X;
893+
894+
setlist[1].id = SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR;
895+
setlist[1].value.s32 = SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X;
896+
897+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.bulkSet(2, e, setlist, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
898+
899+
// remove
900+
901+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.bulkRemove(2, e, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
902+
}
903+
904+
TEST(Meta, quad_bulk_inseg_entry)
905+
{
906+
Meta m(std::make_shared<MetaTestSaiInterface>());
907+
908+
sai_object_id_t switchId = 0;
909+
910+
sai_attribute_t attr;
911+
912+
attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
913+
attr.value.booldata = true;
914+
915+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1, &attr));
916+
917+
sai_object_id_t vlanId = 0;
918+
919+
attr.id = SAI_VLAN_ATTR_VLAN_ID;
920+
attr.value.u16 = 2;
921+
922+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_VLAN, &vlanId, switchId, 1, &attr));
923+
924+
sai_object_id_t vrId = 0;
925+
926+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_VIRTUAL_ROUTER, &vrId, switchId, 0, &attr));
927+
928+
// create
929+
930+
sai_inseg_entry_t e[2];
931+
932+
memset(e, 0, sizeof(e));
933+
934+
e[0].switch_id = switchId;
935+
e[1].switch_id = switchId;
936+
937+
e[0].label = 1;
938+
e[1].label = 2;
939+
940+
uint32_t attr_count[2];
941+
942+
attr_count[0] = 1;
943+
attr_count[1] = 1;
944+
945+
sai_attribute_t list1[2];
946+
sai_attribute_t list2[2];
947+
948+
list1[0].id = SAI_L2MC_ENTRY_ATTR_PACKET_ACTION;
949+
list1[0].value.s32 = SAI_PACKET_ACTION_FORWARD;
950+
951+
list2[0].id = SAI_L2MC_ENTRY_ATTR_PACKET_ACTION;
952+
list2[0].value.s32 = SAI_PACKET_ACTION_FORWARD;
953+
954+
std::vector<const sai_attribute_t*> alist;
955+
956+
alist.push_back(list1);
957+
alist.push_back(list2);
958+
959+
const sai_attribute_t **attr_list = alist.data();
960+
961+
sai_status_t statuses[2];
962+
963+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.bulkCreate(2, e, attr_count, attr_list, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
964+
965+
// set
966+
967+
sai_attribute_t setlist[2];
968+
969+
setlist[0].id = SAI_L2MC_ENTRY_ATTR_PACKET_ACTION;
970+
setlist[0].value.s32 = SAI_PACKET_ACTION_DROP;
971+
972+
setlist[1].id = SAI_L2MC_ENTRY_ATTR_PACKET_ACTION;
973+
setlist[1].value.s32 = SAI_PACKET_ACTION_DROP;
974+
975+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.bulkSet(2, e, setlist, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
976+
977+
// remove
978+
979+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.bulkRemove(2, e, SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR, statuses));
980+
}
981+
982+
TEST(Meta, logSet)
983+
{
984+
Meta m(std::make_shared<MetaTestSaiInterface>());
985+
986+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.logSet(SAI_API_SWITCH, SAI_LOG_LEVEL_NOTICE));
987+
988+
#pragma GCC diagnostic push
989+
#pragma GCC diagnostic ignored "-Wconversion"
990+
EXPECT_EQ(SAI_STATUS_INVALID_PARAMETER, m.logSet((sai_api_t)1000, SAI_LOG_LEVEL_NOTICE));
991+
992+
EXPECT_EQ(SAI_STATUS_INVALID_PARAMETER, m.logSet(SAI_API_SWITCH, (sai_log_level_t)1000));
993+
#pragma GCC diagnostic pop
994+
995+
}
996+
997+
TEST(Meta, meta_sai_on_switch_shutdown_request)
998+
{
999+
Meta m(std::make_shared<MetaTestSaiInterface>());
1000+
1001+
sai_object_id_t switchId = 0;
1002+
1003+
sai_attribute_t attr;
1004+
1005+
attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
1006+
attr.value.booldata = true;
1007+
1008+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1, &attr));
1009+
1010+
m.meta_sai_on_switch_shutdown_request(0);
1011+
m.meta_sai_on_switch_shutdown_request(switchId);
1012+
m.meta_sai_on_switch_shutdown_request(0x21000000000001);
1013+
}
1014+
1015+
TEST(Meta, meta_sai_on_switch_state_change)
1016+
{
1017+
Meta m(std::make_shared<MetaTestSaiInterface>());
1018+
1019+
sai_object_id_t switchId = 0;
1020+
1021+
sai_attribute_t attr;
1022+
1023+
attr.id = SAI_SWITCH_ATTR_INIT_SWITCH;
1024+
attr.value.booldata = true;
1025+
1026+
EXPECT_EQ(SAI_STATUS_SUCCESS, m.create(SAI_OBJECT_TYPE_SWITCH, &switchId, SAI_NULL_OBJECT_ID, 1, &attr));
1027+
1028+
m.meta_sai_on_switch_state_change(0, SAI_SWITCH_OPER_STATUS_UP);
1029+
m.meta_sai_on_switch_state_change(switchId, SAI_SWITCH_OPER_STATUS_UP);
1030+
m.meta_sai_on_switch_state_change(0x21000000000001, SAI_SWITCH_OPER_STATUS_UP);
1031+
1032+
#pragma GCC diagnostic push
1033+
#pragma GCC diagnostic ignored "-Wconversion"
1034+
m.meta_sai_on_switch_state_change(0, (sai_switch_oper_status_t)1000);
1035+
m.meta_sai_on_switch_state_change(switchId, (sai_switch_oper_status_t)1000);
1036+
m.meta_sai_on_switch_state_change(0x21000000000001, (sai_switch_oper_status_t)1000);
1037+
#pragma GCC diagnostic pop
1038+
}
1039+
1040+
TEST(Meta, populate)
1041+
{
1042+
Meta m(std::make_shared<MetaTestSaiInterface>());
1043+
1044+
swss::TableDump dump;
1045+
1046+
dump["SAI_OBJECT_TYPE_ACL_TABLE:oid:0x7000000000626"]["SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE"] = "true";
1047+
dump["SAI_OBJECT_TYPE_ROUTE_ENTRY:{\"dest\":\"10.0.0.0/32\",\"switch_id\":\"oid:0x21000000000000\",\"vr\":\"oid:0x3000000000022\"}"]
1048+
["SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID"] = "oid:0x60000000005cf";
1049+
dump["SAI_OBJECT_TYPE_VLAN:oid:0x2600000000002f"]["SAI_VLAN_ATTR_VLAN_ID"] = "2";
1050+
dump["SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000"]["SAI_SWITCH_ATTR_PORT_LIST"] =
1051+
"2:oid:0x1000000000002,oid:0x1000000000003";
1052+
dump["SAI_OBJECT_TYPE_ACL_ENTRY:oid:0x8000000000635"]["SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT"] = "oid:0x1000000000003";
1053+
dump["SAI_OBJECT_TYPE_ACL_ENTRY:oid:0x8000000000635"]["SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORTS"] = "2:oid:0x1000000000002,oid:0x1000000000003";
1054+
dump["SAI_OBJECT_TYPE_ACL_ENTRY:oid:0x8000000000635"]["SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT"] = "oid:0x1000000000003";
1055+
dump["SAI_OBJECT_TYPE_ACL_ENTRY:oid:0x8000000000635"]["SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST"] = "2:oid:0x1000000000002,oid:0x1000000000003";
1056+
1057+
m.populate(dump);
1058+
}

0 commit comments

Comments
 (0)