From f2d4fdad463a6d4ba0c3d8d0622fb6931425c7f9 Mon Sep 17 00:00:00 2001 From: wenxian li Date: Tue, 20 Oct 2015 00:45:49 -0400 Subject: trex-131 --- src/tuple_gen.cpp | 90 +++++++++++++++++++++++++++---------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) (limited to 'src/tuple_gen.cpp') diff --git a/src/tuple_gen.cpp b/src/tuple_gen.cpp index 3a477338..80a25f1a 100755 --- a/src/tuple_gen.cpp +++ b/src/tuple_gen.cpp @@ -223,12 +223,22 @@ bool CTupleGenPoolYaml::is_valid(uint32_t num_threads,bool is_plugins){ +#define UTL_YAML_READ(type, field, target) if (node.FindValue(#field)) { \ + utl_yaml_read_ ## type (node, #field , target); \ + } else { printf("error in generator definition -- " #field "\n"); } void operator >> (const YAML::Node& node, CTupleGenPoolYaml & fi) { std::string tmp; - node["name"] >> fi.m_name; - node["distribution"] >> tmp ; + if (node.FindValue("name")) { + node["name"] >> fi.m_name; + } else { + printf("error in generator definition, name missing\n"); + assert(0); + } + if (node.FindValue("distribution")) { + node["distribution"] >> tmp ; + } if (tmp == "random") { fi.m_dist=cdRANDOM_DIST; }else if (tmp == "normal") { @@ -236,39 +246,24 @@ void operator >> (const YAML::Node& node, CTupleGenPoolYaml & fi) { } else { fi.m_dist=cdSEQ_DIST; } - utl_yaml_read_ip_addr(node,"ip_start",fi.m_ip_start); - utl_yaml_read_ip_addr(node,"ip_end",fi.m_ip_end); - fi.m_number_of_clients_per_gb = 0; + UTL_YAML_READ(ip_addr, ip_start, fi.m_ip_start); + UTL_YAML_READ(ip_addr, ip_end, fi.m_ip_end); + fi.m_number_of_clients_per_gb = 0; fi.m_min_clients = 0; fi.m_is_bundling = false; fi.m_tcp_aging_sec = 0; fi.m_udp_aging_sec = 0; fi.m_dual_interface_mask = 0; - try { - utl_yaml_read_uint32(node,"clients_per_gb",fi.m_number_of_clients_per_gb); - } catch ( const std::exception& e ) { - ;} - try { - utl_yaml_read_uint32(node,"min_clients",fi.m_min_clients); - } catch ( const std::exception& e ) { - ;} - try { - utl_yaml_read_ip_addr(node,"dual_port_mask",fi.m_dual_interface_mask); - } catch ( const std::exception& e ) { - ;} - try { - utl_yaml_read_uint16(node,"tcp_aging",fi.m_tcp_aging_sec); - } catch ( const std::exception& e ) { - ;} - try { - utl_yaml_read_uint16(node,"udp_aging",fi.m_udp_aging_sec); - } catch ( const std::exception& e ) { - ;} - try { + + UTL_YAML_READ(uint32, clients_per_gb, fi.m_number_of_clients_per_gb); + UTL_YAML_READ(uint32, min_clients, fi.m_min_clients); + UTL_YAML_READ(ip_addr, dual_port_mask, fi.m_dual_interface_mask); + UTL_YAML_READ(uint16, tcp_aging, fi.m_tcp_aging_sec); + UTL_YAML_READ(uint16, udp_aging, fi.m_udp_aging_sec); + if (node.FindValue("track_ports")) { node["track_ports"] >> fi.m_is_bundling; - } catch ( const std::exception& e ) { - ;} + } } void copy_global_pool_para(CTupleGenPoolYaml & src, CTupleGenPoolYaml & dst) { if (src.m_number_of_clients_per_gb == 0) @@ -282,12 +277,15 @@ void copy_global_pool_para(CTupleGenPoolYaml & src, CTupleGenPoolYaml & dst) { if (src.m_udp_aging_sec == 0) src.m_udp_aging_sec = dst.m_udp_aging_sec; } + + void operator >> (const YAML::Node& node, CTupleGenYamlInfo & fi) { std::string tmp; - try { - CTupleGenPoolYaml c_pool; - CTupleGenPoolYaml s_pool; + CTupleGenPoolYaml c_pool; + CTupleGenPoolYaml s_pool; + + if (node.FindValue("distribution")) { node["distribution"] >> tmp ; if (tmp == "random") { c_pool.m_dist=cdRANDOM_DIST; @@ -297,23 +295,24 @@ void operator >> (const YAML::Node& node, CTupleGenYamlInfo & fi) { c_pool.m_dist=cdSEQ_DIST; } s_pool.m_dist = c_pool.m_dist; - utl_yaml_read_ip_addr(node,"clients_start",c_pool.m_ip_start); - utl_yaml_read_ip_addr(node,"clients_end",c_pool.m_ip_end); - utl_yaml_read_ip_addr(node,"servers_start",s_pool.m_ip_start); - utl_yaml_read_ip_addr(node,"servers_end",s_pool.m_ip_end); - utl_yaml_read_uint32(node,"clients_per_gb",c_pool.m_number_of_clients_per_gb); - utl_yaml_read_uint32(node,"min_clients",c_pool.m_min_clients); - utl_yaml_read_ip_addr(node,"dual_port_mask",c_pool.m_dual_interface_mask); - utl_yaml_read_uint16(node,"tcp_aging",c_pool.m_tcp_aging_sec); - utl_yaml_read_uint16(node,"udp_aging",c_pool.m_udp_aging_sec); + UTL_YAML_READ(ip_addr, clients_start, c_pool.m_ip_start); + UTL_YAML_READ(ip_addr, clients_end, c_pool.m_ip_end); + UTL_YAML_READ(ip_addr, servers_start, s_pool.m_ip_start); + UTL_YAML_READ(ip_addr, servers_end, s_pool.m_ip_end); + UTL_YAML_READ(uint32, clients_per_gb, c_pool.m_number_of_clients_per_gb); + UTL_YAML_READ(uint32, min_clients, c_pool.m_min_clients); + UTL_YAML_READ(ip_addr, dual_port_mask, c_pool.m_dual_interface_mask); + UTL_YAML_READ(uint16, tcp_aging, c_pool.m_tcp_aging_sec); + UTL_YAML_READ(uint16, udp_aging, c_pool.m_udp_aging_sec); s_pool.m_dual_interface_mask = c_pool.m_dual_interface_mask; s_pool.m_is_bundling = false; fi.m_client_pool.push_back(c_pool); fi.m_server_pool.push_back(s_pool); - }catch ( const std::exception& e ) { + } else { printf("No default generator defined.\n"); } - try{ + + if (node.FindValue("generator_clients")) { const YAML::Node& c_pool_info = node["generator_clients"]; for (uint16_t idx=0;idx> (const YAML::Node& node, CTupleGenYamlInfo & fi) { printf("client pool in YAML is wrong\n"); } } - }catch ( const std::exception& e ) { + } else { printf("no client generator pool configured, using default pool\n"); } - try { + + if (node.FindValue("generator_servers")) { const YAML::Node& s_pool_info = node["generator_servers"]; for (uint16_t idx=0;idx> (const YAML::Node& node, CTupleGenYamlInfo & fi) { } fi.m_server_pool.push_back(pool); } - }catch ( const std::exception& e ) { + } else { printf("no server generator pool configured, using default pool\n"); } } -- cgit From b8e15f0ec903d0e8f7fd23d8e0e03b89b50b817b Mon Sep 17 00:00:00 2001 From: wenxian li Date: Tue, 20 Oct 2015 00:55:53 -0400 Subject: minor change --- src/tuple_gen.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'src/tuple_gen.cpp') diff --git a/src/tuple_gen.cpp b/src/tuple_gen.cpp index 80a25f1a..3352c482 100755 --- a/src/tuple_gen.cpp +++ b/src/tuple_gen.cpp @@ -316,15 +316,11 @@ void operator >> (const YAML::Node& node, CTupleGenYamlInfo & fi) { const YAML::Node& c_pool_info = node["generator_clients"]; for (uint16_t idx=0;idx> pool; - if (fi.m_client_pool.size()>0) { - copy_global_pool_para(pool, fi.m_client_pool[0]); - } - fi.m_client_pool.push_back(pool); - } catch ( const std::exception& e ) { - printf("client pool in YAML is wrong\n"); + c_pool_info[idx] >> pool; + if (fi.m_client_pool.size()>0) { + copy_global_pool_para(pool, fi.m_client_pool[0]); } + fi.m_client_pool.push_back(pool); } } else { printf("no client generator pool configured, using default pool\n"); @@ -334,11 +330,7 @@ void operator >> (const YAML::Node& node, CTupleGenYamlInfo & fi) { const YAML::Node& s_pool_info = node["generator_servers"]; for (uint16_t idx=0;idx> pool; - } catch ( const std::exception& e ) { - printf("server pool in YAML is wrong\n"); - } + s_pool_info[idx] >> pool; if (fi.m_server_pool.size()>0) { copy_global_pool_para(pool, fi.m_server_pool[0]); } -- cgit From 7a7c328c767eeb9466138233fd53d51565f92b37 Mon Sep 17 00:00:00 2001 From: wenxian li Date: Tue, 20 Oct 2015 01:16:20 -0400 Subject: clean up the code --- src/tuple_gen.cpp | 52 +++++++++++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 29 deletions(-) (limited to 'src/tuple_gen.cpp') diff --git a/src/tuple_gen.cpp b/src/tuple_gen.cpp index 3352c482..84a4b332 100755 --- a/src/tuple_gen.cpp +++ b/src/tuple_gen.cpp @@ -227,9 +227,27 @@ bool CTupleGenPoolYaml::is_valid(uint32_t num_threads,bool is_plugins){ utl_yaml_read_ ## type (node, #field , target); \ } else { printf("error in generator definition -- " #field "\n"); } +IP_DIST_t convert_distribution (const YAML::Node& node) { + std::string tmp; + node["distribution"] >> tmp ; + if (tmp == "random") { + return cdRANDOM_DIST; + }else if (tmp == "normal") { + return cdNORMAL_DIST; + } else { + return cdSEQ_DIST; + } +} + +void read_tuple_para(const YAML::Node& node, CTupleGenPoolYaml & fi) { + UTL_YAML_READ(uint32, clients_per_gb, fi.m_number_of_clients_per_gb); + UTL_YAML_READ(uint32, min_clients, fi.m_min_clients); + UTL_YAML_READ(ip_addr, dual_port_mask, fi.m_dual_interface_mask); + UTL_YAML_READ(uint16, tcp_aging, fi.m_tcp_aging_sec); + UTL_YAML_READ(uint16, udp_aging, fi.m_udp_aging_sec); +} void operator >> (const YAML::Node& node, CTupleGenPoolYaml & fi) { - std::string tmp; if (node.FindValue("name")) { node["name"] >> fi.m_name; } else { @@ -237,15 +255,8 @@ void operator >> (const YAML::Node& node, CTupleGenPoolYaml & fi) { assert(0); } if (node.FindValue("distribution")) { - node["distribution"] >> tmp ; + fi.m_dist = convert_distribution(node); } - if (tmp == "random") { - fi.m_dist=cdRANDOM_DIST; - }else if (tmp == "normal") { - fi.m_dist=cdNORMAL_DIST; - } else { - fi.m_dist=cdSEQ_DIST; - } UTL_YAML_READ(ip_addr, ip_start, fi.m_ip_start); UTL_YAML_READ(ip_addr, ip_end, fi.m_ip_end); @@ -255,12 +266,7 @@ void operator >> (const YAML::Node& node, CTupleGenPoolYaml & fi) { fi.m_tcp_aging_sec = 0; fi.m_udp_aging_sec = 0; fi.m_dual_interface_mask = 0; - - UTL_YAML_READ(uint32, clients_per_gb, fi.m_number_of_clients_per_gb); - UTL_YAML_READ(uint32, min_clients, fi.m_min_clients); - UTL_YAML_READ(ip_addr, dual_port_mask, fi.m_dual_interface_mask); - UTL_YAML_READ(uint16, tcp_aging, fi.m_tcp_aging_sec); - UTL_YAML_READ(uint16, udp_aging, fi.m_udp_aging_sec); + read_tuple_para(node, fi); if (node.FindValue("track_ports")) { node["track_ports"] >> fi.m_is_bundling; } @@ -280,30 +286,18 @@ void copy_global_pool_para(CTupleGenPoolYaml & src, CTupleGenPoolYaml & dst) { void operator >> (const YAML::Node& node, CTupleGenYamlInfo & fi) { - std::string tmp; CTupleGenPoolYaml c_pool; CTupleGenPoolYaml s_pool; if (node.FindValue("distribution")) { - node["distribution"] >> tmp ; - if (tmp == "random") { - c_pool.m_dist=cdRANDOM_DIST; - }else if (tmp == "normal") { - c_pool.m_dist=cdNORMAL_DIST; - } else { - c_pool.m_dist=cdSEQ_DIST; - } + c_pool.m_dist = convert_distribution(node); s_pool.m_dist = c_pool.m_dist; UTL_YAML_READ(ip_addr, clients_start, c_pool.m_ip_start); UTL_YAML_READ(ip_addr, clients_end, c_pool.m_ip_end); UTL_YAML_READ(ip_addr, servers_start, s_pool.m_ip_start); UTL_YAML_READ(ip_addr, servers_end, s_pool.m_ip_end); - UTL_YAML_READ(uint32, clients_per_gb, c_pool.m_number_of_clients_per_gb); - UTL_YAML_READ(uint32, min_clients, c_pool.m_min_clients); - UTL_YAML_READ(ip_addr, dual_port_mask, c_pool.m_dual_interface_mask); - UTL_YAML_READ(uint16, tcp_aging, c_pool.m_tcp_aging_sec); - UTL_YAML_READ(uint16, udp_aging, c_pool.m_udp_aging_sec); + read_tuple_para(node, c_pool); s_pool.m_dual_interface_mask = c_pool.m_dual_interface_mask; s_pool.m_is_bundling = false; fi.m_client_pool.push_back(c_pool); -- cgit From 74c3cc9a88beef73d6f319e39a5c51b1d074be18 Mon Sep 17 00:00:00 2001 From: wenxian li Date: Tue, 20 Oct 2015 01:22:29 -0400 Subject: minor --- src/tuple_gen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/tuple_gen.cpp') diff --git a/src/tuple_gen.cpp b/src/tuple_gen.cpp index 84a4b332..d3538ce6 100755 --- a/src/tuple_gen.cpp +++ b/src/tuple_gen.cpp @@ -225,7 +225,7 @@ bool CTupleGenPoolYaml::is_valid(uint32_t num_threads,bool is_plugins){ #define UTL_YAML_READ(type, field, target) if (node.FindValue(#field)) { \ utl_yaml_read_ ## type (node, #field , target); \ - } else { printf("error in generator definition -- " #field "\n"); } + } else { printf("generator definition mising " #field "\n"); } IP_DIST_t convert_distribution (const YAML::Node& node) { std::string tmp; -- cgit