From 0db3502c034ce309236f65a232b3a66e81acc4c6 Mon Sep 17 00:00:00 2001 From: ahothan Date: Tue, 28 Apr 2015 00:19:44 -0700 Subject: [PATCH] Update docuentation for genchart Change-Id: Idca3e09f93fd3a0e221044f51e1551127ccd9ef6 --- README.rst | 6 ++++- doc/source/images/genchart-sample.png | Bin 0 -> 80514 bytes doc/source/usage.rst | 31 ++++++++++++++++++++++++++ genchart.py | 2 +- 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 doc/source/images/genchart-sample.png diff --git a/README.rst b/README.rst index 720831c..952db7b 100644 --- a/README.rst +++ b/README.rst @@ -2,7 +2,7 @@ Overview ======== -VMTP is a data path performance tool for OpenStack clouds. +VMTP is a data path performance measurement tool for OpenStack clouds. Features @@ -92,7 +92,11 @@ VMTP will display the results to stdout with the following data: | | | average, min, max and stddev round trip time in ms Detailed results can also be stored in a file in JSON format using the *--json* command line argument and/or stored directly into a MongoDB server. See :download:`here <_static/example.json>` for an example JSON file that is generated by VMTP. +The packaged python tool genchart.py can be used to generate from the JSON result files column charts in HTML format visible from any browser. +Example of column chart generated by genchart.py: + +.. image:: images/genchart-sample.png Limitations and Caveats ----------------------- diff --git a/doc/source/images/genchart-sample.png b/doc/source/images/genchart-sample.png new file mode 100644 index 0000000000000000000000000000000000000000..02a3f3565d2c81b71152c33c4ac757bdd0cbd19f GIT binary patch literal 80514 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 literal 0 HcmV?d00001 diff --git a/doc/source/usage.rst b/doc/source/usage.rst index 8367ca0..3ce202e 100644 --- a/doc/source/usage.rst +++ b/doc/source/usage.rst @@ -275,3 +275,34 @@ It is possible to use VMTP to measure throughput for IPv6 Set ipv6_mode to slaac, dhcpv6-stateful or dhcpv6-stateless. If SLAAC or DHCPv6 stateless is enabled make sure to have radvd packaged in as part of openstack install. For DHCPv6 stateful you need dnsmasq version >= 2.68. The test creates 2 networks and creates 1 IPv4 and 1 IPv6 subnet inside each of these networks. The subnets are created based on the IPv6 mode that you set in the configuration file. The Floating IP result case is skipped for IPv6 since there is no concept of a floating ip with IPv6. +Generating charts from JSON results +----------------------------------- + +.. code:: + usage: genchart.py [-h] [-c ] [-b] [-p ] [-v] + [ ...] + + VMTP Chart Generator V0.0.1 + + positional arguments: + vmtp json result file + + optional arguments: + -h, --help show this help message and exit + -c , --chart + create and save chart in html file + -b, --browser display (-c) chart in the browser + -p , --protocol + select protocols:all, tcp, udp + -v, --version print version of this script and exit + +Examples of use: + +Generate charts from the JSON results file "tb172.json", store resulting html to "tb172.html" and open that file in the browser: +.. code:: + python genchart.py --chart tb172.html --browser tb172.json + +Same but only show UDP numbers: +.. code:: + python genchart.py --chart tb172.html --browser --protocol udp tb172.json + diff --git a/genchart.py b/genchart.py index 9fe3141..f8d87c9 100755 --- a/genchart.py +++ b/genchart.py @@ -216,7 +216,7 @@ class GoogleChartsBarChart: def plot(self, dest_file): with open(dest_file, 'w') as dest: - print('Plotting bar chart to ' + dest_file + '...') + print('Generating chart drawing code to ' + dest_file + '...') self._plot(dest) def gen_chart(files, chart_dest, browser, protocols=''):