From f8b7dd0a2611061fed7134474ae10ab85e80cf3d Mon Sep 17 00:00:00 2001 From: Billy O'Mahony Date: Thu, 8 Oct 2015 11:47:03 +0100 Subject: docs: Add overview of the structure of vsperf code Text & sequence diagrams as both source and png. JIRA: VSPERF-106 Signed-off-by: Billy O'Mahony Reviewed-by: Al Morton Reviewed-by: Eugene Snider Reviewed-by: Maryam Tahhan Reviewed-by: Gurpreet Singh Reviewed-by: Brian Castelli Change-Id: I33f57fba85710ab4cfc72d0a5d06db6f653545d6 --- docs/msc/factory_and_loader.msc | 17 +++++++++++++++ docs/msc/traffic_controller.msc | 30 ++++++++++++++++++++++++++ docs/msc/vsperf.msc | 47 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100755 docs/msc/factory_and_loader.msc create mode 100755 docs/msc/traffic_controller.msc create mode 100755 docs/msc/vsperf.msc (limited to 'docs/msc') diff --git a/docs/msc/factory_and_loader.msc b/docs/msc/factory_and_loader.msc new file mode 100755 index 00000000..a744607e --- /dev/null +++ b/docs/msc/factory_and_loader.msc @@ -0,0 +1,17 @@ + +msc { + +hscale = "1.5"; + + #Entities + app, loader, component_factory, traffic_ctlr; + + #Arcs + app => loader [label = "get_trafficgen_class()"]; + loader note loader [label = "searches TRAFFICGEN_DIR for classes implementing ITraffic and matching name configured as TRAFFICGEN"]; + app << loader [label = "TrafficGenClass"]; + app => component_factory [label = "create_traffic(traffic_type, TrafficGenClass"]; + component_factory note component_factory [label = "Component Factory maps from a traffic_type (string) to a TrafficController class"]; + component_factory => traffic_ctlr [label = "create()"]; + app << component_factory [label= "traffic_ctlr"]; + } diff --git a/docs/msc/traffic_controller.msc b/docs/msc/traffic_controller.msc new file mode 100755 index 00000000..bd66cce1 --- /dev/null +++ b/docs/msc/traffic_controller.msc @@ -0,0 +1,30 @@ + +# 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"]; +} \ No newline at end of file diff --git a/docs/msc/vsperf.msc b/docs/msc/vsperf.msc new file mode 100755 index 00000000..4d2c6bad --- /dev/null +++ b/docs/msc/vsperf.msc @@ -0,0 +1,47 @@ +msc { + #Options + hscale = "2.0"; + + #Entities + vsperf, testcase, vnf_ctl, vnf, vswitch_ctl, vswitch, traffic_ctl, traffic_gen, load_gen; + + #Arcs + vsperf note vsperf [ label = "$ ./vsperf pvp_tput" ]; + vsperf note vsperf [ label = " foreach test specified" ]; + vsperf => testcase [ label="run()" ]; + --- [ label = " skipping details of finding and creating correct subclasses of IVSwitch, ITrafficGenerator etc." ]; + testcase => vswitch_ctl [ label="create(vswitch_class" ]; + vswitch_ctl note vswitch_ctl [ label="vswitch_ctl is instance of VswitchControllerPvp"]; + testcase => vnf_ctl [ label="create(vnf_class)" ]; + vnf_ctl note vnf_ctl [ label="vnf_ctl is instance of VnfControllerPvp"]; + testcase => traffic_ctl [ label="create()" ]; + traffic_ctl note traffic_ctl [ label="traffic_ctl is instance of TrafficControllerRFC2544"]; + |||; + testcase note testcase [ label="Python context management protocol __enter__, __exit__ is used to start/stop controllers"]; + testcase => vswitch_ctl [ label="__enter__()"]; + vswitch_ctl => vswitch [ label ="create()"]; + vswitch note vswitch [label="vswitch is instance of OvsDpdkVhost"]; + vswitch_ctl => vswitch [ label="add_phy_port()" ]; + vswitch_ctl => vswitch [ label="add_vport()" ]; + vswitch_ctl => vswitch [ label="add_flow()" ]; + --- [ label = " skipping full details of switch configuration " ]; + |||; + testcase => vnf_ctl [ label="__enter__()"]; + vnf_ctl => vnf [ label="create()"]; + |||; + testcase => load_gen [ label="create/start()" ]; + load_gen note load_gen [ label="loadgen simulates system load using 'stress' tool "]; + |||; + testcase => traffic_ctl [ label="send_traffic(traffic)" ]; + traffic_ctl note traffic_ctl [ label="'traffic' specifies the 'Traffic Type' from 01_testcases.conf as well as other traffic details" ]; + traffic_ctl => traffic_gen [label="send_rfc2544_throughput()"]; + traffic_gen note traffic_gen [label="The implementation is dependent on the vendor specific Traffic Gen used"]; + |||; + traffic_ctl << traffic_gen [label="returns results as str:value pairs"]; + testcase << traffic_ctl; + testcase => traffic_ctl [label="get_results()"]; + testcase => testcase [label="write_result_to_file()"]; + |||; + |||; +} + -- cgit 1.2.3-korg