void test_repositorySave() { Repository repo; repository_init(&repo, "repoTests.txt"); assert(_msize(repo.objects) == sizeof(Vector)); assert(vector_getLen(repo.objects) == 10); // Create object StoreObject* obj = malloc(sizeof(StoreObject)); Product* prod = malloc(sizeof(Product)); product_init(prod, "Chitara", "Conteaza", "MadeInChina"); storeObject_init(obj, 15, prod, 100, "azi", 200); // Add Object repository_AddObject(&repo, obj); repository_Save(&repo); repository_destroy(&repo); Repository repo2; repository_init(&repo2, "repoTests.txt"); assert(_msize(repo2.objects) == sizeof(Vector)); assert(vector_getLen(repo2.objects) == 11); repository_DeleteObjectByID(&repo2, 15); repository_Save(&repo2); repository_destroy(&repo2); }
void test_repositoryAddObject() { Repository repo; repository_init(&repo, "repoTests.txt"); assert(_msize(repo.objects) == sizeof(Vector)); assert(vector_getLen(repo.objects) == 10); // Test 2 elements // #1 assert(storeObject_GetID(vector_getAt(repo.objects, 1)) == 2); assert(!strcmp(product_GetType(storeObject_GetProduct(vector_getAt(repo.objects, 1))), "Laptop")); assert(!strcmp(product_GetModel(storeObject_GetProduct(vector_getAt(repo.objects, 1))), "v3.2")); assert(!strcmp(product_GetManufacturer(storeObject_GetProduct(vector_getAt(repo.objects, 1))), "Lenovo")); assert(storeObject_GetPrice(vector_getAt(repo.objects, 1)) == 5200); assert(storeObject_GetQuantity(vector_getAt(repo.objects, 1)) == 69); // #2 assert(storeObject_GetID(vector_getAt(repo.objects, 9)) == 10); assert(!strcmp(product_GetType(storeObject_GetProduct(vector_getAt(repo.objects, 9))), "Laptop")); assert(!strcmp(product_GetModel(storeObject_GetProduct(vector_getAt(repo.objects, 9))), "v12.3")); assert(!strcmp(product_GetManufacturer(storeObject_GetProduct(vector_getAt(repo.objects, 9))), "HP")); assert(storeObject_GetPrice(vector_getAt(repo.objects, 9)) == 2200); assert(storeObject_GetQuantity(vector_getAt(repo.objects, 9)) == 69); // Create object StoreObject* obj = malloc(sizeof(StoreObject)); Product* prod = malloc(sizeof(Product)); product_init(prod, "Chitara", "Conteaza", "Made In China"); storeObject_init(obj, 15, prod, 100, "azi", 200); // Add Object repository_AddObject(&repo, obj); assert(vector_getLen(repo.objects) == 11); assert(!strcmp(product_GetType(storeObject_GetProduct(vector_getAt(repo.objects, 10))), "Chitara")); assert(!strcmp(product_GetModel(storeObject_GetProduct(vector_getAt(repo.objects, 10))), "Conteaza")); assert(!strcmp(product_GetManufacturer(storeObject_GetProduct(vector_getAt(repo.objects, 10))), "Made In China")); assert(storeObject_GetPrice(vector_getAt(repo.objects, 10)) == 100); assert(storeObject_GetQuantity(vector_getAt(repo.objects, 10)) == 200); repository_destroy(&repo); }
void test_productGeters() { Product prod; product_init(&prod, "Prastie", "V2.1", "China Factory"); assert(_msize(product_GetType(&prod)) == (strlen("Prastie") + 1) * sizeof(char)); assert(!strcmp(product_GetType(&prod), "Prastie")); assert(_msize(product_GetModel(&prod)) == (strlen("V2.1") + 1) * sizeof(char)); assert(!strcmp(product_GetModel(&prod), "V2.1")); assert(_msize(product_GetManufacturer(&prod)) == (strlen("China Factory") + 1) * sizeof(char)); assert(!strcmp(product_GetManufacturer(&prod), "China Factory")); product_destroy(&prod); assert(_msize(product_GetType(&prod)) == -1); assert(_msize(product_GetModel(&prod)) == -1); assert(_msize(product_GetManufacturer(&prod)) == -1); }
void test_productCreate() { Product prod; product_init(&prod, "Prastie", "V2.1", "China Factory"); assert(_msize(prod.type) == (strlen("Prastie") + 1) * sizeof(char)); assert(!strcmp(prod.type, "Prastie")); assert(_msize(prod.model) == (strlen("V2.1") + 1) * sizeof(char)); assert(!strcmp(prod.model, "V2.1")); assert(_msize(prod.manufacturer) == (strlen("China Factory") + 1) * sizeof(char)); assert(!strcmp(prod.manufacturer, "China Factory")); product_destroy(&prod); assert(_msize(prod.type) == -1); assert(_msize(prod.model) == -1); assert(_msize(prod.manufacturer) == -1); }
int main(int argc,char **argv) { /* Tell my thread id */ app_module_inst_init(); npd_init_tell_whoami("NpdMain",0); system_cpu_num = npd_system_cpu_num(); /* TODO: how many threads should be created here need to be considered carefully later*/ /* Open the syslog to record the init info */ npd_log_init(); npd_log_set_debug_value(NPD_LOG_FLAG_ALL); db_table_init(); npd_dbtable_sync_startup(); /* Read software version and build number */ npd_init_sw_version(); syslog_ax_main_dbg("system software version %d.%d.%d build %d\n",sw_maj_v,sw_min_v,sw_comp_v,sw_build_v); /* Read cpld and get product id and module id information. */ syslog_ax_main_dbg("init product info\n"); product_init(); /* Probe chassis slot status and build slots data */ syslog_ax_main_dbg("init chassis info\n"); npd_init_chassis_slots(); syslog_ax_main_dbg("init ASIC chip\n"); npd_fw_engines_init(); /* Wait until ASIC initialization process done */ npd_fw_engine_initialization_check(); syslog_ax_main_dbg("Local ASIC initialization done!\n"); /* Initialize NETIF event structure */ netif_event_init(); /* Build vlan data */ syslog_ax_main_dbg("init vlan info\n"); npd_init_vlan(); /* Build port data */ syslog_ax_main_dbg("init eth port info\n"); npd_init_eth_ports(); #ifdef HAVE_POE syslog_ax_main_dbg("init poe info\n"); npd_poe_init(); #endif #ifdef HAVE_SFLOW npd_sflow_init(); #endif /* Build trunk data */ syslog_ax_main_dbg("init trunk info\n"); npd_init_trunks(); syslog_ax_main_dbg("init switch port info\n"); npd_init_switch_ports(); /* Init socket for packet Rx/Tx */ syslog_ax_main_dbg("init packet sockets\n"); npd_init_packet_socket(); #ifdef HAVE_PVLAN /* Init private vlan */ syslog_ax_main_dbg("init pvlan info\n"); npd_pvlan_init(); #endif #ifdef HAVE_BRIDGE_STP syslog_ax_main_dbg("Init stp info\n"); npd_init_stp(); #endif #ifdef HAVE_ACL /* Init Acl Rule structure */ syslog_ax_main_dbg("init acl info\n"); #ifndef HAVE_DIFF_OS npd_qos_init(); #endif #endif #ifdef HAVE_UDLD npd_udld_init(); #endif #ifdef HAVE_ERPP npd_erpp_init(); #endif /* Init static FDB database */ syslog_ax_main_dbg("init fdb info\n"); npd_fdb_table_init(); #ifdef HAVE_MIRROR /* Init mirror init(); */ syslog_ax_main_dbg("init mirror\n"); npd_mirror_init(); #endif #ifdef HAVE_LACP syslog_ax_main_dbg("Init lacp info\n"); npd_lacp_init(); #endif #ifdef HAVE_IGMP_SNP syslog_ax_main_dbg("init igmp info\n"); igmp_snp_init(); #endif /* Build L3 interface data */ syslog_ax_main_dbg("init intf info\n"); npd_intf_init(); /* add DHCP table */ #ifdef HAVE_DHCP_SNP syslog_ax_main_dbg("init dhcp snooping\n"); npd_dhcp_snp_init(); npd_ip_source_guard_init(); #endif #ifdef HAVE_IP_TUNNEL /* Init x-over-ip tunnel */ syslog_ax_main_dbg("init tunnel info\n"); npd_tunnel_init(); #endif /* Init ARP Snooping Hash table */ syslog_ax_main_dbg("init arp snooping info\n"); npd_init_arpsnooping(); #ifdef HAVE_NPD_IPV6 /* Init neighbour Snooping Hash table */ syslog_ax_main_dbg("init neighbour snooping info\n"); npd_init_neighbour_snooping(); #endif //HAVE_NPD_IPV6 #ifdef HAVE_VRRP /* npd init tracking group */ npd_tracking_init(); #endif #ifdef HAVE_ZEBRA /* add netlink sysinfo */ syslog_ax_main_dbg("init route info\n"); npd_route_init(); #endif #ifdef HAVE_DHCP_RELAY npd_dhcpr_init(); #endif #if defined(HAVE_NPD_IPV6) && defined(HAVE_DHCPV6_RELAY) npd_dhcpv6_relay_table_init(); #endif /* Init dbus to get ready for accept management command */ syslog_ax_main_dbg("init dbus info\n"); npd_dbus_init(); syslog_ax_main_dbg("init chassis probe thread\n"); npd_init_chassis_manage_thread(); syslog_ax_main_dbg("wait chassis ready\n"); npd_chassis_manage_initialization_check(); syslog_ax_main_dbg("chassis init done!\n"); npd_eth_port_register_notifier_hook(); #ifdef HAVE_BRIDGE_STP syslog_ax_main_dbg("Create rstp msg thread\n"); npd_rstp_msg_init(); #endif #ifdef HAVE_IGMP_SNP syslog_ax_main_dbg("Create IGMP snooping msg thread\n"); npd_igmp_snp_msg_init(); #endif #ifdef HAVE_VRRP syslog_ax_main_dbg("Create vrrp thread\n"); npd_vrrp_msg_init(); #endif #ifdef HAVE_SMART_LINK syslog_ax_main_dbg("Create smart-link thread\n"); npd_smart_link_msg_init(); #endif #ifdef HAVE_IP_TUNNEL /* tunnel netlink */ syslog_ax_main_dbg("Create Tunnel Net Link thread\n"); nam_thread_create("TunnelNetlink",(void *)npd_tunnel_recv_netlink_msg,NULL,NPD_TRUE,NPD_FALSE); #endif #ifdef HAVE_DLDP syslog_ax_main_dbg("Create DLDP msg thread\n"); npd_dldp_msg_init(); #endif #ifdef HAVE_AAA syslog_ax_main_dbg("Create ASD msg thread\n"); npd_asd_msg_init(); #endif #ifdef HAVE_CAPWAP_ENGINE syslog_ax_main_dbg("Create CAPWAP thread\n"); npd_capwap_init(); #endif //HAVE_CAPWAP_ENGINE #ifdef HAVE_M4_TUNNEL npd_ip_tunnel_init(); #endif /* check if system has started up correctly and then open asic interrupt */ syslog_ax_main_dbg("Create SFP Polling thread\n"); nam_thread_create("SysWaitSfpPoll",(void *)npd_check_system_startup_state,NULL,NPD_TRUE,NPD_FALSE); syslog_ax_main_dbg("Create Attack Check Polling thread\n"); nam_thread_create("SysAttackCheck",(void *)npd_check_system_attack,NULL,NPD_TRUE,NPD_FALSE); #if defined(HAVE_CHASSIS_SUPPORT) || defined(HAVE_STACKING) if(!SYS_LOCAL_MODULE_ISMASTERACTIVE) nam_thread_create("NpdDBSync",(void *)npd_dbtable_thread_main,NULL,NPD_TRUE,NPD_FALSE); #endif npd_app_msg_run(); #ifndef HAVE_LOGTOOL_NONE /* close the syslog */ npd_log_set_debug_value(0); #endif syslog_ax_main_dbg("Create NPD DBUS thread\n"); nam_thread_create("NpdDBUS",(void *)npd_dbus_thread_main,NULL,NPD_TRUE,NPD_TRUE); while(1) { osTimerWkAfter(10000); syslog_ax_main_dbg("Mainthread is running ... \n"); } return 0; }
void disk_init(struct disk *disk) { memset(disk, sizeof(*disk), 0); product_init(&disk->product); CLASS_OPS_INIT(disk->product.ops, product_ops); }