summaryrefslogtreecommitdiffstats
path: root/docs/msc
diff options
context:
space:
mode:
Diffstat (limited to 'docs/msc')
-rwxr-xr-xdocs/msc/factory_and_loader.msc17
-rwxr-xr-xdocs/msc/traffic_controller.msc30
-rwxr-xr-xdocs/msc/vsperf.msc47
3 files changed, 94 insertions, 0 deletions
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()"];
+ |||;
+ |||;
+}
+