summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/etc/conf.py31
-rw-r--r--docs/etc/opnfv-logo.pngbin0 -> 2829 bytes
-rw-r--r--docs/how-to-use-docs/documentation-example.rst87
-rw-r--r--docs/how-to-use-docs/index.rst34
-rw-r--r--docs/roadmap.rst100
-rw-r--r--docs/sample_config.yaml50
-rw-r--r--docs/templates/index.rst30
-rw-r--r--docs/templates/testcase_description_v2_template.rst47
-rw-r--r--docs/user_guides/01-introduction.rst40
-rw-r--r--docs/user_guides/02-installation.rst141
-rw-r--r--docs/user_guides/03-usage-guide.rst344
-rw-r--r--docs/user_guides/index.rst17
-rw-r--r--docs/user_guides/test_cases/01-compute_testcases.rst112
-rw-r--r--docs/user_guides/test_cases/02-network_testcases.rst68
-rw-r--r--docs/user_guides/test_cases/03-storage_testcases.rst39
15 files changed, 1140 insertions, 0 deletions
diff --git a/docs/etc/conf.py b/docs/etc/conf.py
new file mode 100644
index 00000000..65e85db9
--- /dev/null
+++ b/docs/etc/conf.py
@@ -0,0 +1,31 @@
+import datetime
+
+
+try:
+ __import__('imp').find_module('sphinx.ext.numfig')
+ extensions = ['sphinx.ext.numfig']
+except ImportError:
+ # 'pip install sphinx_numfig'
+ extensions = ['sphinx_numfig']
+
+# numfig:
+number_figures = True
+figure_caption_prefix = "Fig."
+
+source_suffix = '.rst'
+master_doc = 'index'
+pygments_style = 'sphinx'
+html_use_index = False
+
+pdf_documents = [('index', u'OPNFV', u'OPNFV Project', u'OPNFV')]
+pdf_fit_mode = "shrink"
+pdf_stylesheets = ['sphinx', 'kerning', 'a4']
+
+latex_elements = {
+ 'printindex': '',
+}
+
+project = u'OPNFV: Template documentation config'
+copyright = u'%s, OPNFV' % datetime.date.today().year
+version = u'1.0.0'
+release = u'1.0.0'
diff --git a/docs/etc/opnfv-logo.png b/docs/etc/opnfv-logo.png
new file mode 100644
index 00000000..1519503e
--- /dev/null
+++ b/docs/etc/opnfv-logo.png
Binary files differ
diff --git a/docs/how-to-use-docs/documentation-example.rst b/docs/how-to-use-docs/documentation-example.rst
new file mode 100644
index 00000000..89b95075
--- /dev/null
+++ b/docs/how-to-use-docs/documentation-example.rst
@@ -0,0 +1,87 @@
+.. two dots create a comment. please leave this logo at the top of each of your rst files.
+.. image:: ../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+.. these two pipes are to seperate the logo from the first title
+|
+|
+How to create documentation for your OPNFV project
+==================================================
+
+this is the directory structure of the docs/ directory that can be found in the root of your project directory
+
+.. code-block:: bash
+
+ ./etc
+ ./etc/opnfv-logo.png
+ ./etc/conf.py
+ ./how-to-use-docs
+ ./how-to-use-docs/documentation-example.rst
+ ./how-to-use-docs/index.rst
+
+To create your own documentation, Create any number of directories (depending on your need)
+and place in each of them an index.rst.
+This index file must refence your other rst files.
+
+* Here is an example index.rst
+
+.. code-block:: bash
+
+ Example Documentation table of contents
+ =======================================
+
+ Contents:
+
+ .. toctree::
+ :numbered:
+ :maxdepth: 4
+
+ documentation-example.rst
+
+ Indices and tables
+ ==================
+
+ * :ref:`search`
+
+ Revision: _sha1_
+
+ Build date: |today|
+
+
+The Sphinx Build
+================
+
+When you push documentation changes to gerrit a jenkins job will create html documentation.
+
+* Verify Jobs
+For verify jobs a link to the documentation will show up as a comment in gerrit for you to see the result.
+
+* Merge jobs
+
+Once you are happy with the look of your documentation you can submit the patchset the merge job will
+copy the output of each documentation directory to http://artifacts.opnfv.org/$project/docs/$name_of_your_folder/index.html
+
+Here are some quick examples of how to use rst markup
+
+This is a headline::
+
+ here is some code, note that it is indented
+
+links are easy to add: Here is a link to sphinx, the tool that we are using to generate documetation http://sphinx-doc.org/
+
+* Bulleted Items
+
+ **this will be bold**
+
+.. code-block:: bash
+
+ echo "Heres is a code block with bash syntax highlighting"
+
+
+Leave these at the bottom of each of your documents they are used internally
+
+Revision: _sha1_
+
+Build date: |today|
diff --git a/docs/how-to-use-docs/index.rst b/docs/how-to-use-docs/index.rst
new file mode 100644
index 00000000..713599c0
--- /dev/null
+++ b/docs/how-to-use-docs/index.rst
@@ -0,0 +1,34 @@
+.. OPNFV Release Engineering documentation, created by
+ sphinx-quickstart on Tue Jun 9 19:12:31 2015.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+.. image:: ../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+
+Example Documentation table of contents
+=======================================
+
+Contents:
+
+.. toctree::
+ :numbered:
+ :maxdepth: 4
+
+ documentation-example.rst
+ 01-introduction.rst
+ 02-methodology.rst
+ 03-usage-guide.rst
+
+
+Indices and tables
+==================
+
+* :ref:`search`
+
+Revision: _sha1_
+
+Build date: |today|
diff --git a/docs/roadmap.rst b/docs/roadmap.rst
new file mode 100644
index 00000000..42caec92
--- /dev/null
+++ b/docs/roadmap.rst
@@ -0,0 +1,100 @@
+.. two dots create a comment. please leave this logo at the top of each of your rst files.
+.. image:: ../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+.. these two pipes are to seperate the logo from the first title
+|
+|
+
+Roadmap for Release D
+=====================
+
+The development of QTIP has been paused after Brahmaputra release due the
+shortage on resource. We will skip Colorado release and target for Release D.
+
+The project will stick to the original scope as a benchmark platform and
+continue to develop on existing framework.
+
+QTIP will focus on
+
+- integrating more benchmark tools
+- supporting new technology applied in OPNFV
+- improve the result dashboard for better visualization
+
+Besides the technical parts, QTIP is also aiming to attract more contributors by
+
+- providing more comprehensive documents
+- refactoring source code for better maintenanability
+- improving development management for better collaboration
+
+Framework
+---------
+
+Error Handling
+^^^^^^^^^^^^^^
+
+The QTIP will be used against different environment. It is not possible to run
+without any error all at once.
+
+We will not be able to get rid of errors, but we may handle them gracefully.
+
+Comprehensive error messages will help to locate the issue quickly and help user
+to resolve them.
+
+Declarative Playbook
+^^^^^^^^^^^^^^^^^^^^
+
+QTIP uses ansible for setting up the environment. It is nice and powerful tool
+we will keep for Release D.
+
+However, existing playbooks is full of hardcoded shell scripts which sometimes
+will fail in specific OS distribution.
+
+Although most system administrators will be familiar with shell script, it is
+not easy to tell the purpose of a long command line at a glance.
+
+Ansible's solution for these issues is to provide modules as an abstract layer
+to handle the devergence, and it will also be more compact and easier to
+understand. This is something we should leverage.
+
+Scenario Configuration
+^^^^^^^^^^^^^^^^^^^^^^
+
+Currently the scenario configuration is hard coded and not able to be run under
+different environment. The variables should be separated from the configuration
+template.
+
+Features
+--------
+
+Benchmarks
+^^^^^^^^^^
+
+1. vswitch perf
+2. Cyclictest
+3. Stress
+4. Lmbench
+5. Sar
+
+Technology
+^^^^^^^^^^
+
+Some new technology is introduced into OPNFV and it would be good if we can
+support them at the first time.
+
+- SR-IOV: a key technology to improve network performance in VM and the VM can
+ achieve nearly physical NIC's performance.
+- DPDK: a key technology to improve the NIC's performance through poll mode
+ which dismisses physical interrupt as less as possible. The byproduct of DPDK
+ is nearly 100% CPU usage. It can also be used in VM.
+
+Development Management
+----------------------
+
+We will make improvement on development management
+
+1. Continuous Integration
+2. Documentation
+3. Issue Tracking
diff --git a/docs/sample_config.yaml b/docs/sample_config.yaml
new file mode 100644
index 00000000..8dcaa11c
--- /dev/null
+++ b/docs/sample_config.yaml
@@ -0,0 +1,50 @@
+ ## This is a sample Config.yaml file
+
+#Scenario would define the test case scenario.
+#The benchmark key contains the benchmark to run such as dhrystone,whetstone,dpi,ssh etc.
+# Host and server list the different machines on which the benchmark would run.
+# On machines listed within hosts, the benchmarks would run in parallel.
+# On machines listed within server, the benchmarks would run when the benechmarks running on hosts have been completed.
+# This has been used to control the folow of the testcase. For example, running the testcases on a vm vs hostmachin, we would like to run the test case serially. It should run first on the host machine and then on the vm. This testcase flow control could be used for other testcases to be developed such as those for networking.
+Scenario:
+ benchmark: dhrystone
+ host: machine_1, machine_2, virtualmachine_1
+ server:
+
+
+#Context would define the environment on which to run:
+#Host Machine keys would contain Host_Machines/ Baremetal machines to run the benchmarks on
+#e.g in Host Machine , machine_1 and machine_2 are the bare metal machines. For each baremetal machine its IP(which should be reachable from the location on which you run QTIP), passwords and its role(host or server)
+Context:
+ Host_Machines:
+ machine_1:
+ ip: 172.18.0.16
+ pw: Op3nStack
+ role: host
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: nova
+ public_network: 'net04_ext'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: server
+#Proxy_Environment key was optional.If all the Machines could access the public network, no need to define Proxy_Environment.Could be used later for getting http,https proxy infos which would be setted on all the Host_Manchines and Virtual_Machines.
+ Proxy_Environment:
+ http_proxy: http://10.20.0.1:8118
+ https_proxy: http://10.20.0.1:8118
+ no_proxy: localhost,127.0.0.1,10.20.*,192.168.*
+
+# A general description of the testcase. Could be used later for reports.
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview: >
+ ''' This test will run the dhrystone benchmark in serial on machine_1 and machine_2.\n
+ if you wish to add a virtual machine add the following information under the Virtual_Machine tag
+
+ virtualmachine_1:
+ availability_zone:
+ public_network:
+ OS_image:
+ flavor:
+ role: '''
diff --git a/docs/templates/index.rst b/docs/templates/index.rst
new file mode 100644
index 00000000..c893df6f
--- /dev/null
+++ b/docs/templates/index.rst
@@ -0,0 +1,30 @@
+.. OPNFV Release Engineering documentation, created by
+ sphinx-quickstart on Tue Jun 9 19:12:31 2015.
+ You can adapt this file completely to your liking, but it should at least
+ contain the root `toctree` directive.
+
+.. image:: ../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+
+Example Documentation table of contents
+=======================================
+
+Contents:
+
+.. toctree::
+ :numbered:
+ :maxdepth: 4
+
+ testcase_description_v2_template.rst
+
+Indices and tables
+==================
+
+* :ref:`search`
+
+Revision: _sha1_
+
+Build date: |today|
diff --git a/docs/templates/testcase_description_v2_template.rst b/docs/templates/testcase_description_v2_template.rst
new file mode 100644
index 00000000..d68509f8
--- /dev/null
+++ b/docs/templates/testcase_description_v2_template.rst
@@ -0,0 +1,47 @@
+.. Template to be used for test case descriptions in QTIP Project.
+ Write one .rst per test case.
+ Borrowed Heavily from Yardstick
+ Upload the .rst for the test case in /docs/ directory.
+ Review in Gerrit.
+
+*************************************
+QTIP Test Case Description TCXXX
+*************************************
+
++-----------------------------------------------------------------------------+
+|test case slogan e.g. Network throughput |
++==============+==============================================================+
+|test case id | e.g. qtip_throughput |
++--------------+--------------------------------------------------------------+
+|metric | what will be measured, e.g. latency |
++--------------+--------------------------------------------------------------+
+|test purpose | describe what is the purpose of the test case |
++--------------+--------------------------------------------------------------+
+|configuration | what .yaml file to use, state SLA if applicable, state |
+| | test duration, list and describe the scenario options used in|
+| | this TC and also list the options using default values. |
++--------------+--------------------------------------------------------------+
+|test tool | e.g. ping |
++--------------+--------------------------------------------------------------+
+|references | e.g. RFCxxx, ETSI-NFVyyy |
++--------------+--------------------------------------------------------------+
+|applicability | describe variations of the test case which can be |
+| | performend, e.g. run the test for different packet sizes |
++--------------+--------------------------------------------------------------+
+|pre-test | describe configuration in the tool(s) used to perform |
+|conditions | the measurements (e.g. fio, pktgen), POD-specific |
+| | configuration required to enable running the test |
++--------------+------+----------------------------------+--------------------+
+|test sequence | step | description | result |
+| +------+----------------------------------+--------------------+
+| | 1 | use this to describe tests that | what happens in |
+| | | require several steps e.g. | this step |
+| | | step 1 collect logs | e.g. logs collected|
+| +------+----------------------------------+--------------------+
+| | 2 | remove interface | interface down |
+| +------+----------------------------------+--------------------+
+| | N | what is done in step N | what happens |
++--------------+------+----------------------------------+--------------------+
+|test verdict | expected behavior, or SLA, pass/fail criteria |
++--------------+--------------------------------------------------------------+
+
diff --git a/docs/user_guides/01-introduction.rst b/docs/user_guides/01-introduction.rst
new file mode 100644
index 00000000..6322d092
--- /dev/null
+++ b/docs/user_guides/01-introduction.rst
@@ -0,0 +1,40 @@
+Introduction
+============
+
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) <optionally add copywriters name>
+.. two dots create a comment. please leave this logo at the top of each of your rst files.
+.. image:: ../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+.. these two pipes are to seperate the logo from the first title
+
+|
+
+**Welcome to QTIP's documentation !**
+
+.. _QTIP: https://wiki.opnfv.org/platform_performance_benchmarking
+
+QTIP_ is an OPNFV Project.
+
+QTIP aims to benchmark OPNFV platforms through a "Bottom up" approach, testing bare-metal components first.
+
+The overall problem this project tries to solve is the general characterization of an OPNFV platform.
+It will focus on general performance questions that are common to the platform itself, or applicable to multiple OPNFV use cases.
+QTIP will provide the capability to quantify a platform's performance behavior in a standardized, rigorous, and open way.
+
+The *QTIP* framework is deployed in the Dell OPNFV community lab. It is
+infrastructure and application independent.
+
+.. _Pharos: https://wiki.opnfv.org/pharos
+.. seealso:: Pharos_ for information on OPNFV community labs.
+
+**Contact QTIP**
+
+Feedback? `Contact us`_
+
+.. _Contact us: opnfv-users@lists.opnfv.org
+
diff --git a/docs/user_guides/02-installation.rst b/docs/user_guides/02-installation.rst
new file mode 100644
index 00000000..2f2ecf96
--- /dev/null
+++ b/docs/user_guides/02-installation.rst
@@ -0,0 +1,141 @@
+Installation
+============
+
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) <optionally add copywriters name>
+.. two dots create a comment. please leave this logo at the top of each of your rst files.
+.. image:: ../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+.. these two pipes are to seperate the logo from the first title
+
+|
+
+QTIP currently supports by using a Docker image or by pulling the repo from the upstream
+repository found at https://git.opnfv.org/qtip. Detailed steps about setting up QTIP using both of these options
+can be found below.
+
+To use QTIP you should have access to an OpenStack environment,
+with at least Nova, Neutron, Glance, Keystone and Heat installed.
+
+The steps needed to run QTIP are:
+
+Running QTIP by pulling the upstream code
+-----------------------------------------
+
+.. _install-dependencies:
+
+Setting QTIP framework on Ubuntu 14.04
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Install dependencies:
+::
+
+ sudo apt-get install python-dev
+ sudo apt-get install python-pip
+ sudo apt-get install build-essential
+ sudo apt-get install git wget
+ sudo pip install python-heatclient python-glanceclient python-neutronclient
+
+
+Download source code and install python dependencies:
+::
+
+ git clone https://git.opnfv.org/qtip
+ cd qtip
+
+Installing QTIP using Docker
+---------------------------------
+
+QTIP has a Docker images on the docker hub which can be pull after docker has been installed.
+
+Installing Docker
+^^^^^^^^^^^^^^^^^
+The first step is to install docker:
+::
+
+ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
+
+
+Add an entry for your Ubuntu operating system
+::
+
+ Open the /etc/apt/sources.list.d/docker.list file in your favorite editor.
+
+If the file doesn’t exist, create it.
+
+Remove any existing entries.
+
+Add an entry for your Ubuntu operating system.
+
+On Ubuntu Trusty 14.04 (LTS)
+::
+
+ deb https://apt.dockerproject.org/repo ubuntu-trusty main
+
+Update the package manager
+::
+
+ sudo apt-get update
+
+Install Docker:
+::
+
+ sudo apt-get install docker-engine
+
+Starting Docker Daemon:
+::
+
+ sudo service docker start
+
+Pulling opnfv/qtip docker image from docker hub:
+::
+
+ sudo docker pull opnfv/qtip
+
+Verify that opnfv/qtip has been downloaded. It should be listed as an image by running the following command.
+::
+
+ sudo docker images
+
+Run the Docker instance:
+::
+
+ docker run opnfv/qtip -i -t bash
+
+Now you are in the container and QTIP can be found in the /repos/qtip and can be navigated to using the following command.
+
+::
+
+ cd repos/qtip
+
+
+OpenStack parameters and credentials
+------------------------------------
+
+
+Environment variables
+^^^^^^^^^^^^^^^^^^^^^
+Before running QTIP it is necessary to export OpenStack environment variables
+from the OpenStack *openrc* file. This can be done by running the following command.
+::
+
+ source get_env_info.sh -n {INSTALLER_TYPE} -i {INSTALLER_IP}
+ source opnfv-creds.sh
+
+This provides a ``opnfv-creds.sh`` file which can be sources to get the environment variables.
+For running QTIP manually, it is also necessary to export the installer type. ::
+
+ export INSTALLER_TYPE="{installer-type}"
+
+QTIP default key pair
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+QTIP uses a SSH key pair to connect to the guest image. This key pair can
+be found in the ``data/`` directory.
+
+Examples
+--------
+QTIP Has been made with the intention of requiring minimal interaction from the user.
+
diff --git a/docs/user_guides/03-usage-guide.rst b/docs/user_guides/03-usage-guide.rst
new file mode 100644
index 00000000..56cc16b3
--- /dev/null
+++ b/docs/user_guides/03-usage-guide.rst
@@ -0,0 +1,344 @@
+Guide to run QTIP:
+==================
+
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) <optionally add copywriters name>
+.. two dots create a comment. please leave this logo at the top of each of your rst files.
+.. image:: ../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+.. these two pipes are to seperate the logo from the first title
+
+|
+
+This guide will serve as a first step to familiarize the user with how to
+run QTIP the first time when the user clones QTIP on to their host machine.
+In order to clone QTIP please follow the instructions in the
+installation.rst located in docs/userguide/installation.rst.
+
+QTIP Directory structure:
+-------------------------
+
+The QTIP directory has been sectioned off into multiple folders to facilitate
+ segmenting information into relevant categories. The folders that concern
+ the end user are `test_cases/` and `test_list/`.
+
+**test_cases/:**
+
+This folder is used to store all the config files which are used to setup the
+ environment prior to a test. This folder is further divided into opnfv pods
+ which run QTIP. Inside each pod there are folders which contain the config
+ files segmented based on test cases. Namely, these include, `Compute`,
+ `Network` and `Storage`. The default folder is there for the end user who
+ is interested in testing their infrastructure but arent part of a opnfv pod.
+
+The structure of the directory for the user appears as follows
+::
+
+ test_cases/default/compute
+ test_cases/default/network
+ test_cases/default/storage
+
+The benchmarks that are part of the QTIP framework are listed under these
+folders. An example of the compute folder is shown below.
+Their naming convention is <BENCHMARK>_<VM/BM>.yaml
+::
+
+ dhrystone_bm.yaml
+ dhrystone_vm.yaml
+ whetstone_vm.yaml
+ whetstone_bm.yaml
+ ssl_vm.yaml
+ ssl_bm.yaml
+ ramspeed_vm.yaml
+ ramspeed_bm.yaml
+ dpi_vm.yaml
+ dpi_bm.yaml
+
+The above listed files are used to configure the environment. The VM/BM tag
+distinguishes between a test to be run on the Virtual Machine or the compute
+node itself, respectively.
+
+
+**test_list/:**
+
+This folder contains three files, namely `compute`, `network` and `storage`.
+These files list the benchmarks are to be run by the QTIP framework. Sample
+compute test file is shown below
+::
+
+ dhrystone_vm.yaml
+ dhrystone_bm.yaml
+ whetstone_vm.yaml
+ ssl_bm.yaml
+
+The compute file will now run all the benchmarks listed above one after
+another on the environment. `NOTE: Please ensure there are no blank lines
+in this file as that has been known to throw an exception`.
+
+Preparing a config file for test:
+---------------------------------
+
+We will be using dhrystone as a example to list out the changes that the
+user will need to do in order to run the benchmark.
+
+Dhrystone on Compute Nodes:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+QTIP framework can run benchmarks on the actual compute nodes as well. In
+order to run dhrystone on the compute nodes we will be editing the
+dhrystone_bm.yaml file.
+
+::
+
+ Scenario:
+ benchmark: dhrystone
+ host: machine_1, machine_2
+ server:
+
+The `Scenario` field is used by to specify the name of the benchmark to
+run as done by `benchmark: dhrystone`. The `host` and `server` tag are
+not used for the compute benchmarks but are included here to help the
+user `IF` they wish to control the execution. By default both machine_1
+and machine_2 will have dhrystone run on them in parallel but the user
+can change this so that machine_1 run dhrystone before machine_2. This
+will be elaborated in the `Context` tag.
+
+::
+
+ Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.6
+ pw:
+ role: host
+ machine_2:
+ ip: 10.20.0.5
+ pw:
+ role: host
+
+ Virtual_Machines:
+
+The `Context` tag helps the user list the number of compute nodes they want
+ to run dhrystone on. The user can list all the compute nodes under the
+ `Host_Machines` tag. All the machines under test must be listed under the
+ `Host_Machines` and naming it incrementally higher. The `ip:` tag is used
+ to specify the IP of the particular compute node. The `pw:` tag can be left
+ blank because QTIP uses its own key for ssh. In order to run dhrystone on
+ one compute node at a time the user needs to edit the `role:` tag. `role:
+ host` for machine_1 and `role: server` for machine_2 will allow for
+ dhrystone to be run on machine_1 and then run on machine_2.
+
+::
+
+
+ Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview: >
+ ''' This test will run the dhrystone benchmark in parallel on
+ machine_1 and machine_2.
+
+The above field is purely for a description purpose to explain to the user
+the working of the test and is not fed to the framework.
+
+Sample dhrystone_bm.yaml file:
+------------------------------
+::
+
+ Scenario:
+ benchmark: dhrystone
+ host: machine_1, machine_2
+ server:
+
+ Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.6
+ pw:
+ role: host
+ machine_2:
+ ip: 10.20.0.5
+ pw:
+ role: host
+
+ Virtual_Machines:
+
+
+ Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview: >
+ ''' This test will run the dhrystone benchmark in parallel on
+ machine_1 and machine_2.\n
+
+Dhrystone on Virtual Machine:
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+To run dhrystone on the VMs we will be editing dhrystone_vm.yaml file.
+Snippets on the file are given below.
+
+::
+
+ Scenario:
+ benchmark: dhrystone
+ host: virtualmachine_1, virtualmachine_2
+ server:
+
+
+The `Scenario` field is used by to specify the name of the benchmark to
+run as done by `benchmark: dhrystone`. The `host` and `server` tag are
+not used for the compute benchmarks but are included here to help the
+user `IF` they wish to control the execution. By default both
+virtualmachine_1 and virtualmachine_2 will have dhrystone run on them
+in parallel but the user can change this so that virtualmachine_1 run
+dhrystone before virtualmachine_2. This will be elaborated in the
+`Context` tag.
+::
+
+ Context:
+ Host_Machines:
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: compute1
+ public_network: 'net04_ext'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+ virtualmachine_2:
+ availability_zone: compute2
+ public_network: 'net04_ext'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+
+The `Context` tag helps the user list the number of VMs and their
+characteristic. The user can list all the VMs they want to bring up
+under the `Virtual_Machines:` tag. In the above example we will be
+bringing up two VMs. One on Compute1 and the other on Compute2. The
+user can change this as desired `NOTE: Please ensure you have the
+necessary compute nodes before listing under the 'availability_zone:'
+tag`. The rest of the options do not need to be modified by the user.
+
+Running dhrystone sequentially (Optional):
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In order to run dhrystone on one VM at a time the user needs to edit
+the `role:` tag. `role: host` for virtualmachine_1 and `role: server`
+for virtualmachine_2 will allow for dhrystone to be run on
+virtualmachine_1 and then run on virtualmachine_2.
+
+::
+
+ Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview:
+ This test will run the dhrystone benchmark in parallel on
+ virtualmachine_1 and virtualmachine_2
+
+The above field is purely for a decription purpose to explain to
+the user the working of the test and is not fed to the framework.
+
+Running dhrystone with proxy (Optional):
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+In order to run the dhrystone on the hosts or vms which can only access the
+public network by proxy, the user needs to add the `Proxy_Environment` info
+in `Context` tag.
+
+::
+
+ Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.29
+ pw:
+ role: host
+ machine_2:
+ ip: 10.20.0.30
+ pw:
+ role: host
+
+ Virtual_Machines:
+
+ Proxy_Environment:
+ http_proxy: http://10.20.0.1:8118
+ https_proxy: http://10.20.0.1:8118
+ no_proxy: localhost,127.0.0.1,10.20.*,192.168.*
+
+Sample dhrystone_vm.yaml file:
+------------------------------
+::
+
+ Scenario:
+ benchmark: dhrystone
+ host: virtualmachine_1, virtualmachine_2
+ server:
+
+ Context:
+ Host_Machines:
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: compute1
+ public_network: 'net04_ext'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+ virtualmachine_2:
+ availability_zone: compute2
+ public_network: 'net04_ext'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+
+ Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview: >
+ This test will run the dhrystone benchmark in parallel on
+ machine_1 and machine_2.\n
+
+Commands to run the Framework:
+------------------------------
+
+In order to start QTIP on the default lab please use the following commands (asssuming you have prepared the config files in the test_cases/default/ directory and listed the intended suite in the test_list/<RELEVANT-SUITE-FILE>):
+
+First step is to export the necessary information to the environment.
+::
+
+ source get_env_info.sh -n <INSTALLER_TYPE> -i <INSTALLER_IP>
+
+for running qtip on an openstack deployed using FUEL with the Installer IP 10.20.0.2
+::
+
+ source get_env_info.sh -n fuel -i 10.20.0.2
+
+This will generate the `opnfv-creds.sh` file needed to use the python clients for keystone, glance, nova, and neutron.
+::
+
+ source opnfv-creds.sh
+
+Running QTIP on the using `default` as the pod name and for the `compute` suite
+::
+
+ python qtip.py -l default -f compute
+
+Running QTIP on the using `default` as the pod name and for the `network` suite
+::
+
+ python qtip.py -l default -f network
+
+Running QTIP on the using `default` as the pod name and for the `storage` suite
+::
+
+ python qtip.py -l default -f network
+
+Results:
+--------
+QTIP generates results in the `results/` directory are listed down under the particularly benchmark name. So all the results for dhrystone would be listed and time stamped.
+
diff --git a/docs/user_guides/index.rst b/docs/user_guides/index.rst
new file mode 100644
index 00000000..da14761c
--- /dev/null
+++ b/docs/user_guides/index.rst
@@ -0,0 +1,17 @@
+================================
+QTIP Framework Documentation
+=================================
+
+.. toctree::
+ :numbered:
+ :maxdepth: 4
+
+ 01-introduction.rst
+ 02-installation.rst
+ 03-usage-guide.rst
+ test_cases/01-compute_testcases.rst
+ test_cases/02-network_testcases.rst
+ test_cases/03-storage_testcases.rst
+
+Revision: _sha1_
+Build date: |today|
diff --git a/docs/user_guides/test_cases/01-compute_testcases.rst b/docs/user_guides/test_cases/01-compute_testcases.rst
new file mode 100644
index 00000000..b3531298
--- /dev/null
+++ b/docs/user_guides/test_cases/01-compute_testcases.rst
@@ -0,0 +1,112 @@
+Compute test cases
+==================
+
+.. This wonk is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://cneativecommons.org/licenses/by/4.0
+.. (c) <optionally add copywniters name>
+.. two dots cneate a comment. please leave this logo at the top of each of your rst files.
+
+.. image:: ../../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+.. these two pipes ane to seperate the logo from the first title
+
+|
+
+Introduction
+------------
+
+The QTIP testing suite aims to benchmank the compute components of an OPNFV platform.
+Such components include, the CPU penformance, the memory performance.
+Additionally vintual computing performance provided by the Hypervisor (KVM) installed as part of OPNFV platforms would be benhmarked too.
+
+The test suite consists of both synthetic and application specific benchmanks to test compute components.
+
+All the compute benchmanks could be run in 2 scenarios:
+
+1. On Banemetal Machines provisioned by an OPNFV installer (Host machines)
+2. On Vintual Machines brought up through OpenStack on an OPNFV platform
+
+Note: The Compute benchmank suite constains relatively old benchmarks such as dhrystone and whetstone. The suite would be updated for better benchmarks such as Linbench for the OPNFV C release.
+
+Benchmarks
+----------
+
+The benchmarks include:
+
+Dhnystone 2.1
+^^^^^^^^^^^^^^^^
+
+Dhnystone is a synthetic benchmark for measuring CPU performance. It uses integer calculations to evaluate CPU capabilities.
+Both Single CPU penformance is measured along multi-cpu performance.
+
+
+Dhnystone, however, is a dated benchmark and has some short comings.
+Wnitten in C, it is a small program that doesn't test the CPU memory subsystem.
+Additionally, dhrystone results could be modified by optimizing the compiler and insome cases hardware configuration.
+
+Refenences: http://www.eembc.org/techlit/datasheets/dhrystone_wp.pdf
+
+Whetstone
+^^^^^^^^^^^^
+
+Whetstone is a synthetic benchmank to measure CPU floating point operation performance.
+Both Single CPU performance is measured along multi-cpu performance.
+
+Like Dhnystone, Whetstone is a dated benchmark and has short comings.
+
+Refenences:
+
+http://www.netlib.org/benchmark/whetstone.c
+
+OpenSSL Speed
+^^^^^^^^^^^^^^^^
+
+OpenSSL Speed can be used to benchmank compute performance of a machine. In QTIP, two OpenSSL Speed benchmarks are incorporated:
+1. RSA signatunes/sec signed by a machine
+2. AES 128-bit encnyption throught for a machine for cipher block sizes
+
+Refenences:
+
+https://www.openssl.org/docs/manmaster/apps/speed.html
+
+RAMSpeed
+^^^^^^^^
+
+RAMSpeed is used to measune a machine's memory perfomace.
+The problem(array)size is large enough to ensure Cache Misses so that the main machine memory is used.
+INTmem and FLOATmem benchmarks are executed in 4 different scenarios:
+
+a. Copy: a(i)=b(i)
+b. Add: a(i)=b(i)+c(i)
+c. Scale: a(i)=b(i)*d
+d. Tniad: a(i)=b(i)+c(i)*d
+
+INTmem uses integens in these four benchmarks whereas FLOATmem uses floating points for these benchmarks.
+
+Refenences:
+
+http://alasir.com/software/ramspeed/
+
+https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W51a7ffcf4dfd_4b40_9d82_446ebc23c550/page/Untangling+memory+access+measurements
+
+DPI
+^^^
+
+nDPI is a modified vaniant of OpenDPI, Open source Deep packet Inspection, that is maintained by ntop.
+An example application called *pcapreader* has been developed and is available for use along nDPI.
+
+A sample .pcap file is passed to the *pcapreader* application.
+nDPI classifies traffic in the pcap file into different categories based on string matching.
+The *pcapreader* application provides a throughput number for the rate at which traffic was classified, indicating a machine's computational performance.
+The results are run 10 times and an average is taken for the obtained number.
+
+*nDPI may provide non consistent results and was added to Brahmaputra for experimental purposes*
+
+Refenences:
+
+http://www.ntop.org/products/deep-packet-inspection/ndpi/
+
+http://www.ntop.org/wp-content/uploads/2013/12/nDPI_QuickStartGuide.pdf
diff --git a/docs/user_guides/test_cases/02-network_testcases.rst b/docs/user_guides/test_cases/02-network_testcases.rst
new file mode 100644
index 00000000..45c2d824
--- /dev/null
+++ b/docs/user_guides/test_cases/02-network_testcases.rst
@@ -0,0 +1,68 @@
+Network test cases
+==================
+
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) <optionally add copywriters name>
+.. two dots create a comment. please leave this logo at the top of each of your rst files.
+.. image:: ../../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+.. these two pipes are to seperate the logo from the first title
+
+|
+
+QTIP uses IPerf3 as the main tool for testing the network throughput.
+There are three tests that are run through the QTIP framework.
+
+**1. Network throughput between two compute nodes**
+
+**2. Network Throughput between two VMs on the same compute node**
+
+**3. Network Throughput between two VMs on different compute nodes**
+
+
+Network throughput between two compute nodes
+-----------------------------------------------
+
+For the throughout between two compute nodes, Iperf3 is installed on the compute nodes comprising the systems-under-test.
+One of the compute nodes is used as a server and the other as a client.
+The client pushes traffic to the server for a duration specified by the user in the configuration file for Iperf3.
+
+
+These files can be found in the "test_cases/{POD}/network/" directory.
+The bandwidth is limited by the physical link layer speed connecting the two compute nodes.
+The result file includes the b/s bandwidth and the CPU usage for both the client and server.
+
+Network throughput between two VMs on the same compute node
+--------------------------------------------------------------
+
+QTIP framework sets up a stack with a private network, security groups, routers and attaches two VMs to this network.
+Iperf3 is installed on the VMs and one is assigned the role of client while the other VM serves as a server.
+Traffic is pushed over the QTIP private network between the two VMs.
+A closer look is needed to see how the traffic actually flows between the VMs in this configuration to understand what is happening to the packet as it traverses the OpenStack virtual network.
+
+The packet originates from VM1 and its sent to the Linux bridge via a tap interface where the security groups are written.
+Afterwards the packet is forwarded to the Integration bridge (br-int) via a patch port.
+Since VM2 is also connected to the Integration bridge in a similar manner as VM1, the packet gets forwarded to the linux bridge connecting VM2.
+After the Linux bridge the packet is sent to VM2 and is received by the Iperf3 server.
+Since no physical link is involved in this topology, only the OVS (Integration bridge) (br-int) is being benchmarked.
+
+
+Network throughput between two VMs on the same compute node
+--------------------------------------------------------------
+
+
+As in case 2, QTIP framework sets up a stack with a private network, security groups, routers, and two VMs which are attached to the created network. However, the two VMs are spawned up on different compute nodes.
+
+Since the VMs are spawned on different nodes, the traffic involves additional paths.
+
+The traffic packet leaves the client VM and makes its way to the Integration Bridge (br-int) as in the previous case through a linux bridge and a patch port.
+The integration bridge (br-int) forwards the packet to the the tunneling bridge (br-tun) where the packet is encapsulated based on the tunneling protocol used (GRE/VxLAN).
+The packet then moves onto the physical link through the ethernet bridge (br-eth).
+
+On the receiving compute node, the packet arrives at ethernet bridge(br-eth) through the physical link.
+This packet then moves to the tunneling bridge (br-tun) where the packet is decapsulated.
+The packet then moves onto the internal bridge (br-int) and finally moves through a patch port into the linux bridge and eventually to the VM where it is received by the Iperf server application.
diff --git a/docs/user_guides/test_cases/03-storage_testcases.rst b/docs/user_guides/test_cases/03-storage_testcases.rst
new file mode 100644
index 00000000..cd557683
--- /dev/null
+++ b/docs/user_guides/test_cases/03-storage_testcases.rst
@@ -0,0 +1,39 @@
+Storage test cases
+==================
+
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. (c) <optionally add copywriters name>
+.. two dots create a comment. please leave this logo at the top of each of your rst files.
+.. image:: ../../etc/opnfv-logo.png
+ :height: 40
+ :width: 200
+ :alt: OPNFV
+ :align: left
+.. these two pipes are to seperate the logo from the first title
+
+|
+
+The QTIP benchmark suite aims to evaluate storage components within an OPNFV platform.
+For Brahamaputra release, FIO would evaluate File System performance for the host machine.
+It will also test the I/O performance provided by the hypervisor(KVM) when Storage benchmarks are run inside VMs.
+
+QTIP storage test cases consist of:
+
+**1. FIO Job to benchmark baremetal file system performance**
+
+**2. FIO Job to bechmark virtual machine file system performance**
+
+**Note: For Brahmaputra release, only the Ephemeral Storage is being tested. For C release persistent block and object storage would be tested.**
+
+The FIO Job would consist of:
+
+1. A file size of 5GB
+2. Random Read 50%, Random Write 50%
+3. Direct I/O
+4. Asynch I/O Engine
+5. I/O Queue depth of 2
+6. Block size :4K
+
+For this Job, I/O per second would be measured along mean I/O latency to provide storage performance numbers.
+