(&key1_obj, &val1_obj, operation);
ret = KeyTree_obj->append_commit_node(cfgptr1);
EXPECT_EQ(ret, UNC_RC_SUCCESS);
- ConfigNode *cfgptr2 = new CacheElementUtil<key_vlan_map_t, pfcdrv_val_vlan_map_t,
+ ConfigNode *cfgptr2 = new CacheElementUtil<key_vlan_map_t,
+ pfcdrv_val_vlan_map_t,
uint32_t>(&key2_obj, &val2_obj, operation);
ret = KeyTree_obj->append_commit_node(cfgptr2);
EXPECT_EQ(ret, UNC_RC_SUCCESS);
cfgptr_link_update_sw01sw02 = NULL;
EXPECT_EQ(ret, UNC_RC_SUCCESS);
}
+
+TEST(append_commit_node, FlowList) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_flowlist_t key_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ val_flowlist_t val_obj;
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.flowlist_name, "flowlistone", sizeof(key_obj.flowlist_name));
+ ConfigNode *cfgptr = new CacheElementUtil<key_flowlist_t, val_flowlist_t,
+ uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, Retrive_Flow_List) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_flowlist_t key_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ val_flowlist_t val_obj;
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.flowlist_name, "flowlistone", sizeof(key_obj.flowlist_name));
+ ConfigNode *cfgptr = new CacheElementUtil<key_flowlist_t, val_flowlist_t,
+ uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_flowlist_t, val_flowlist_t, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_flowlist_t, val_flowlist_t,
+ uint32_t>*> (cfgptr);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.flowlist_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->flowlist_name));
+ pfc_log_info("Flow-list name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->flowlist_name));
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+}
+
+TEST(get_parenttype, KT_FLOW_LIST) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ unc_key_type_t keytype = KeyTree_obj->get_parenttype(UNC_KT_FLOWLIST);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_ROOT);
+}
+
+TEST(append_commit_node, same_root_level) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vtn key_obj;
+ memcpy(key_obj.vtn_name, "vtn1", sizeof(key_obj.vtn_name));
+
+ val_vtn val_obj;
+ memcpy(val_obj.description, "vtn1_des", sizeof(val_obj.description));
+
+ ConfigNode *cfgptr = new CacheElementUtil<key_vtn, val_vtn, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+
+ key_flowlist_t key_obj1;
+ memset(&key_obj1, 0, sizeof(key_obj1));
+ val_flowlist_t val_obj1;
+ memset(&val_obj1, 0, sizeof(val_obj1));
+ memcpy(key_obj1.flowlist_name, "flowlistone", sizeof(key_obj1.flowlist_name));
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_flowlist_t,
+ val_flowlist_t, uint32_t>
+ (&key_obj1, &val_obj1, operation);
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vtn, val_vtn, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vtn, val_vtn, uint32_t>*> (cfgptr);
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->vtn_name));
+ EXPECT_STREQ(reinterpret_cast<char*>(val_obj.description),
+ reinterpret_cast<char*>(tmp_ptr->get_val_structure()->description));
+ pfc_log_info("vtn name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vtn_name));
+ pfc_log_info("Description= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->description));
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ cfgptr1 = itr_ptr->NextItem();
+ CacheElementUtil<key_flowlist_t, val_flowlist_t, uint32_t> *tmp_ptr1 =
+ static_cast<CacheElementUtil<key_flowlist_t, val_flowlist_t,
+ uint32_t>*> (cfgptr1);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj1.flowlist_name),
+ reinterpret_cast<char*>(tmp_ptr1->get_key_structure()->flowlist_name));
+ pfc_log_info("Flow-list name= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->flowlist_name));
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr1->get_key_name().c_str(), tmp_ptr1->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr1->get_parent_key_name().c_str(),
+ tmp_ptr1->get_key_generate().c_str());
+
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(get_parenttype, KT_FLOW_LIST_ENTRY) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ unc_key_type_t keytype = KeyTree_obj->get_parenttype(UNC_KT_FLOWLIST_ENTRY);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_FLOWLIST);
+}
+
+TEST(append_commit_node, FlowList_Entry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+ key_flowlist_t key_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ val_flowlist_t val_obj;
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.flowlist_name, "flowlistone", sizeof(key_obj.flowlist_name));
+
+ ConfigNode *cfgptr = new CacheElementUtil<key_flowlist_t,
+ val_flowlist_t, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_flowlist_entry key_flolistentry;
+ val_flowlist_entry val_flowlistentry;
+ memset(&key_flolistentry, 0, sizeof(key_flolistentry));
+ memset(&val_flowlistentry, 0, sizeof(val_flowlistentry));
+ memcpy(key_flolistentry.flowlist_key.flowlist_name, "flowlistone",
+ sizeof(key_obj.flowlist_name));
+ key_flolistentry.sequence_num = 20;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_flowlist_entry,
+ val_flowlist_entry, uint32_t>
+ (&key_flolistentry, &val_flowlistentry, operation);
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, FlowList_Entry_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+ key_flowlist_t key_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ val_flowlist_t val_obj;
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.flowlist_name, "flowlistone", sizeof(key_obj.flowlist_name));
+
+ ConfigNode *cfgptr = new CacheElementUtil<key_flowlist_t, val_flowlist_t,
+ uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_flowlist_entry key_flolistentry;
+ val_flowlist_entry val_flowlistentry;
+ memset(&key_flolistentry, 0, sizeof(key_flolistentry));
+ memset(&val_flowlistentry, 0, sizeof(val_flowlistentry));
+ memcpy(key_flolistentry.flowlist_key.flowlist_name, "flowlistone",
+ sizeof(key_obj.flowlist_name));
+ key_flolistentry.sequence_num = 20;
+ memcpy(val_flowlistentry.mac_dst, "10", sizeof(val_flowlistentry.mac_dst));
+ memcpy(val_flowlistentry.mac_src, "11", sizeof(val_flowlistentry.mac_src));
+ val_flowlistentry.mac_eth_type = 12;
+ val_flowlistentry.vlan_priority = 13;
+ val_flowlistentry.ip_dscp = 14;
+ val_flowlistentry.ip_proto = 15;
+ val_flowlistentry.l4_dst_port = 16;
+ val_flowlistentry.l4_src_port = 17;
+ val_flowlistentry.l4_src_port_endpt = 18;
+ val_flowlistentry.l4_dst_port_endpt = 19;
+ val_flowlistentry.icmp_type = 21;
+ val_flowlistentry.icmp_code = 22;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_flowlist_entry,
+ val_flowlist_entry, uint32_t>
+ (&key_flolistentry, &val_flowlistentry, operation);
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_flowlist_t, val_flowlist_t, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_flowlist_t, val_flowlist_t,
+ uint32_t>*> (cfgptr);
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.flowlist_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->flowlist_name));
+ pfc_log_info("kt_flowlist:flowlistname= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->flowlist_name));
+ pfc_log_info(":Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ cfgptr1 = itr_ptr->NextItem();
+ CacheElementUtil<key_flowlist_entry, val_flowlist_entry, uint32_t> *tmp_ptr1 =
+ static_cast<CacheElementUtil<key_flowlist_entry, val_flowlist_entry,
+ uint32_t>*> (cfgptr1);
+ EXPECT_STREQ(reinterpret_cast<char*>(key_flolistentry.flowlist_key.
+ flowlist_name),
+ reinterpret_cast<char*>(tmp_ptr1->get_key_structure()->
+ flowlist_key.flowlist_name));
+ pfc_log_info("kt_flowlist_entry:flowlistname= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->flowlist_key.flowlist_name));
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr1->get_key_name().c_str(), tmp_ptr1->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr1->get_parent_key_name().c_str(),
+ tmp_ptr1->get_key_generate().c_str());
+ pfc_log_info("kt_flowlist_entry:sequence number= %d", tmp_ptr1->
+ get_key_structure()->sequence_num);
+ pfc_log_info("kt_flowlistentry:mac_dst= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_val_structure()->mac_dst));
+ pfc_log_info("kt_flowlistentry:mac_src= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_val_structure()->mac_src));
+ pfc_log_info("kt_flowlistentry:mac_eth_type= %d", tmp_ptr1->
+ get_val_structure()->mac_eth_type);
+ pfc_log_info("kt_flowlistentry:vlan_priority= %d", tmp_ptr1->
+ get_val_structure()->vlan_priority);
+ pfc_log_info("kt_flowlistentry:ip_dscp= %d", tmp_ptr1->
+ get_val_structure()->ip_dscp);
+ pfc_log_info("kt_flowlistentry:ip_proto= %d", tmp_ptr1->
+ get_val_structure()->ip_proto);
+ pfc_log_info("kt_flowlistentry:l4_dst_port= %d", tmp_ptr1->
+ get_val_structure()->l4_dst_port);
+ pfc_log_info("kt_flowlistentry:l4_src_port= %d", tmp_ptr1->
+ get_val_structure()->l4_src_port);
+ pfc_log_info("kt_flowlistentry:l4_src_port_endpt= %d", tmp_ptr1->
+ get_val_structure()->l4_src_port_endpt);
+ pfc_log_info("kt_flowlistentry:l4_dst_port_endpt= %d", tmp_ptr1->
+ get_val_structure()->l4_dst_port_endpt);
+ pfc_log_info("kt_flowlistentry:icmp_type= %d", tmp_ptr1->
+ get_val_structure()->icmp_type);
+ pfc_log_info("kt_flowlistentry:icmp_code= %d", tmp_ptr1->
+ get_val_structure()->icmp_code);
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+}
+
+TEST(append_audit_node, parent_not_exist_flowlist_entry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+ key_flowlist_entry key_flolistentry;
+ val_flowlist_entry val_flowlistentry;
+ memset(&key_flolistentry, 0, sizeof(key_flolistentry));
+ memset(&val_flowlistentry, 0, sizeof(val_flowlistentry));
+ memcpy(key_flolistentry.flowlist_key.flowlist_name, "flowlistone",
+ sizeof(key_flolistentry.flowlist_key.flowlist_name));
+ key_flolistentry.sequence_num = 20;
+ memcpy(val_flowlistentry.mac_dst, "10", sizeof(val_flowlistentry.mac_dst));
+ memcpy(val_flowlistentry.mac_src, "11", sizeof(val_flowlistentry.mac_src));
+
+ ConfigNode *cfgptr = new CacheElementUtil<key_flowlist_entry,
+ val_flowlist_entry, uint32_t>
+ (&key_flolistentry, &val_flowlistentry, operation);
+ int ret = KeyTree_obj->append_audit_node(cfgptr);
+
+ delete cfgptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC);
+}
+
+TEST(add_child_to_hash, FlowList_Success) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+ int operation = 1;
+ key_flowlist_t key_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ val_flowlist_t val_obj;
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.flowlist_name, "flowlistone", sizeof(key_obj.flowlist_name));
+
+ ConfigNode *cfgptr = new CacheElementUtil<key_flowlist_t,
+ val_flowlist_t, uint32_t>
+ (&key_obj, &val_obj, operation);
+ int ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ delete KeyTree_obj;
+ delete cfgptr;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, FlowListEntry_Success) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+ int operation = 1;
+ key_flowlist_t key_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ val_flowlist_t val_obj;
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.flowlist_name, "flowlistone", sizeof(key_obj.flowlist_name));
+
+ ConfigNode *cfgptr = new CacheElementUtil<key_flowlist_t,
+ val_flowlist_t, uint32_t>
+ (&key_obj, &val_obj, operation);
+ int ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_flowlist_entry key_flolistentry;
+ val_flowlist_entry val_flowlistentry;
+ memset(&key_flolistentry, 0, sizeof(key_flolistentry));
+ memset(&val_flowlistentry, 0, sizeof(val_flowlistentry));
+ memcpy(key_flolistentry.flowlist_key.flowlist_name, "flowlistone",
+ sizeof(key_flolistentry.flowlist_key.flowlist_name));
+ key_flolistentry.sequence_num = 20;
+ memcpy(val_flowlistentry.mac_dst, "10", sizeof(val_flowlistentry.mac_dst));
+ memcpy(val_flowlistentry.mac_src, "11", sizeof(val_flowlistentry.mac_src));
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_flowlist_entry,
+ val_flowlist_entry, uint32_t>
+ (&key_flolistentry, &val_flowlistentry, operation);
+ ret = KeyTree_obj->add_child_to_hash(cfgptr1);
+ delete KeyTree_obj;
+ delete cfgptr;
+ delete cfgptr1;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(get_parenttype, VtnFlowFilter) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+ unc_key_type_t keytype = KeyTree_obj->get_parenttype(UNC_KT_VTN_FLOWFILTER);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VTN);
+}
+
+TEST(get_parenttype, VtnFlowFilter_Entry) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+ unc_key_type_t keytype = KeyTree_obj->
+ get_parenttype(UNC_KT_VTN_FLOWFILTER_ENTRY);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VTN_FLOWFILTER);
+}
+
+TEST(append_commit_node, VtnFlowFilter) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vtn_flowfilter key_obj;
+ val_flowfilter val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ key_obj.input_direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vtn_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, VtnFlowFilter_Entry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vtn_flowfilter key_obj;
+ val_flowfilter val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ key_obj.input_direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vtn_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vtn_flowfilter_entry key_VFlowFilterEntry;
+ val_vtn_flowfilter_entry val_VFlowFilterEntry;
+ memset(&key_VFlowFilterEntry, 0, sizeof(key_VFlowFilterEntry));
+ memset(&val_VFlowFilterEntry, 0, sizeof(val_VFlowFilterEntry));
+ memcpy(key_VFlowFilterEntry.flowfilter_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_VFlowFilterEntry.flowfilter_key.vtn_key.vtn_name));
+ key_VFlowFilterEntry.flowfilter_key.input_direction = 1;
+ key_VFlowFilterEntry.sequence_num = 20;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vtn_flowfilter_entry,
+ val_vtn_flowfilter_entry, uint32_t>
+ (&key_VFlowFilterEntry, &val_VFlowFilterEntry, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, VtnFlowFilter_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vtn_flowfilter key_obj;
+ val_flowfilter val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ key_obj.input_direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vtn_flowfilter,
+ val_flowfilter, uint32_t>(&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vtn_flowfilter, val_flowfilter, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vtn_flowfilter, val_flowfilter,
+ uint32_t>*> (cfgptr);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ vtn_key.vtn_name));
+ pfc_log_info("VtnFlowFilter Vtn Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vtn_key.vtn_name));
+ pfc_log_info("VtnFlowFilter Input_direction= %d",
+ tmp_ptr->get_key_structure()->input_direction);
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, VtnFlowFilter_Entry_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vtn_flowfilter key_obj;
+ val_flowfilter val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ key_obj.input_direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vtn_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vtn_flowfilter_entry key_VFlowFilterEntry;
+ val_vtn_flowfilter_entry val_VFlowFilterEntry;
+ memset(&key_VFlowFilterEntry, 0, sizeof(key_VFlowFilterEntry));
+ memset(&val_VFlowFilterEntry, 0, sizeof(val_VFlowFilterEntry));
+ memcpy(key_VFlowFilterEntry.flowfilter_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_VFlowFilterEntry.flowfilter_key.vtn_key.vtn_name));
+ key_VFlowFilterEntry.flowfilter_key.input_direction = 1;
+ key_VFlowFilterEntry.sequence_num = 20;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vtn_flowfilter_entry,
+ val_vtn_flowfilter_entry, uint32_t>
+ (&key_VFlowFilterEntry, &val_VFlowFilterEntry, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vtn_flowfilter, val_flowfilter, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vtn_flowfilter, val_flowfilter,
+ uint32_t>*> (cfgptr);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ vtn_key.vtn_name));
+ pfc_log_info("VtnFlowFilter Vtn Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vtn_key.vtn_name));
+ pfc_log_info("VtnFlowFilter Input_direction= %d",
+ tmp_ptr->get_key_structure()->input_direction);
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ cfgptr1 = itr_ptr->NextItem();
+ CacheElementUtil<key_vtn_flowfilter_entry, val_vtn_flowfilter_entry,
+ uint32_t> *tmp_ptr1 =
+ static_cast<CacheElementUtil<key_vtn_flowfilter_entry,
+ val_vtn_flowfilter_entry, uint32_t>*> (cfgptr1);
+ EXPECT_STREQ(reinterpret_cast<char*>(key_VFlowFilterEntry.flowfilter_key.
+ vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr1->get_key_structure()->
+ flowfilter_key.vtn_key.vtn_name));
+ pfc_log_info("VtnFlowFilter Vtn Name= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->flowfilter_key.vtn_key.vtn_name));
+ pfc_log_info("VtnFlowFilter Input_direction= %d",
+ tmp_ptr1->get_key_structure()->flowfilter_key.input_direction);
+ pfc_log_info("vtnflowfilterentry:sequence number= %d", tmp_ptr1->
+ get_key_structure()->sequence_num);
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr1->get_key_name().c_str(), tmp_ptr1->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr1->get_parent_key_name().c_str(),
+ tmp_ptr1->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, VtnFlowFilter_success) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vtn_flowfilter key_obj;
+ val_flowfilter val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ key_obj.input_direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vtn_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_obj, &val_obj, operation);
+ int ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ delete KeyTree_obj;
+ delete cfgptr;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, VtnFlowFilterEntry_Success) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vtn_flowfilter key_obj;
+ val_flowfilter val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ key_obj.input_direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vtn_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vtn_flowfilter_entry key_VFlowFilterEntry;
+ val_vtn_flowfilter_entry val_VFlowFilterEntry;
+ memset(&key_VFlowFilterEntry, 0, sizeof(key_VFlowFilterEntry));
+ memset(&val_VFlowFilterEntry, 0, sizeof(val_VFlowFilterEntry));
+ memcpy(key_VFlowFilterEntry.flowfilter_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_VFlowFilterEntry.flowfilter_key.vtn_key.vtn_name));
+ key_VFlowFilterEntry.flowfilter_key.input_direction = 1;
+ key_VFlowFilterEntry.sequence_num = 20;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vtn_flowfilter_entry,
+ val_vtn_flowfilter_entry, uint32_t>
+ (&key_VFlowFilterEntry, &val_VFlowFilterEntry, operation);
+
+ ret = KeyTree_obj->add_child_to_hash(cfgptr1);
+ delete KeyTree_obj;
+ delete cfgptr;
+ delete cfgptr1;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_audit_node, parent_not_exist_vtnflofilter_entry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+ key_vtn_flowfilter_entry key_VFlowFilterEntry;
+ val_vtn_flowfilter_entry val_VFlowFilterEntry;
+ memset(&key_VFlowFilterEntry, 0, sizeof(key_VFlowFilterEntry));
+ memset(&val_VFlowFilterEntry, 0, sizeof(val_VFlowFilterEntry));
+ memcpy(key_VFlowFilterEntry.flowfilter_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_VFlowFilterEntry.flowfilter_key.vtn_key.vtn_name));
+ key_VFlowFilterEntry.flowfilter_key.input_direction = 1;
+ key_VFlowFilterEntry.sequence_num = 20;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vtn_flowfilter_entry,
+ val_vtn_flowfilter_entry, uint32_t>
+ (&key_VFlowFilterEntry, &val_VFlowFilterEntry, operation);
+ int ret = KeyTree_obj->append_audit_node(cfgptr);
+
+ delete cfgptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC);
+}
+
+TEST(get_parenttype, VbrFlowFilter) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vtn key_obj;
+ val_vtn val_obj;
+ memcpy(key_obj.vtn_name, "vtn1", sizeof(key_obj.vtn_name));
+ memcpy(val_obj.description, "vtn1_des", sizeof(val_obj.description));
+
+ unc_key_type_t keytype = KeyTree_obj->get_parenttype(UNC_KT_VBR_FLOWFILTER);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VBRIDGE);
+}
+
+TEST(append_commit_node, VbrFlowFilter) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_flowfilter_t key_obj;
+ val_flowfilter_t val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.vbr_key.vbridge_name));
+ key_obj.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_flowfilter_t,
+ val_flowfilter_t, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, VbrFlowFilter_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_flowfilter_t key_obj;
+ val_flowfilter_t val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.vbr_key.vbridge_name));
+ key_obj.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_flowfilter_t,
+ val_flowfilter_t, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vbr_flowfilter_t, val_flowfilter_t, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vbr_flowfilter_t, val_flowfilter_t,
+ uint32_t>*> (cfgptr);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.vbr_key.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ vbr_key.vtn_key.vtn_name));
+ pfc_log_info("Vtn Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vbr_key.vtn_key.vtn_name));
+ pfc_log_info("Vbridge Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vbr_key.vbridge_name));
+ pfc_log_info("Direction= %d", tmp_ptr->get_key_structure()->direction);
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, VbrFlowFilter_Success) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_flowfilter_t key_obj;
+ val_flowfilter_t val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.vbr_key.vbridge_name));
+ key_obj.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_flowfilter_t,
+ val_flowfilter_t, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ int ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ delete KeyTree_obj;
+ delete cfgptr;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(get_parenttype, VbrFlowFilterEntry) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ unc_key_type_t keytype = KeyTree_obj->
+ get_parenttype(UNC_KT_VBR_FLOWFILTER_ENTRY);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VBR_FLOWFILTER);
+}
+
+TEST(append_commit_node, VbrFlowFilterEntry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_flowfilter_t key_obj;
+ val_flowfilter_t val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.vbr_key.vbridge_name, "vbridge1", sizeof(key_obj.vbr_key.
+ vbridge_name));
+ key_obj.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_flowfilter_t,
+ val_flowfilter_t, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vbr_flowfilter_entry key_vbrflowfilterentry;
+ val_flowfilter_entry val_vbrflowfilterentry;
+ memset(&key_vbrflowfilterentry, 0, sizeof(key_vbrflowfilterentry));
+ memset(&val_vbrflowfilterentry, 0, sizeof(val_vbrflowfilterentry));
+ memcpy(key_vbrflowfilterentry.flowfilter_key.vbr_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vbrflowfilterentry.flowfilter_key.vbr_key.vtn_key.
+ vtn_name));
+ memcpy(key_vbrflowfilterentry.flowfilter_key.vbr_key.vbridge_name,
+ "vbridge1", sizeof(key_vbrflowfilterentry.flowfilter_key.vbr_key.
+ vbridge_name));
+ key_vbrflowfilterentry.flowfilter_key.direction = 1;
+ key_vbrflowfilterentry.sequence_num = 20;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vbr_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>
+ (&key_vbrflowfilterentry, &val_vbrflowfilterentry, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, VbrFlowFilterEntry_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_flowfilter_t key_obj;
+ val_flowfilter_t val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.vbr_key.vbridge_name));
+ key_obj.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_flowfilter_t,
+ val_flowfilter_t, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vbr_flowfilter_entry key_vbrflowfilterentry;
+ val_flowfilter_entry val_vbrflowfilterentry;
+ memset(&key_vbrflowfilterentry, 0, sizeof(key_vbrflowfilterentry));
+ memset(&val_vbrflowfilterentry, 0, sizeof(val_vbrflowfilterentry));
+ memcpy(key_vbrflowfilterentry.flowfilter_key.vbr_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vbrflowfilterentry.flowfilter_key.vbr_key.
+ vtn_key.vtn_name));
+ memcpy(key_vbrflowfilterentry.flowfilter_key.vbr_key.vbridge_name,
+ "vbridge1", sizeof(key_vbrflowfilterentry.flowfilter_key.vbr_key.
+ vbridge_name));
+ key_vbrflowfilterentry.flowfilter_key.direction = 1;
+ key_vbrflowfilterentry.sequence_num = 20;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vbr_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>
+ (&key_vbrflowfilterentry, &val_vbrflowfilterentry, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vbr_flowfilter_t, val_flowfilter_t, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vbr_flowfilter_t, val_flowfilter_t,
+ uint32_t>*> (cfgptr);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.vbr_key.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ vbr_key.vtn_key.vtn_name));
+ pfc_log_info("Vtn Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vbr_key.vtn_key.vtn_name));
+ pfc_log_info("Vbridge Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vbr_key.vbridge_name));
+ pfc_log_info("Direction= %d", tmp_ptr->get_key_structure()->direction);
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ cfgptr1 = itr_ptr->NextItem();
+ CacheElementUtil<key_vbr_flowfilter_entry, val_flowfilter_entry,
+ uint32_t> *tmp_ptr1 =
+ static_cast<CacheElementUtil<key_vbr_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>*> (cfgptr1);
+ EXPECT_STREQ(reinterpret_cast<char*>(key_vbrflowfilterentry.flowfilter_key.
+ vbr_key.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr1->get_key_structure()->
+ flowfilter_key.vbr_key.vtn_key.vtn_name));
+ pfc_log_info("Entry:Vtn Name= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->
+ flowfilter_key.vbr_key.vtn_key.vtn_name));
+ pfc_log_info("Entry:Vbridge Name= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->flowfilter_key.vbr_key.vbridge_name));
+ pfc_log_info("Entry:Direction= %d", tmp_ptr1->get_key_structure()->
+ flowfilter_key.direction);
+ pfc_log_info("Entry:SequenceNumber= %d", tmp_ptr1->get_key_structure()->
+ sequence_num);
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr1->get_key_name().c_str(), tmp_ptr1->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr1->get_parent_key_name().c_str(),
+ tmp_ptr1->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, VbrFlowFilterEntry_Success) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_flowfilter_t key_obj;
+ val_flowfilter_t val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.vbr_key.vbridge_name));
+ key_obj.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_flowfilter_t,
+ val_flowfilter_t, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vbr_flowfilter_entry key_vbrflowfilterentry;
+ val_flowfilter_entry val_vbrflowfilterentry;
+ memset(&key_vbrflowfilterentry, 0, sizeof(key_vbrflowfilterentry));
+ memset(&val_vbrflowfilterentry, 0, sizeof(val_vbrflowfilterentry));
+ memcpy(key_vbrflowfilterentry.flowfilter_key.vbr_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vbrflowfilterentry.flowfilter_key.vbr_key.vtn_key.
+ vtn_name));
+ memcpy(key_vbrflowfilterentry.flowfilter_key.vbr_key.vbridge_name,
+ "vbridge1", sizeof(key_vbrflowfilterentry.flowfilter_key.vbr_key.
+ vbridge_name));
+ key_vbrflowfilterentry.flowfilter_key.direction = 1;
+ key_vbrflowfilterentry.sequence_num = 20;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vbr_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>
+ (&key_vbrflowfilterentry, &val_vbrflowfilterentry, operation);
+
+ ret = KeyTree_obj->add_child_to_hash(cfgptr1);
+ delete KeyTree_obj;
+ delete cfgptr;
+ delete cfgptr1;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_audit_node, parent_not_exist_vbrflowfilter_entry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+ key_vbr_flowfilter_entry key_vbrflowfilterentry;
+ val_flowfilter_entry val_vbrflowfilterentry;
+ memset(&key_vbrflowfilterentry, 0, sizeof(key_vbrflowfilterentry));
+ memset(&val_vbrflowfilterentry, 0, sizeof(val_vbrflowfilterentry));
+ memcpy(key_vbrflowfilterentry.flowfilter_key.vbr_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vbrflowfilterentry.flowfilter_key.vbr_key.
+ vtn_key.vtn_name));
+ memcpy(key_vbrflowfilterentry.flowfilter_key.vbr_key.vbridge_name,
+ "vbridge1", sizeof(key_vbrflowfilterentry.flowfilter_key.
+ vbr_key.vbridge_name));
+ key_vbrflowfilterentry.flowfilter_key.direction = 1;
+ key_vbrflowfilterentry.sequence_num = 20;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>
+ (&key_vbrflowfilterentry, &val_vbrflowfilterentry, operation);
+ uint32_t ret = KeyTree_obj->append_audit_node(cfgptr);
+ delete cfgptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC);
+}
+
+TEST(get_parenttype, VbrIfFlowFilter) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ unc_key_type_t keytype = KeyTree_obj->get_parenttype(UNC_KT_VBRIF_FLOWFILTER);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VBR_IF);
+}
+
+TEST(append_commit_node, VbrIfFlowFilter) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_if_flowfilter key_obj;
+ pfcdrv_val_vbrif_vextif val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.if_key.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.if_key.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.if_key.vbr_key.vbridge_name));
+ memcpy(key_obj.if_key.if_name, "Interface1", sizeof(key_obj.if_key.if_name));
+ key_obj.direction = 2;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_if_flowfilter,
+ pfcdrv_val_vbrif_vextif, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, VbrIfFlowFilter_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_if_flowfilter key_obj;
+ pfcdrv_val_vbrif_vextif val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.if_key.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.if_key.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.if_key.vbr_key.vbridge_name));
+ memcpy(key_obj.if_key.if_name, "Interface1", sizeof(key_obj.if_key.if_name));
+ key_obj.direction = 2;
+ val_obj.interface_type = 3;
+ memcpy(val_obj.vexternal_name, "Vexterna1", sizeof(val_obj.vexternal_name));
+ memcpy(val_obj.vext_if_name, "vextifname1", sizeof(val_obj.vext_if_name));
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_if_flowfilter,
+ pfcdrv_val_vbrif_vextif, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vbr_if_flowfilter, pfcdrv_val_vbrif_vextif,
+ uint32_t> *tmp_ptr = static_cast<CacheElementUtil<key_vbr_if_flowfilter,
+ pfcdrv_val_vbrif_vextif, uint32_t>*> (cfgptr);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.if_key.vbr_key.vtn_key.
+ vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ if_key.vbr_key.vtn_key.vtn_name));
+ pfc_log_info("vtnname= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.vbr_key.vtn_key.vtn_name));
+ pfc_log_info("vbridgename= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.vbr_key.vbridge_name));
+ pfc_log_info("InterfaceName= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.if_name));
+ pfc_log_info("Direction= %d", tmp_ptr->get_key_structure()->direction);
+ pfc_log_info("Interface_type= %d", tmp_ptr->get_val_structure()->
+ interface_type);
+ pfc_log_info("VexternalName= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->vexternal_name));
+ pfc_log_info("VexternalIfName= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->vext_if_name));
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info(":ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, VbrIfFlowFilter_Success) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_if_flowfilter key_obj;
+ pfcdrv_val_vbrif_vextif val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.if_key.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.if_key.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.if_key.vbr_key.vbridge_name));
+ memcpy(key_obj.if_key.if_name, "Interface1", sizeof(key_obj.if_key.if_name));
+ key_obj.direction = 2;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_if_flowfilter,
+ pfcdrv_val_vbrif_vextif, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ delete KeyTree_obj;
+ delete cfgptr;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(get_parenttype, VbrIfFlowFilterEntry) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ unc_key_type_t keytype = KeyTree_obj->
+ get_parenttype(UNC_KT_VBRIF_FLOWFILTER_ENTRY);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VBRIF_FLOWFILTER);
+}
+
+TEST(append_commit_node, VbrIfFlowFilterEntry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_if_flowfilter key_obj;
+ pfcdrv_val_vbrif_vextif val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.if_key.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.if_key.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.if_key.vbr_key.vbridge_name));
+ memcpy(key_obj.if_key.if_name, "Interface1", sizeof(key_obj.if_key.if_name));
+ key_obj.direction = 2;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_if_flowfilter,
+ pfcdrv_val_vbrif_vextif, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vbr_if_flowfilter_entry key_vbrifflowfilterentry;
+ pfcdrv_val_flowfilter_entry val_vbrifflowfilterentry;
+ memset(&key_vbrifflowfilterentry, 0, sizeof(key_vbrifflowfilterentry));
+ memset(&val_vbrifflowfilterentry, 0, sizeof(val_vbrifflowfilterentry));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.vbr_key.vtn_key.
+ vtn_name, "vtn1", sizeof(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.vbr_key.vbridge_name,
+ "vbridge1", sizeof(key_vbrifflowfilterentry.flowfilter_key.if_key.
+ vbr_key.vbridge_name));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.if_name,
+ "Interface1", sizeof(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.if_name));
+ key_vbrifflowfilterentry.flowfilter_key.direction = 2;
+ key_vbrifflowfilterentry.sequence_num = 3;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vbr_if_flowfilter_entry,
+ pfcdrv_val_flowfilter_entry, uint32_t>
+ (&key_vbrifflowfilterentry, &val_vbrifflowfilterentry, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, VbrIfFlowFilterEntry_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_if_flowfilter key_obj;
+ pfcdrv_val_vbrif_vextif val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.if_key.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.if_key.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.if_key.vbr_key.vbridge_name));
+ memcpy(key_obj.if_key.if_name, "Interface1", sizeof(key_obj.if_key.if_name));
+ key_obj.direction = 2;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_if_flowfilter,
+ pfcdrv_val_vbrif_vextif, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vbr_if_flowfilter_entry key_vbrifflowfilterentry;
+ pfcdrv_val_flowfilter_entry val_vbrifflowfilterentry;
+ memset(&key_vbrifflowfilterentry, 0, sizeof(key_vbrifflowfilterentry));
+ memset(&val_vbrifflowfilterentry, 0, sizeof(val_vbrifflowfilterentry));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.vbr_key.vtn_key.
+ vtn_name, "vtn1", sizeof(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.vbr_key.vbridge_name,
+ "vbridge1", sizeof(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.vbr_key.vbridge_name));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.if_name,
+ "Interface1", sizeof(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.if_name));
+ key_vbrifflowfilterentry.flowfilter_key.direction = 2;
+ key_vbrifflowfilterentry.sequence_num = 3;
+ val_vbrifflowfilterentry.val_vbrif_vextif.interface_type = 4;
+ val_vbrifflowfilterentry.val_ff_entry.priority = 5;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vbr_if_flowfilter_entry,
+ pfcdrv_val_flowfilter_entry, uint32_t>
+ (&key_vbrifflowfilterentry, &val_vbrifflowfilterentry, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vbr_if_flowfilter,
+ pfcdrv_val_vbrif_vextif, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vbr_if_flowfilter,
+ pfcdrv_val_vbrif_vextif, uint32_t>*> (cfgptr);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.if_key.vbr_key.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ if_key.vbr_key.vtn_key.vtn_name));
+ pfc_log_info("vtnname= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.vbr_key.vtn_key.vtn_name));
+ pfc_log_info("vbridgename= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.vbr_key.vbridge_name));
+ pfc_log_info("InterfaceName= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.if_name));
+ pfc_log_info("Direction= %d", tmp_ptr->get_key_structure()->direction);
+ pfc_log_info("Interface_type= %d", tmp_ptr->get_val_structure()->
+ interface_type);
+ pfc_log_info("VexternalName= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->vexternal_name));
+ pfc_log_info("VexternalIfName= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->vext_if_name));
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ cfgptr1 = itr_ptr->NextItem();
+ CacheElementUtil<key_vbr_if_flowfilter_entry,
+ pfcdrv_val_flowfilter_entry, uint32_t> *tmp_ptr1 =
+ static_cast<CacheElementUtil<key_vbr_if_flowfilter_entry,
+ pfcdrv_val_flowfilter_entry, uint32_t>*> (cfgptr1);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.vbr_key.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr1->get_key_structure()->
+ flowfilter_key.if_key.vbr_key.vtn_key.vtn_name));
+ pfc_log_info("Entry:vtnname= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->flowfilter_key.if_key.vbr_key.vtn_key.
+ vtn_name));
+ pfc_log_info("Entry:VbridgeName= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->flowfilter_key.if_key.vbr_key.
+ vbridge_name));
+ pfc_log_info("Entry:Interfacename= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->flowfilter_key.if_key.if_name));
+ pfc_log_info("Entry:Direction= %d", tmp_ptr1->get_key_structure()->
+ flowfilter_key.direction);
+ pfc_log_info("Entry:sequence_num= %d", tmp_ptr1->get_key_structure()->
+ sequence_num);
+ pfc_log_info("Entry:interface_type= %d", tmp_ptr1->get_val_structure()->
+ val_vbrif_vextif.interface_type);
+ pfc_log_info("Entry:Priority= %d", tmp_ptr1->get_val_structure()->
+ val_ff_entry.priority);
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr1->get_key_name().c_str(), tmp_ptr1->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr1->get_parent_key_name().c_str(),
+ tmp_ptr1->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, VbrIfFlowFilterEntry_Success) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_if_flowfilter key_obj;
+ pfcdrv_val_vbrif_vextif val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.if_key.vbr_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_obj.if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_obj.if_key.vbr_key.vbridge_name, "vbridge1",
+ sizeof(key_obj.if_key.vbr_key.vbridge_name));
+ memcpy(key_obj.if_key.if_name, "Interface1", sizeof(key_obj.if_key.if_name));
+ key_obj.direction = 2;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vbr_if_flowfilter,
+ pfcdrv_val_vbrif_vextif, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vbr_if_flowfilter_entry key_vbrifflowfilterentry;
+ pfcdrv_val_flowfilter_entry val_vbrifflowfilterentry;
+ memset(&key_vbrifflowfilterentry, 0, sizeof(key_vbrifflowfilterentry));
+ memset(&val_vbrifflowfilterentry, 0, sizeof(val_vbrifflowfilterentry));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.vbr_key.vtn_key.
+ vtn_name, "vtn1", sizeof(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.vbr_key.vbridge_name,
+ "vbridge1", sizeof(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.vbr_key.vbridge_name));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.if_name,
+ "Interface1", sizeof(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.if_name));
+ key_vbrifflowfilterentry.flowfilter_key.direction = 2;
+ key_vbrifflowfilterentry.sequence_num = 3;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vbr_if_flowfilter_entry,
+ pfcdrv_val_flowfilter_entry, uint32_t>
+ (&key_vbrifflowfilterentry, &val_vbrifflowfilterentry, operation);
+
+ ret = KeyTree_obj->add_child_to_hash(cfgptr1);
+ delete KeyTree_obj;
+ delete cfgptr;
+ delete cfgptr1;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, parent_not_exist_vbrifflowfilterentry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vbr_if_flowfilter_entry key_vbrifflowfilterentry;
+ pfcdrv_val_flowfilter_entry val_vbrifflowfilterentry;
+ memset(&key_vbrifflowfilterentry, 0, sizeof(key_vbrifflowfilterentry));
+ memset(&val_vbrifflowfilterentry, 0, sizeof(val_vbrifflowfilterentry));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.vbr_key.vtn_key.
+ vtn_name, "vtnr2", sizeof(key_vbrifflowfilterentry.flowfilter_key.
+ if_key.vbr_key.vtn_key.vtn_name));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.
+ vbr_key.vbridge_name,
+ "vbridge2", sizeof(key_vbrifflowfilterentry.flowfilter_key.if_key.
+ vbr_key.vbridge_name));
+ memcpy(key_vbrifflowfilterentry.flowfilter_key.if_key.if_name,
+ "Interface3", sizeof(key_vbrifflowfilterentry.
+ flowfilter_key.if_key.if_name));
+ key_vbrifflowfilterentry.flowfilter_key.direction = 4;
+ key_vbrifflowfilterentry.sequence_num = 5;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vbr_if_flowfilter_entry,
+ pfcdrv_val_flowfilter_entry, uint32_t>
+ (&key_vbrifflowfilterentry, &val_vbrifflowfilterentry, operation);
+
+ uint32_t ret = KeyTree_obj->append_audit_node(cfgptr1);
+ delete KeyTree_obj;
+ delete cfgptr1;
+ KeyTree_obj = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC);
+}
+
+TEST(get_parenttype, Vterminal) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ unc_key_type_t keytype = KeyTree_obj->get_parenttype(UNC_KT_VTERMINAL);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VTN);
+}
+
+TEST(append_commit_node, Vterminal) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm key_obj;
+ val_vterm val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ memcpy(key_obj.vterminal_name, "vtermina1", sizeof(key_obj.vterminal_name));
+ memcpy(val_obj.controller_id, "odc1", sizeof(val_obj.controller_id));
+ memcpy(val_obj.domain_id, "domain1", sizeof(val_obj.domain_id));
+ memcpy(val_obj.vterm_description, "VterminalDescription",
+ sizeof(val_obj.vterm_description));
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm, val_vterm, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, Vterminal_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm key_obj;
+ val_vterm val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ memcpy(key_obj.vterminal_name, "vtermina1", sizeof(key_obj.vterminal_name));
+ memcpy(val_obj.controller_id, "odc1", sizeof(val_obj.controller_id));
+ memcpy(val_obj.domain_id, "domain1", sizeof(val_obj.domain_id));
+ memcpy(val_obj.vterm_description, "VterminalDescription",
+ sizeof(val_obj.vterm_description));
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm, val_vterm, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vterm, val_vterm, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vterm, val_vterm, uint32_t>*> (cfgptr);
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ vtn_key.vtn_name));
+ pfc_log_info("vtnname= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vtn_key.vtn_name));
+ pfc_log_info("vterminalname= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vterminal_name));
+ pfc_log_info("controllerid= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->controller_id));
+ pfc_log_info("domainid= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->domain_id));
+ pfc_log_info("vterm_description= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->vterm_description));
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, Vterminal) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm key_obj;
+ val_vterm val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ memcpy(key_obj.vterminal_name, "vtermina1", sizeof(key_obj.vterminal_name));
+ memcpy(val_obj.controller_id, "odc1", sizeof(val_obj.controller_id));
+ memcpy(val_obj.domain_id, "domain1", sizeof(val_obj.domain_id));
+ memcpy(val_obj.vterm_description, "VterminalDescription",
+ sizeof(val_obj.vterm_description));
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm, val_vterm, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ delete KeyTree_obj;
+ delete cfgptr;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(get_parenttype, VterminalIf) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ unc_key_type_t keytype = KeyTree_obj->get_parenttype(UNC_KT_VTERM_IF);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VTERMINAL);
+}
+
+TEST(append_commit_node, VterminalIf) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm key_obj;
+ val_vterm val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ memcpy(key_obj.vterminal_name, "vtermina1", sizeof(key_obj.vterminal_name));
+ memcpy(val_obj.controller_id, "odc1", sizeof(val_obj.controller_id));
+ memcpy(val_obj.domain_id, "domain1", sizeof(val_obj.domain_id));
+ memcpy(val_obj.vterm_description, "VterminalDescription",
+ sizeof(val_obj.vterm_description));
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm, val_vterm, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vterm_if key_vtermif;
+ val_vterm_if val_vtermif;
+ memset(&key_vtermif, 0, sizeof(key_vtermif));
+ memset(&val_vtermif, 0, sizeof(val_vtermif));
+ memcpy(key_vtermif.vterm_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_vtermif.vterm_key.vtn_key.vtn_name));
+ memcpy(key_vtermif.vterm_key.vterminal_name, "vtermina1",
+ sizeof(key_vtermif.vterm_key.vterminal_name));
+ memcpy(key_vtermif.if_name, "vterminalIf", sizeof(key_vtermif.if_name));
+ val_vtermif.admin_status = 1;
+ val_vtermif.portmap.vlan_id = 567;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vterm_if,
+ val_vterm_if, uint32_t>
+ (&key_vtermif, &val_vtermif, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, VterminalIf_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm key_obj;
+ val_vterm val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ memcpy(key_obj.vterminal_name, "vtermina1", sizeof(key_obj.vterminal_name));
+ memcpy(val_obj.controller_id, "odc1", sizeof(val_obj.controller_id));
+ memcpy(val_obj.domain_id, "domain1", sizeof(val_obj.domain_id));
+ memcpy(val_obj.vterm_description, "VterminalDescription",
+ sizeof(val_obj.vterm_description));
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm, val_vterm, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vterm, val_vterm, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vterm, val_vterm, uint32_t>*> (cfgptr);
+ EXPECT_STREQ(reinterpret_cast<char*>(key_obj.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ vtn_key.vtn_name));
+ pfc_log_info("vtnname= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vtn_key.vtn_name));
+ pfc_log_info("vterminalname= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->vterminal_name));
+ pfc_log_info("controllerid= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->controller_id));
+ pfc_log_info("domainid= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->domain_id));
+ pfc_log_info("vterm_description= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_val_structure()->vterm_description));
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ key_vterm_if key_vtermif;
+ val_vterm_if val_vtermif;
+ memset(&key_vtermif, 0, sizeof(key_vtermif));
+ memset(&val_vtermif, 0, sizeof(val_vtermif));
+ memcpy(key_vtermif.vterm_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_vtermif.vterm_key.vtn_key.vtn_name));
+ memcpy(key_vtermif.vterm_key.vterminal_name, "vtermina1",
+ sizeof(key_vtermif.vterm_key.vterminal_name));
+ memcpy(key_vtermif.if_name, "vterminalIf", sizeof(key_vtermif.if_name));
+ val_vtermif.admin_status = 1;
+ val_vtermif.portmap.vlan_id = 567;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vterm_if,
+ val_vterm_if, uint32_t>
+ (&key_vtermif, &val_vtermif, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ cfgptr1 = itr_ptr->NextItem();
+ CacheElementUtil<key_vterm_if, val_vterm_if, uint32_t> *tmp_ptr1 =
+ static_cast<CacheElementUtil<key_vterm_if,
+ val_vterm_if, uint32_t>*> (cfgptr1);
+ EXPECT_STREQ(reinterpret_cast<char*>(key_vtermif.vterm_key.vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr1->get_key_structure()->
+ vterm_key.vtn_key.vtn_name));
+ pfc_log_info("VtermIF:vtnname= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->vterm_key.vtn_key.vtn_name));
+ pfc_log_info("VtermIF:vterminalname= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->vterm_key.vterminal_name));
+ pfc_log_info("VtermIF:VterminalIfName= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->if_name));
+ pfc_log_info("VtermIF:AdminStatus= %d", tmp_ptr1->get_val_structure()->
+ admin_status);
+ pfc_log_info("VtermIF:VlanId= %d", tmp_ptr1->get_val_structure()->
+ portmap.vlan_id);
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr1->get_key_name().c_str(), tmp_ptr1->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr1->get_parent_key_name().c_str(),
+ tmp_ptr1->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, VterminalIf) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm key_obj;
+ val_vterm val_obj;
+ memset(&key_obj, 0, sizeof(key_obj));
+ memset(&val_obj, 0, sizeof(val_obj));
+ memcpy(key_obj.vtn_key.vtn_name, "vtn1", sizeof(key_obj.vtn_key.vtn_name));
+ memcpy(key_obj.vterminal_name, "vtermina1", sizeof(key_obj.vterminal_name));
+ memcpy(val_obj.controller_id, "odc1", sizeof(val_obj.controller_id));
+ memcpy(val_obj.domain_id, "domain1", sizeof(val_obj.domain_id));
+ memcpy(val_obj.vterm_description, "VterminalDescription",
+ sizeof(val_obj.vterm_description));
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm, val_vterm, uint32_t>
+ (&key_obj, &val_obj, operation);
+
+ uint32_t ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vterm_if key_vtermif;
+ val_vterm_if val_vtermif;
+ memset(&key_vtermif, 0, sizeof(key_vtermif));
+ memset(&val_vtermif, 0, sizeof(val_vtermif));
+ memcpy(key_vtermif.vterm_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_vtermif.vterm_key.vtn_key.vtn_name));
+ memcpy(key_vtermif.vterm_key.vterminal_name, "vtermina1",
+ sizeof(key_vtermif.vterm_key.vterminal_name));
+ memcpy(key_vtermif.if_name, "vterminalIf", sizeof(key_vtermif.if_name));
+ val_vtermif.admin_status = 1;
+ val_vtermif.portmap.vlan_id = 567;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vterm_if,
+ val_vterm_if, uint32_t>
+ (&key_vtermif, &val_vtermif, operation);
+
+ ret = KeyTree_obj->add_child_to_hash(cfgptr1);
+ delete KeyTree_obj;
+ delete cfgptr;
+ delete cfgptr1;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, Parent_not_exist_VterminalIf) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+ key_vterm_if key_vtermif;
+ val_vterm_if val_vtermif;
+ memset(&key_vtermif, 0, sizeof(key_vtermif));
+ memset(&val_vtermif, 0, sizeof(val_vtermif));
+ memcpy(key_vtermif.vterm_key.vtn_key.vtn_name, "vtn1",
+ sizeof(key_vtermif.vterm_key.vtn_key.vtn_name));
+ memcpy(key_vtermif.vterm_key.vterminal_name, "vtermina1",
+ sizeof(key_vtermif.vterm_key.vterminal_name));
+ memcpy(key_vtermif.if_name, "vterminalIf", sizeof(key_vtermif.if_name));
+ val_vtermif.admin_status = 1;
+ val_vtermif.portmap.vlan_id = 567;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vterm_if,
+ val_vterm_if, uint32_t>
+ (&key_vtermif, &val_vtermif, operation);
+
+ uint32_t ret = KeyTree_obj->append_audit_node(cfgptr1);
+ delete KeyTree_obj;
+ delete cfgptr1;
+ KeyTree_obj = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC);
+}
+
+TEST(get_parenttype, VterminalIf_flowfilter) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ unc_key_type_t keytype = KeyTree_obj->
+ get_parenttype(UNC_KT_VTERMIF_FLOWFILTER);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VTERM_IF);
+}
+
+TEST(get_parenttype, VterminalIf_flowfilter_entry) {
+ KeyTree* KeyTree_obj;
+ KeyTree_obj = KeyTree::create_cache();
+
+ unc_key_type_t keytype = KeyTree_obj->
+ get_parenttype(UNC_KT_VTERMIF_FLOWFILTER_ENTRY);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ EXPECT_EQ(keytype, UNC_KT_VTERMIF_FLOWFILTER);
+}
+
+TEST(append_commit_node, vterminalif_flowfilter) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm_if_flowfilter key_vtermifflowfilter;;
+ val_flowfilter val_vtermifflowfilter;
+ memset(&key_vtermifflowfilter, 0, sizeof(key_vtermifflowfilter));
+ memset(&val_vtermifflowfilter, 0, sizeof(val_vtermifflowfilter));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vtermifflowfilter.if_key.vterm_key.vtn_key.
+ vtn_name));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vterminal_name,
+ "vtermina1", sizeof(key_vtermifflowfilter.if_key.vterm_key.
+ vterminal_name));
+ memcpy(key_vtermifflowfilter.if_key.if_name, "VtermIfFFinterface",
+ sizeof(key_vtermifflowfilter.if_key.if_name));
+ key_vtermifflowfilter.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm_if_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_vtermifflowfilter, &val_vtermifflowfilter, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, vterminalif_flowfilter) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm_if_flowfilter key_vtermifflowfilter;;
+ val_flowfilter val_vtermifflowfilter;
+ memset(&key_vtermifflowfilter, 0, sizeof(key_vtermifflowfilter));
+ memset(&val_vtermifflowfilter, 0, sizeof(val_vtermifflowfilter));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vtermifflowfilter.if_key.vterm_key.vtn_key.
+ vtn_name));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vterminal_name,
+ "vtermina1", sizeof(key_vtermifflowfilter.if_key.vterm_key.
+ vterminal_name));
+ memcpy(key_vtermifflowfilter.if_key.if_name, "VtermIfFFinterface",
+ sizeof(key_vtermifflowfilter.if_key.if_name));
+ key_vtermifflowfilter.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm_if_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_vtermifflowfilter, &val_vtermifflowfilter, operation);
+
+ uint32_t ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ delete cfgptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, Vterminalif_Flowfilter_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm_if_flowfilter key_vtermifflowfilter;;
+ val_flowfilter val_vtermifflowfilter;
+ memset(&key_vtermifflowfilter, 0, sizeof(key_vtermifflowfilter));
+ memset(&val_vtermifflowfilter, 0, sizeof(val_vtermifflowfilter));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vtermifflowfilter.if_key.vterm_key.vtn_key.
+ vtn_name));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vterminal_name,
+ "vtermina1", sizeof(key_vtermifflowfilter.if_key.vterm_key.
+ vterminal_name));
+ memcpy(key_vtermifflowfilter.if_key.if_name, "VtermIfFFinterface",
+ sizeof(key_vtermifflowfilter.if_key.if_name));
+ key_vtermifflowfilter.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm_if_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_vtermifflowfilter, &val_vtermifflowfilter, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vterm_if_flowfilter, val_flowfilter, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vterm_if_flowfilter,
+ val_flowfilter, uint32_t>*> (cfgptr);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_vtermifflowfilter.if_key.vterm_key.
+ vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ if_key.vterm_key.vtn_key.vtn_name));
+ pfc_log_info("Vtn Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.vterm_key.vtn_key.vtn_name));
+ pfc_log_info("Vterminal Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.vterm_key.vterminal_name));
+ pfc_log_info("VterminalFFInterface Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.if_name));
+ pfc_log_info("VterminalFF Direction= %d",
+ tmp_ptr->get_key_structure()->direction);
+ pfc_log_info("Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_commit_node, vterminalif_flowfilter_entry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm_if_flowfilter key_vtermifflowfilter;;
+ val_flowfilter val_vtermifflowfilter;
+ memset(&key_vtermifflowfilter, 0, sizeof(key_vtermifflowfilter));
+ memset(&val_vtermifflowfilter, 0, sizeof(val_vtermifflowfilter));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vtermifflowfilter.if_key.vterm_key.vtn_key.
+ vtn_name));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vterminal_name,
+ "vtermina1", sizeof(key_vtermifflowfilter.if_key.vterm_key.
+ vterminal_name));
+ memcpy(key_vtermifflowfilter.if_key.if_name, "VtermIfFFinterface",
+ sizeof(key_vtermifflowfilter.if_key.if_name));
+ key_vtermifflowfilter.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm_if_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_vtermifflowfilter, &val_vtermifflowfilter, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vterm_if_flowfilter_entry key_vtermiflowfilterentry;
+ val_flowfilter_entry val_vtermiflowfilterentry;
+ memset(&key_vtermiflowfilterentry, 0, sizeof(key_vtermiflowfilterentry));
+ memset(&val_vtermiflowfilterentry, 0, sizeof(val_vtermiflowfilterentry));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.vterm_key.vtn_key.
+ vtn_name, "vtn1", sizeof(key_vtermiflowfilterentry.flowfilter_key.
+ if_key.vterm_key.vtn_key.vtn_name));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.vterm_key.
+ vterminal_name, "vtermina1", sizeof(key_vtermiflowfilterentry.
+ flowfilter_key.if_key.vterm_key.
+ vterminal_name));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.if_name,
+ "VtermIfFFinterface", sizeof(key_vtermiflowfilterentry.flowfilter_key.
+ if_key.if_name));
+ key_vtermiflowfilterentry.flowfilter_key.direction = 1;
+ key_vtermiflowfilterentry.sequence_num = 33;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vterm_if_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>
+ (&key_vtermiflowfilterentry, &val_vtermiflowfilterentry, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(add_child_to_hash, vterminalif_flowfilter_entry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm_if_flowfilter key_vtermifflowfilter;;
+ val_flowfilter val_vtermifflowfilter;
+ memset(&key_vtermifflowfilter, 0, sizeof(key_vtermifflowfilter));
+ memset(&val_vtermifflowfilter, 0, sizeof(val_vtermifflowfilter));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vtermifflowfilter.if_key.vterm_key.vtn_key.
+ vtn_name));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vterminal_name,
+ "vtermina1", sizeof(key_vtermifflowfilter.if_key.vterm_key.
+ vterminal_name));
+ memcpy(key_vtermifflowfilter.if_key.if_name, "VtermIfFFinterface",
+ sizeof(key_vtermifflowfilter.if_key.if_name));
+ key_vtermifflowfilter.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm_if_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_vtermifflowfilter, &val_vtermifflowfilter, operation);
+
+ uint32_t ret = KeyTree_obj->add_child_to_hash(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vterm_if_flowfilter_entry key_vtermiflowfilterentry;
+ val_flowfilter_entry val_vtermiflowfilterentry;
+ memset(&key_vtermiflowfilterentry, 0, sizeof(key_vtermiflowfilterentry));
+ memset(&val_vtermiflowfilterentry, 0, sizeof(val_vtermiflowfilterentry));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.vterm_key.vtn_key.
+ vtn_name, "vtn1", sizeof(key_vtermiflowfilterentry.flowfilter_key.
+ if_key.vterm_key.vtn_key.vtn_name));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.vterm_key.
+ vterminal_name, "vtermina1", sizeof(key_vtermiflowfilterentry.
+ flowfilter_key.if_key.vterm_key.
+ vterminal_name));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.if_name,
+ "VtermIfFFinterface", sizeof(key_vtermiflowfilterentry.
+ flowfilter_key.if_key.if_name));
+ key_vtermiflowfilterentry.flowfilter_key.direction = 1;
+ key_vtermiflowfilterentry.sequence_num = 33;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vterm_if_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>
+ (&key_vtermiflowfilterentry, &val_vtermiflowfilterentry, operation);
+
+ ret = KeyTree_obj->add_child_to_hash(cfgptr1);
+ delete cfgptr;
+ delete cfgptr1;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
+
+TEST(append_audit_node, parent_not_exist_vterminalif_flowfilter_entry) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+ key_vterm_if_flowfilter_entry key_vtermiflowfilterentry;
+ val_flowfilter_entry val_vtermiflowfilterentry;
+ memset(&key_vtermiflowfilterentry, 0, sizeof(key_vtermiflowfilterentry));
+ memset(&val_vtermiflowfilterentry, 0, sizeof(val_vtermiflowfilterentry));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.vterm_key.vtn_key.
+ vtn_name, "vtn1", sizeof(key_vtermiflowfilterentry.flowfilter_key.
+ if_key.vterm_key.vtn_key.vtn_name));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.vterm_key.
+ vterminal_name, "vtermina1", sizeof(key_vtermiflowfilterentry.
+ flowfilter_key.if_key.
+ vterm_key.vterminal_name));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.if_name,
+ "VtermIfFFinterface",
+ sizeof(key_vtermiflowfilterentry.flowfilter_key.if_key.if_name));
+ key_vtermiflowfilterentry.flowfilter_key.direction = 1;
+ key_vtermiflowfilterentry.sequence_num = 33;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vterm_if_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>
+ (&key_vtermiflowfilterentry, &val_vtermiflowfilterentry, operation);
+
+ uint32_t ret = KeyTree_obj->append_audit_node(cfgptr1);
+ delete cfgptr1;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_DRV_RC_ERR_GENERIC);
+}
+
+TEST(append_commit_node, Vterminalif_Flowfilter_Entry_Retrive) {
+ int operation = 1;
+ KeyTree* KeyTree_obj = NULL;
+ KeyTree_obj = KeyTree::create_cache();
+
+ key_vterm_if_flowfilter key_vtermifflowfilter;;
+ val_flowfilter val_vtermifflowfilter;
+ memset(&key_vtermifflowfilter, 0, sizeof(key_vtermifflowfilter));
+ memset(&val_vtermifflowfilter, 0, sizeof(val_vtermifflowfilter));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vtn_key.vtn_name,
+ "vtn1", sizeof(key_vtermifflowfilter.if_key.vterm_key.vtn_key.
+ vtn_name));
+ memcpy(key_vtermifflowfilter.if_key.vterm_key.vterminal_name,
+ "vtermina1", sizeof(key_vtermifflowfilter.if_key.
+ vterm_key.vterminal_name));
+ memcpy(key_vtermifflowfilter.if_key.if_name, "VtermIfFFinterface",
+ sizeof(key_vtermifflowfilter.if_key.if_name));
+ key_vtermifflowfilter.direction = 1;
+ ConfigNode *cfgptr = new CacheElementUtil<key_vterm_if_flowfilter,
+ val_flowfilter, uint32_t>
+ (&key_vtermifflowfilter, &val_vtermifflowfilter, operation);
+
+ uint32_t ret = KeyTree_obj->append_commit_node(cfgptr);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ key_vterm_if_flowfilter_entry key_vtermiflowfilterentry;
+ val_flowfilter_entry val_vtermiflowfilterentry;
+ memset(&key_vtermiflowfilterentry, 0, sizeof(key_vtermiflowfilterentry));
+ memset(&val_vtermiflowfilterentry, 0, sizeof(val_vtermiflowfilterentry));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.vterm_key.
+ vtn_key.vtn_name, "vtn1",
+ sizeof(key_vtermiflowfilterentry.flowfilter_key.if_key.
+ vterm_key.vtn_key.vtn_name));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.vterm_key.
+ vterminal_name, "vtermina1",
+ sizeof(key_vtermiflowfilterentry.flowfilter_key.if_key.vterm_key.
+ vterminal_name));
+ memcpy(key_vtermiflowfilterentry.flowfilter_key.if_key.if_name,
+ "VtermIfFFinterface",
+ sizeof(key_vtermiflowfilterentry.flowfilter_key.if_key.if_name));
+ key_vtermiflowfilterentry.flowfilter_key.direction = 1;
+ key_vtermiflowfilterentry.sequence_num = 33;
+ ConfigNode *cfgptr1 = new CacheElementUtil<key_vterm_if_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>
+ (&key_vtermiflowfilterentry, &val_vtermiflowfilterentry, operation);
+
+ ret = KeyTree_obj->append_commit_node(cfgptr1);
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+ CommonIterator* itr_ptr = KeyTree_obj->create_iterator();
+ cfgptr = itr_ptr->FirstItem();
+ CacheElementUtil<key_vterm_if_flowfilter, val_flowfilter, uint32_t> *tmp_ptr =
+ static_cast<CacheElementUtil<key_vterm_if_flowfilter, val_flowfilter,
+ uint32_t>*> (cfgptr);
+
+ EXPECT_STREQ(reinterpret_cast<char*>(key_vtermifflowfilter.if_key.vterm_key.
+ vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr->get_key_structure()->
+ if_key.vterm_key.vtn_key.vtn_name));
+ pfc_log_info("FF:Vtn Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.vterm_key.vtn_key.vtn_name));
+ pfc_log_info("FF:Vterminal Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.vterm_key.vterminal_name));
+ pfc_log_info("FF:VterminalFFInterface Name= %s", reinterpret_cast<char*>(
+ tmp_ptr->get_key_structure()->if_key.if_name));
+ pfc_log_info("FF:VterminalFF Direction= %d",
+ tmp_ptr->get_key_structure()->direction);
+ pfc_log_info("FF:Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr->get_key_name().c_str(), tmp_ptr->get_type_name());;
+ pfc_log_info("FF:ParentKey %s SearchKey %s",
+ tmp_ptr->get_parent_key_name().c_str(),
+ tmp_ptr->get_key_generate().c_str());
+ cfgptr1 = itr_ptr->NextItem();
+ CacheElementUtil<key_vterm_if_flowfilter_entry, val_flowfilter_entry,
+ uint32_t> *tmp_ptr1 =
+ static_cast<CacheElementUtil<key_vterm_if_flowfilter_entry,
+ val_flowfilter_entry, uint32_t>*> (cfgptr1);
+ EXPECT_STREQ(reinterpret_cast<char*>(key_vtermiflowfilterentry.
+ flowfilter_key.if_key.vterm_key.
+ vtn_key.vtn_name),
+ reinterpret_cast<char*>(tmp_ptr1->get_key_structure()->
+ flowfilter_key.if_key.vterm_key.
+ vtn_key.vtn_name));
+ pfc_log_info("FFEntry:Vtn Name= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->
+ flowfilter_key.if_key.vterm_key.vtn_key.vtn_name));
+ pfc_log_info("FFEntry:Vterminal Name= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->
+ flowfilter_key.if_key.vterm_key.vterminal_name));
+ pfc_log_info("FFEntry:VterminalFFInterface Name= %s", reinterpret_cast<char*>(
+ tmp_ptr1->get_key_structure()->flowfilter_key.if_key.if_name));
+ pfc_log_info("FFEntry:VterminalFF Direction= %d",
+ tmp_ptr1->get_key_structure()->flowfilter_key.direction);
+ pfc_log_info("FFEntry:VterminalFF Sequence Number= %d",
+ tmp_ptr1->get_key_structure()->sequence_num);
+ pfc_log_info("FFEntry:Node Present in Tree ..for:%s keytype %d",
+ tmp_ptr1->get_key_name().c_str(), tmp_ptr1->get_type_name());;
+ pfc_log_info("FFEntry:ParentKey %s SearchKey %s",
+ tmp_ptr1->get_parent_key_name().c_str(),
+ tmp_ptr1->get_key_generate().c_str());
+ delete itr_ptr;
+ delete KeyTree_obj;
+ KeyTree_obj = NULL;
+ cfgptr = NULL;
+ cfgptr1 = NULL;
+ EXPECT_EQ(ret, UNC_RC_SUCCESS);
+}
} // namespace vtndrvcache
} // namespace unc