Additional comments & spellcheck for the README file
authorJan Medved <jmedved@cisco.com>
Sun, 12 Oct 2014 04:10:03 +0000 (21:10 -0700)
committerJan Medved <jmedved@cisco.com>
Sun, 12 Oct 2014 04:10:29 +0000 (21:10 -0700)
Change-Id: I47343143146aebafff769f3b244265747807f815
Signed-off-by: Jan Medved <jmedved@cisco.com>
test/tools/odl-mdsal-clustering-tests/clustering-performance-test/README

index 595e3b3d6a6d7455adf2c222932a4454996c3ffb..b0ce2ae3ef0bf07cf724195bd76982868b98cc75 100644 (file)
@@ -2,11 +2,14 @@ OpenDaylight Performance Test Suite
 ===================================
 
 The performance tests in this suite use ODL's RESTCONF API to add/delete
-flows into/from ODL's configuration data store. The test suite contains
-the following scripts:
+flows into/from ODL's configuration data store. The test suite is meant for
+manual performance testing, where a user can tests different ways/scale to
+add and delete flows.
+
+The test suite contains the following scripts:
 
 - inventory_crawler.py: 
-  Retrieves all nodes from either the confg or operational data store
+  Retrieves all nodes from either the config or operational data store
   and prints a flow summary to the console. Depending on the print level
   specified in a command line option, the summary can shows the overall
   number of flows in the network, the number of flows in each node, or 
@@ -14,10 +17,10 @@ the following scripts:
 
 - flow_config_blaster.py:
   Adds and deletes ("blasts") flows into ODL's config space. Command line
-  options control the number of "blaster" threads, the number of blast cycles,
-  the number of flows blasted in each cycle by each thread, etc. 
-  flow_config_blaster.py provides the FlowConfigBlaster class that is reusable 
-  in other tests, such as in flow_add_delete_test.py
+  options control the number of "blaster" threads, the number of blast 
+  cycles, the number of flows blasted in each cycle by each thread, etc. 
+  flow_config_blaster.py provides the FlowConfigBlaster class that is 
+  reusable in other tests, such as in flow_add_delete_test.py
 
 - config_cleanup.py:
   Cleans up the config data store by deleting the entire inventory.
@@ -25,11 +28,11 @@ the following scripts:
 - flow_add_delete_test.py:
   Adds/deletes ("blasts") flows into ODL's config space. Similar to the 
   flow_config_blaster (in fact, flow_config_blaster is used in this test),
-  but has more advanced handling of the add/delete cycles. The test executes
-  in three steps:
+  but has more advanced handling of the add/delete cycles. The test 
+  executes in three steps:
   1. The specified number of flows is added in the 'add cycle' (uses
      flow_config_blaster to blast flows)
-  2. The network is polled for flow statistics statistics from the network 
+  2. The network is polled for flow statistics from the network 
      (using the inventory_crawler) to make sure that all flows have been 
      properly programmed into the network and stats can properly read them
   3. The flows are deleted in the flow cycle (either in 'bulk' using the 
@@ -40,7 +43,7 @@ the following scripts:
 The Inventory Crawler:
 ======================
 To see the command line options, type:
-> ./inventory_cralwer --help
+> ./inventory_crawler --help
 
 usage: inventory_crawler.py [-h] [--odlhost ODLHOST] [--odlport ODLPORT]
                             [--plevel PLEVEL]
@@ -63,6 +66,18 @@ optional arguments:
   --debug               List nodes that have not provided proper statistics
                         data
 
+Examples:
+---------
+To show a summary of all flows shown in the network, type:
+> ./inventory_crawler.py --plevel=1 --auth
+
+NOTE: REST authentication is turned by default in ODL Helium. To use 
+authenticated REST, you have to specify the '--auth' switch in the command
+line.
+
+To show a summary of all flows shown in the config data store, type:
+> ./inventory_crawler.py --plevel=1 --datastore=config --auth
+
 
 
 The Flow Config Blaster:
@@ -87,7 +102,7 @@ optional arguments:
   --cycles CYCLES       Number of flow add/delete cycles to send in each
                         thread; default 1
   --threads THREADS     Number of request worker threads, default=1. Each
-                        thread will add/delete nflows.
+                        thread will add/delete flows.
   --nodes NODES         Number of nodes if mininet is not connected;
                         default=16. If mininet is connected, flows will be
                         evenly distributed (programmed) into connected nodes.
@@ -102,15 +117,57 @@ optional arguments:
   --startflow STARTFLOW
                         The starting Flow ID; default=0
 
-The 'startflow' command line parameter is used with multiple 
+NOTE: The 'startflow' command line parameter is used with multiple 
 flow_config_blasters blasting flows at the same ODL instance. With Python's
-GIL any given blastr can not use more than one CPU even when multiple blaster 
+GIL any given blaster can not use more than one CPU even when multiple blaster 
 threads are specified. Therefore, multiple blaster processes must be used to
-test ODL's preformance limits. The 'startflow' parameter gives each blaster 
+test ODL's performance limits. The 'startflow' parameter gives each blaster 
 process its own flow id space so that each injects unique flows into ODL's
 config data store.
 
+NOTE: You don't have to be connected to mininet (or another openflow network,
+for that matter) to use this script. If ODL is connected to an openflow 
+network, flow_config_blaster will evenly distribute flows across the network.
+If ODL is not connected to a network, flows are only stored in the config 
+data store (i.e. nodes that may connect at some point in the future are in 
+effect "preconfigured"). The not-connected mode can be used to test the 
+performance of the data store and the REST subsystems. The 'nodes' parameter determines how many nodes are used in the non-connected mode.
+
+Examples:
+---------
+To put 5000 flows into ODL running on the same node as the script type:
+   > ./flow_config_blaster.py --flows=5000 --auth --no-delete
+
+To use 5 threads to put 5000 flows into ODL running on the same node as 
+the script type:
+   > ./flow_config_blaster.py --threads=5 --flows=1000 --auth --no-delete
+
+   NOTE: each thread will put 1000 flows, and all 5 threads will work 
+   simultaneously.
+
+To first put and then delete 5000 flows into ODL running on the same node
+as the script type:
+   > ./flow_config_blaster.py --flows=5000 --auth
+
+To use 5 threads to first put and then delete 5000 flows into ODL running 
+on the same node as the script type:
+   > ./flow_config_blaster.py --threads=5 --flows=1000 --auth
+  
+ NOTE: 5 threads are used to both add and delete flows
+
+To use 5 threads to first put and then delete 5000 flows into ODL in 10 
+add/delete cycles type:
+   > ./flow_config_blaster.py --threads=5 --flows=100 --cycles=10 --auth
+
+   NOTE: 5 threads are used to both add and delete flows. 
+
+   NOTE: Both Add and Delete are performed in 10 cycles. 5 worker threads 
+   are started in each cycle and the cycle ends when all threads finish. 
+   Another cycle is started when the previous cycle finished. Cycles are
+   useful to determine performance degradation with increasing number of
+   flows in the datastore and in the network.
+
+
 
 The Config Cleanup
 ==================
@@ -160,7 +217,7 @@ optional arguments:
   --cycles CYCLES       Number of flow add/delete cycles to send in each
                         thread; default 1
   --threads THREADS     Number of request worker threads, default=1. Each
-                        thread will add/delete nflows.
+                        thread will add/delete FLOWS flows.
   --nodes NODES         Number of nodes if mininet is not connected;
                         default=16. If mininet is connected, flows will be
                         evenly distributed (programmed) into connected nodes.