# mscgen file msc { #Options hscale = "1.5"; #Entities testcase, traffic_ctlr, traffic_gen, traffic_defaults, HwSwTrafficGen; #Arcs HwSwTrafficGen note HwSwTrafficGen [ label = "Ixia, Spirent, Xena, Moongen, etc."]; testcase => traffic_ctlr [ label = "create(traffic_gen_class)" ]; traffic_ctlr => traffic_gen [label = "create()"]; traffic_ctlr => traffic_gen [label = "connect()"]; testcase => traffic_ctlr [ label = "send_traffic(traffic)" ]; --- [ label = "foreach packet_size in configuration"]; traffic_ctlr note traffic_ctlr [ label = "invokes send_rfc2544_back2back/tput or send_cont based on traffic['traffic_type']; Also fetches duration/trials from config" ]; traffic_ctlr => traffic_gen [ label = "send_rfc2544_tput(traffic, ...)" ]; traffic_gen -> traffic_gen [ label = "start_rfc2544_tput(traffic)" ]; traffic_gen => traffic_defaults [ label = "default_traffic_params = read()" ]; traffic_gen note traffic_gen [ label = "merge traffic with default_traffic_params)" ]; traffic_gen note traffic_gen [ label = "Actual test starts here. Details of interactions between traffic_gen class actual traffic generator (HwSwTrafficGen) are hidden to vsperf"]; traffic_gen <=> HwSwTrafficGen [ label = "..."]; traffic_gen => traffic_gen [ label = "wait_rfc2544_throughput()"]; traffic_ctlr << traffic_gen [ label = "results (string/value pairs)"]; traffic_ctlr note traffic_ctlr [ label = "store_results()" ]; --- [ label = "end foreach"]; testcase => traffic_ctlr [label = "get_results()"]; testcase => testcase [label = "write_results_to_file"]; }