summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README44
-rw-r--r--benchmarks/playbooks/dhrystone.yaml4
-rw-r--r--benchmarks/playbooks/dpi.yaml5
-rw-r--r--benchmarks/playbooks/fio.yaml2
-rw-r--r--benchmarks/playbooks/git_proxy_pbook.yaml12
-rw-r--r--benchmarks/playbooks/iperf.yaml16
-rw-r--r--benchmarks/playbooks/ramspeed.yaml2
-rw-r--r--benchmarks/playbooks/ssl.yaml2
-rw-r--r--benchmarks/playbooks/sys_proxy_pbook.yaml53
-rw-r--r--benchmarks/playbooks/whetstone.yaml4
-rw-r--r--dashboard/pushtoDB.py114
-rw-r--r--docs/sample_config.yaml23
-rw-r--r--docs/user_guides/03-usage-guide.rst27
-rw-r--r--func/cli.py7
-rw-r--r--func/driver.py20
-rw-r--r--func/env_setup.py9
-rw-r--r--func/spawn_vm.py2
-rw-r--r--func/validate_yaml.py60
-rw-r--r--qtip.py46
-rw-r--r--requirements.txt8
-rw-r--r--test-requirements.txt5
-rw-r--r--test_cases/.TESTER.yaml.swobin12288 -> 0 bytes
-rw-r--r--test_cases/.TESTER.yaml.swpbin12288 -> 0 bytes
-rw-r--r--test_cases/default/storage/fio_bm.yaml2
-rw-r--r--test_cases/default/storage/fio_vm.yaml4
-rw-r--r--test_cases/zte-pod1/compute/dhrystone_bm.yaml39
-rw-r--r--test_cases/zte-pod1/compute/dhrystone_vm.yaml50
-rw-r--r--test_cases/zte-pod1/compute/dpi_bm.yaml40
-rw-r--r--test_cases/zte-pod1/compute/dpi_vm.yaml40
-rw-r--r--test_cases/zte-pod1/compute/ramspeed_bm.yaml40
-rw-r--r--test_cases/zte-pod1/compute/ramspeed_vm.yaml50
-rw-r--r--test_cases/zte-pod1/compute/ssl_bm.yaml36
-rw-r--r--test_cases/zte-pod1/compute/ssl_vm.yaml40
-rw-r--r--test_cases/zte-pod1/compute/whetstone_bm.yaml38
-rw-r--r--test_cases/zte-pod1/compute/whetstone_vm.yaml48
-rw-r--r--test_cases/zte-pod1/network/iperf_bm.yaml55
-rw-r--r--test_cases/zte-pod1/network/iperf_vm.yaml48
-rw-r--r--test_cases/zte-pod1/network/iperf_vm_2.yaml49
-rw-r--r--test_cases/zte-pod1/storage/fio_bm.yaml44
-rw-r--r--test_cases/zte-pod1/storage/fio_vm.yaml49
-rw-r--r--tox.ini31
41 files changed, 997 insertions, 171 deletions
diff --git a/README b/README
index 7976ba12..4f5759bc 100644
--- a/README
+++ b/README
@@ -1,23 +1,23 @@
-QTIP Benchmark sutie
+QTIP Benchmark Suite
---------------------
+QTIP is a benchmarking suite intended to benchmark the following components of the OPNFV Platform:
-QTIP is a benchmarking suite intendend to benchmark the following components of the OPNF Plaform:
1. Computing components
2. Networking components
3. Storage components
The efforts in QTIP are mostly focused on identifying
+
1. Benchmarks to run
2. Test cases in which these benchmarks to run
3. Automation of suite to run benchmarks within different test cases
4. Collection of test results
-
-
-QTIP Framework can now be called: (qtip.py).
+QTIP Framework can now be called: (qtip.py).
The Framework can run 5 computing benchmarks:
+
1. Dhrystone
2. Whetstone
3. RamBandwidth
@@ -25,47 +25,47 @@ The Framework can run 5 computing benchmarks:
5. nDPI
These benchmarks can be run in 2 test cases:
+
1. VM vs Baremetal
2. Baremetal vs Baremetal
Instructions to run the script:
-1. Download and source the OpenStack adminrc file for the deployment on which you want to create the VM for benchmarking
-2. run python qtip.py -s {SUITE} -b {BENCHMARK}
-3. run python qtip.py -h for more help
-4. list of benchmarks can be found in the qtip/test-cases directory
-5. SUITE referes to compute, network or storage
-Requirments:
+1. Download and source the OpenStack `adminrc` file for the deployment on which you want to create the VM for benchmarking
+2. run `python qtip.py -s {SUITE} -b {BENCHMARK}`
+3. run `python qtip.py -h` for more help
+4. list of benchmarks can be found in the `qtip/test_cases` directory
+5. SUITE refers to compute, network or storage
+
+Requirements:
+
1. Ansible 1.9.2
2. Python 2.7
3. PyYAML
Configuring Test Cases:
-Test cases can be found within the Test-cases directory.
+Test cases can be found within the `test_cases` directory.
For each Test case, a Config.yaml file contains the details for the machines upon which the benchmarks would run.
-Edit the IP and the Password fields within the files for the machines on which the benchmark is to run.
-A robust framework that would allow to include more tests would be included within the future
+Edit the IP and the Password fields within the files for the machines on which the benchmark is to run.
+A robust framework that would allow to include more tests would be included within the future.
Jump Host requirements:
+
The following packages should be installed on the server from which you intend to run QTIP.
+
1: Heat Client
2: Glance Client
3: Nova Client
4: Neutron Client
-5: Wget
-6: pyYaml
+5: wget
+6: PyYaml
Networking
+
1: The Host Machines/compute nodes to be benchmarked should have public/access network
2: The Host Machines/compute nodes should allow Password Login
-
QTIP support for Foreman
{TBA}
-
-
-
-
-
diff --git a/benchmarks/playbooks/dhrystone.yaml b/benchmarks/playbooks/dhrystone.yaml
index 3ea04382..82b24dd1 100644
--- a/benchmarks/playbooks/dhrystone.yaml
+++ b/benchmarks/playbooks/dhrystone.yaml
@@ -23,6 +23,8 @@
- name: make directory
shell: sudo mkdir $HOME/qtip_result
+ - include: ./sys_proxy_pbook.yaml
+
- include: ./sys_info_pbook.yaml
vars:
network: false
@@ -35,6 +37,8 @@
shell: sudo apt-get install git gcc patch perl -y
when: ansible_os_family == "Debian"
+ - include: ./git_proxy_pbook.yaml
+
- name: Clone unixbench
shell: git clone https://github.com/kdlucas/byte-unixbench.git $HOME/tempT
diff --git a/benchmarks/playbooks/dpi.yaml b/benchmarks/playbooks/dpi.yaml
index 48353d60..f4e6de8d 100644
--- a/benchmarks/playbooks/dpi.yaml
+++ b/benchmarks/playbooks/dpi.yaml
@@ -25,6 +25,9 @@
- name: make qtip_result
shell: sudo mkdir $HOME/qtip_result
+
+ - include: ./sys_proxy_pbook.yaml
+
- include: ./sys_info_pbook.yaml
vars:
network: false
@@ -40,6 +43,8 @@
- name: making nDPI temporary directory
shell: sudo mkdir $HOME/tempD
+ - include: ./git_proxy_pbook.yaml
+
- name: Clone nDPI
shell: cd $HOME/tempD && git clone https://github.com/ntop/nDPI.git
diff --git a/benchmarks/playbooks/fio.yaml b/benchmarks/playbooks/fio.yaml
index e9028cd0..3de237f2 100644
--- a/benchmarks/playbooks/fio.yaml
+++ b/benchmarks/playbooks/fio.yaml
@@ -27,6 +27,8 @@
- name: making results temporary directory
shell: sudo mkdir $HOME/qtip_result
+ - include: ./sys_proxy_pbook.yaml
+
- include: ./sys_info_pbook.yaml
vars:
network: false
diff --git a/benchmarks/playbooks/git_proxy_pbook.yaml b/benchmarks/playbooks/git_proxy_pbook.yaml
new file mode 100644
index 00000000..6d155a76
--- /dev/null
+++ b/benchmarks/playbooks/git_proxy_pbook.yaml
@@ -0,0 +1,12 @@
+
+#git
+- name: set git proxy(http)
+ shell: "git config --global http.proxy {{ http_proxy }}"
+ when: http_proxy is defined
+ ignore_errors: yes
+
+- name: set git proxy(https)
+ shell: "git config --global https.proxy {{https_proxy}}"
+ when: https_proxy is defined
+ ignore_errors: yes
+
diff --git a/benchmarks/playbooks/iperf.yaml b/benchmarks/playbooks/iperf.yaml
index 4199b621..de1e5a4d 100644
--- a/benchmarks/playbooks/iperf.yaml
+++ b/benchmarks/playbooks/iperf.yaml
@@ -47,6 +47,8 @@
- name: making results temporary directory
shell: sudo mkdir $HOME/qtip_result
+ - include: ./sys_proxy_pbook.yaml
+
- include: ./sys_info_pbook.yaml
vars:
network: true
@@ -55,16 +57,12 @@
shell: sudo yum install epel-release -y
when: ansible_os_family == "RedHat"
- - name: Getting Firewall entry number
- shell: sudo iptables -L INPUT --line-number | grep DROP | awk '{print $1}'
- register: iptable_entry
- ignore_errors: yes
- when: installertype == 'fuel'
-
- - name: Removing entry number
- shell: sudo iptables -D INPUT {{iptable_entry.stdout}}
+ - name: Allow iperf server port in iptables input rules
+ shell: iptables -A INPUT -p tcp --dport {{iperf_port}} -j ACCEPT
+ vars:
+ iperf_port: 5201
ignore_errors: yes
- when: iptable_entry != '' and installertype == 'fuel'
+ when: rolename == "1-server" and installertype == 'fuel'
- name: Installing IPERF when Ubuntu
shell: sudo apt-get install iperf3 -y
diff --git a/benchmarks/playbooks/ramspeed.yaml b/benchmarks/playbooks/ramspeed.yaml
index b515111c..096c7320 100644
--- a/benchmarks/playbooks/ramspeed.yaml
+++ b/benchmarks/playbooks/ramspeed.yaml
@@ -27,6 +27,8 @@
- name: making results temporary directory
shell: sudo mkdir $HOME/qtip_result
+ - include: ./sys_proxy_pbook.yaml
+
- include: ./sys_info_pbook.yaml
vars:
network: false
diff --git a/benchmarks/playbooks/ssl.yaml b/benchmarks/playbooks/ssl.yaml
index eea18bf9..fcb7585c 100644
--- a/benchmarks/playbooks/ssl.yaml
+++ b/benchmarks/playbooks/ssl.yaml
@@ -25,6 +25,8 @@
- name: making results temporary directory
shell: sudo mkdir $HOME/qtip_result
+ - include: ./sys_proxy_pbook.yaml
+
- include: ./sys_info_pbook.yaml
vars:
network: false
diff --git a/benchmarks/playbooks/sys_proxy_pbook.yaml b/benchmarks/playbooks/sys_proxy_pbook.yaml
new file mode 100644
index 00000000..bf4a8ccb
--- /dev/null
+++ b/benchmarks/playbooks/sys_proxy_pbook.yaml
@@ -0,0 +1,53 @@
+#env
+- name: insert shell proxy http
+ lineinfile: dest=/etc/profile.d/proxy.sh state=present create=yes owner=root group=root mode=0644 regexp="export http_proxy={{ http_proxy }}"
+ insertafter=EOF line="export http_proxy={{ http_proxy }}"
+ when: http_proxy is defined
+ ignore_errors: yes
+
+- name: insert shell proxy https
+ lineinfile: dest=/etc/profile.d/proxy.sh state=present create=yes owner=root group=root mode=0644 regexp="export https_proxy={{ https_proxy }}"
+ insertafter=EOF line="export https_proxy={{ https_proxy }}"
+ when: https_proxy is defined
+ ignore_errors: yes
+
+- name: insert no proxy
+ lineinfile: dest=/etc/profile.d/proxy.sh state=present create=yes owner=root group=root mode=0644 regexp="{{ no_proxy }}"
+ insertafter=EOF line="export no_proxy={{ no_proxy }}"
+ when: no_proxy is defined
+ ignore_errors: yes
+
+#wget
+- name: insert wget proxy(http)
+ lineinfile: dest=/etc/wgetrc state=present regexp="http_proxy={{ http_proxy }}"
+ insertafter="^#http_proxy" line="http_proxy={{ http_proxy }}"
+ when: http_proxy is defined
+ ignore_errors: yes
+
+- name: insert wget proxy(https)
+ lineinfile: dest=/etc/wgetrc state=present regexp="https_proxy={{ https_proxy }}"
+ insertafter="^#https_proxy" line="https_proxy={{ https_proxy }}"
+ when: https_proxy is defined
+ ignore_errors: yes
+
+#yum
+- name: insert yum proxy(http)
+ lineinfile: dest=/etc/yum.conf state=present regexp="proxy={{ http_proxy }}"
+ insertafter=EOF line="proxy={{ http_proxy }}"
+ when: ansible_os_family == "RedHat" and http_proxy is defined
+ ignore_errors: yes
+
+#apt
+
+- name: insert apt proxy(http)
+ lineinfile: dest=/etc/apt/apt.conf state=present create=yes regexp="Acquire::http::Proxy \"{{ http_proxy }}\";"
+ insertafter=EOF line="Acquire::http::Proxy \"{{ http_proxy }}\";"
+ when: ansible_os_family == "Debian" and http_proxy is defined
+ ignore_errors: yes
+
+- name: insert apt proxy(https)
+ lineinfile: dest=/etc/apt/apt.conf state=present create=yes regexp="Acquire::https::Proxy \"{{ https_proxy }}\";"
+ insertafter=EOF line="Acquire::https::Proxy \"{{ https_proxy }}\";"
+ when: ansible_os_family == "Debian" and https_proxy is defined
+ ignore_errors: yes
+
diff --git a/benchmarks/playbooks/whetstone.yaml b/benchmarks/playbooks/whetstone.yaml
index b76c3063..efe78cfd 100644
--- a/benchmarks/playbooks/whetstone.yaml
+++ b/benchmarks/playbooks/whetstone.yaml
@@ -24,6 +24,8 @@
- name: make directory
shell: sudo mkdir $HOME/qtip_result
+ - include: ./sys_proxy_pbook.yaml
+
- include: ./sys_info_pbook.yaml
vars:
network: false
@@ -36,6 +38,8 @@
shell: sudo apt-get install git gcc patch perl -y
when: ansible_os_family == "Debian"
+ - include: ./git_proxy_pbook.yaml
+
- name: Clone unixbench
shell: git clone https://github.com/kdlucas/byte-unixbench.git $HOME/tempT
diff --git a/dashboard/pushtoDB.py b/dashboard/pushtoDB.py
index 750ec039..071e1dba 100644
--- a/dashboard/pushtoDB.py
+++ b/dashboard/pushtoDB.py
@@ -1,57 +1,57 @@
-import requests
-import json
-import datetime
-import os
-TEST_DB = 'http://testresults.opnfv.org/testapi'
-
-suite_list = [('compute_result.json', 'compute_test_suite'),('network_result.json', 'network_test_suite'),('storage_result.json', 'storage_test_suite')]
-payload_list = { }
-
-def push_results_to_db(db_url, case_name, payload,logger=None, pod_name="dell-us-testing-bm-1"):
-
- url = db_url + "/results"
- creation_date= str(datetime.datetime.utcnow().isoformat())
- installer = os.environ['INSTALLER_TYPE']
- pod_name = os.environ['NODE_NAME']
-
- params = {"project_name": "qtip", "case_name": case_name,
- "pod_name": pod_name, "installer": installer, "creation_date": creation_date,
- "version": "test" , "details": payload}
-
- headers = {'Content-Type': 'application/json'}
- print pod_name
- print installer
- print creation_date
-
- try:
- r = requests.post(url, data=json.dumps(params), headers=headers)
- print r
- return True
- except:
- print "Error:", sys.exc_info()[0]
- return False
-
-def populate_payload(suite_list):
-
- global payload_list
- for k,v in suite_list:
-
- if os.path.isfile('results/'+str(k)):
- payload_list[k]=v
-
-def main():
-
- global payload_list
- populate_payload(suite_list)
- if payload_list:
- print payload_list
- for suite,case in payload_list.items():
- with open('results/'+suite,'r') as result_file:
- j=json.load(result_file)
- push_results_to_db(TEST_DB, case , j)
- elif not payload_list:
- print 'Results not found'
-
-
-if __name__ == "__main__":
- main()
+import requests
+import json
+import datetime
+import os
+TEST_DB = 'http://testresults.opnfv.org/test/api/v1'
+
+suite_list = [('compute_result.json', 'compute_test_suite'),('network_result.json', 'network_test_suite'),('storage_result.json', 'storage_test_suite')]
+payload_list = { }
+
+def push_results_to_db(db_url, case_name, payload,logger=None, pod_name="dell-us-testing-bm-1"):
+
+ url = db_url + "/results"
+ creation_date= str(datetime.datetime.utcnow().isoformat())
+ installer = os.environ['INSTALLER_TYPE']
+ pod_name = os.environ['NODE_NAME']
+
+ params = {"project_name": "qtip", "case_name": case_name,
+ "pod_name": pod_name, "installer": installer, "creation_date": creation_date,
+ "version": "test" , "details": payload}
+
+ headers = {'Content-Type': 'application/json'}
+ print pod_name
+ print installer
+ print creation_date
+
+ try:
+ r = requests.post(url, data=json.dumps(params), headers=headers)
+ print r
+ return True
+ except:
+ print "Error:", sys.exc_info()[0]
+ return False
+
+def populate_payload(suite_list):
+
+ global payload_list
+ for k,v in suite_list:
+
+ if os.path.isfile('results/'+str(k)):
+ payload_list[k]=v
+
+def main():
+
+ global payload_list
+ populate_payload(suite_list)
+ if payload_list:
+ print payload_list
+ for suite,case in payload_list.items():
+ with open('results/'+suite,'r') as result_file:
+ j=json.load(result_file)
+ push_results_to_db(TEST_DB, case , j)
+ elif not payload_list:
+ print 'Results not found'
+
+
+if __name__ == "__main__":
+ main()
diff --git a/docs/sample_config.yaml b/docs/sample_config.yaml
index 3bfca80d..8dcaa11c 100644
--- a/docs/sample_config.yaml
+++ b/docs/sample_config.yaml
@@ -1,18 +1,18 @@
- ## This is a sample Config.yaml file
+ ## 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 he differnet machines on which the benchmark would run.
-# On machines lised within hosts, the benchmarks would run in parallel.
+# 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:
+Scenario:
benchmark: dhrystone
host: machine_1, machine_2, virtualmachine_1
- server:
+ server:
-#Context would define the enviironment on wichic to run:
+#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:
@@ -21,15 +21,20 @@ Context:
ip: 172.18.0.16
pw: Op3nStack
role: host
- Virtual_Machines:
+ 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 geeral description of the testcase. Could be used later for reports.
+# A general description of the testcase. Could be used later for reports.
Test_Description:
Test_category: "Compute"
Benchmark: "dhrystone"
@@ -43,5 +48,3 @@ Test_Description:
OS_image:
flavor:
role: '''
-
-
diff --git a/docs/user_guides/03-usage-guide.rst b/docs/user_guides/03-usage-guide.rst
index 69eed348..56cc16b3 100644
--- a/docs/user_guides/03-usage-guide.rst
+++ b/docs/user_guides/03-usage-guide.rst
@@ -243,6 +243,33 @@ virtualmachine_1 and then run on 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:
------------------------------
::
diff --git a/func/cli.py b/func/cli.py
index a99e9d0f..76e0e19a 100644
--- a/func/cli.py
+++ b/func/cli.py
@@ -87,7 +87,7 @@ class cli():
obj=''
obj = Env_setup()
if os.path.isfile('./test_cases/'+args.lab.lower()+'/'+suite[0]+'/' +benchmarks[items]):
- [benchmark, roles, vm_info, benchmark_details, pip] = obj.parse('./test_cases/'
+ [benchmark, roles, vm_info, benchmark_details, pip, proxy_info] = obj.parse('./test_cases/'
+args.lab.lower()+'/'+suite[0]+'/'+benchmarks[items])
if len(vm_info) != 0:
@@ -101,7 +101,8 @@ class cli():
obj.roles_dict.items(),
self._get_fname(benchmarks[items]),
benchmark_details,
- obj.ip_pw_dict.items())
+ obj.ip_pw_dict.items(),
+ proxy_info)
else:
- print (args.benchmark, ' is not a Template in the Directory - \
+ print (benchmarks[items], ' is not a Template in the Directory - \
Enter a Valid file name. or use qtip.py -h for list')
diff --git a/func/driver.py b/func/driver.py
index 94fc1432..48c09c5d 100644
--- a/func/driver.py
+++ b/func/driver.py
@@ -21,20 +21,22 @@ class Driver:
print os.environ['PWD']
self.dic_json = defaultdict()
- def drive_bench(self, benchmark, roles, benchmark_fname, benchmark_detail = None, pip_dict = None):
-
+ def drive_bench(self, benchmark, roles, benchmark_fname, benchmark_detail = None, pip_dict = None, proxy_info = None):
roles= sorted(roles)
pip_dict = sorted(pip_dict)
result_dir = 'results'
benchmark_name = benchmark + '.yaml'
self.dic_json['Dest_dir'] = str(result_dir)
- self.dic_json['ip1']=''
- self.dic_json['ip2']=''
- self.dic_json['installer']=str(os.environ['INSTALLER_TYPE'])
- self.dic_json['workingdir']=str(os.environ['PWD'])
- self.dic_json['fname']=str(benchmark_fname)
- self.dic_json['username']= str('root')
-
+ self.dic_json['ip1'] = ''
+ self.dic_json['ip2'] = ''
+ self.dic_json['installer'] = str(os.environ['INSTALLER_TYPE'])
+ self.dic_json['workingdir'] = str(os.environ['PWD'])
+ self.dic_json['fname'] = str(benchmark_fname)
+ self.dic_json['username'] = str('root')
+
+ for key in proxy_info.keys():
+ self.dic_json[key] = proxy_info[key]
+
if os.environ['INSTALLER_TYPE'] == str('joid'):
self.dic_json['username']=str('ubuntu')
if os.environ['INSTALLER_TYPE'] == str('apex'):
diff --git a/func/env_setup.py b/func/env_setup.py
index 9fd7c106..487d7af3 100644
--- a/func/env_setup.py
+++ b/func/env_setup.py
@@ -31,6 +31,7 @@ class Env_setup():
self.roles_dict.clear()
self.ip_pw_dict.clear()
self.ip_pip_list[:] = []
+ self.proxy_info = {}
self.vm_parameters.clear()
self.benchmark_details.clear()
self.benchmark = ''
@@ -141,6 +142,10 @@ class Env_setup():
self.GetHostMachineinfo(doc['Context']['Host_Machines'])
if doc.get('Scenario',{}).get('benchmark_details',{}):
self.GetBenchmarkDetails(doc.get('Scenario',{}).get('benchmark_details',{}))
+ if 'Proxy_Environment' in doc['Context'].keys():
+ self.proxy_info['http_proxy'] = doc['Context']['Proxy_Environment']['http_proxy']
+ self.proxy_info['https_proxy'] = doc['Context']['Proxy_Environment']['https_proxy']
+ self.proxy_info['no_proxy'] = doc['Context']['Proxy_Environment']['no_proxy']
for k, v in self.roles_ip_list:
self.roles_dict[k].append(v)
for k, v in self.ip_pw_list:
@@ -150,7 +155,9 @@ class Env_setup():
self.roles_dict.items(),
self.vm_parameters,
self.benchmark_details.items(),
- self.ip_pw_dict.items())
+ self.ip_pw_dict.items(),
+ self.proxy_info)
+
except KeyboardInterrupt:
fname.close()
print 'ConfigFile Closed: exiting!'
diff --git a/func/spawn_vm.py b/func/spawn_vm.py
index 9d1d0bad..94aa424a 100644
--- a/func/spawn_vm.py
+++ b/func/spawn_vm.py
@@ -51,7 +51,7 @@ class SpawnVM(Env_setup):
'''
print 'Getting Public Network'
if installer_detected.lower() == 'fuel':
- return 'net04_ext'
+ return 'admin_floating_net'
if installer_detected.lower() == 'apex':
return 'external'
if installer_detected.lower() == 'compass':
diff --git a/func/validate_yaml.py b/func/validate_yaml.py
index e4d3d5cf..fcf32a21 100644
--- a/func/validate_yaml.py
+++ b/func/validate_yaml.py
@@ -1,32 +1,28 @@
-##############################################################################
-# Copyright (c) 2015 Dell Inc and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-
-
-import yaml
-import os
-
-
-class Validate_Yaml():
-
- def __init__(self, doc):
-
- print 'Validating YAML CONFIG FILE'
-
- if not doc['Scenario']:
- print '\nScenario Field missing\n'
- if not doc['Scenario']['benchmark']:
- print '\nBenchmark field missing'
- if not doc['Scenario']['pointless']:
- print ''
- if not doc['Context']:
- print '\nEntire Context is missing'
- if not doc['Context']['Host_Machine']:
- print '\nNo Host Machine'
- if not doc['Context']['Host_Machine']['machine_1']
+##############################################################################
+# Copyright (c) 2015 Dell Inc and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+
+class Validate_Yaml(object):
+
+ def __init__(self, doc):
+
+ print('Validating YAML CONFIG FILE')
+
+ if not doc['Scenario']:
+ print('\nScenario Field missing\na')
+ if not doc['Scenario']['benchmark']:
+ print('\nBenchmark field missing')
+ if not doc['Scenario']['pointless']:
+ print('')
+ if not doc['Context']:
+ print('\nEntire Context is missing')
+ if not doc['Context']['Host_Machine']:
+ print('\nNo Host Machine')
+ if not doc['Context']['Host_Machine']['machine_1']:
+ print('\nNo Host Machine')
diff --git a/qtip.py b/qtip.py
index befbc23d..f95bb707 100644
--- a/qtip.py
+++ b/qtip.py
@@ -1,24 +1,22 @@
-##############################################################################
-# Copyright (c) 2015 Dell Inc and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-
-
-from func.cli import cli
-import os
-
-def main():
- os.system('./data/file_permission.sh')
- Objcli = cli()
-# os.system('cd data/ref_results && python compute_suite.py')
-# os.system('cd data/ref_results && python storage_suite.py')
-# os.system('cd data/ref_results && python network_suite.py')
-# os.system('cd data/report && python Qtip_Report.py')
-
-if __name__ == "__main__":
- main()
+##############################################################################
+# Copyright (c) 2015 Dell Inc and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+from func.cli import cli
+import os
+
+
+def main():
+ os.system('./data/file_permission.sh')
+ cli()
+# os.system('cd data/ref_results && python compute_suite.py')
+# os.system('cd data/ref_results && python storage_suite.py')
+# os.system('cd data/ref_results && python network_suite.py')
+# os.system('cd data/report && python Qtip_Report.py')
+
+if __name__ == "__main__":
+ main()
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 00000000..cc048389
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,8 @@
+pyyaml==3.10
+python-neutronclient==2.6.0
+python-novaclient==2.28.1
+python-glanceclient==1.1.0
+python-cinderclient==1.4.0
+python-heatclient==0.6.0
+python-keystoneclient==1.6.0
+reportlab==3.0
diff --git a/test-requirements.txt b/test-requirements.txt
new file mode 100644
index 00000000..e4a0274b
--- /dev/null
+++ b/test-requirements.txt
@@ -0,0 +1,5 @@
+# The order of packages is significant, because pip processes them in the order
+# of appearance. Changing the order has an impact on the overall integration
+# process, which may cause wedges in the gate later.
+
+pytest
diff --git a/test_cases/.TESTER.yaml.swo b/test_cases/.TESTER.yaml.swo
deleted file mode 100644
index b51f8c90..00000000
--- a/test_cases/.TESTER.yaml.swo
+++ /dev/null
Binary files differ
diff --git a/test_cases/.TESTER.yaml.swp b/test_cases/.TESTER.yaml.swp
deleted file mode 100644
index aa95a5c1..00000000
--- a/test_cases/.TESTER.yaml.swp
+++ /dev/null
Binary files differ
diff --git a/test_cases/default/storage/fio_bm.yaml b/test_cases/default/storage/fio_bm.yaml
index 5c5309e7..3b0ce3af 100644
--- a/test_cases/default/storage/fio_bm.yaml
+++ b/test_cases/default/storage/fio_bm.yaml
@@ -1,7 +1,7 @@
Scenario:
benchmark: fio
host: machine_1, machine_2
- server: blakc
+ server:
Context:
Host_Machines:
diff --git a/test_cases/default/storage/fio_vm.yaml b/test_cases/default/storage/fio_vm.yaml
index 5ae90d2c..0e7f121b 100644
--- a/test_cases/default/storage/fio_vm.yaml
+++ b/test_cases/default/storage/fio_vm.yaml
@@ -1,7 +1,7 @@
Scenario:
benchmark: fio
- host: machine_1, machine_2
- server: blakc
+ host: virtualmachine_1, virtualmachine_2
+ server:
Context:
Host_Machines:
diff --git a/test_cases/zte-pod1/compute/dhrystone_bm.yaml b/test_cases/zte-pod1/compute/dhrystone_bm.yaml
new file mode 100644
index 00000000..437dafd8
--- /dev/null
+++ b/test_cases/zte-pod1/compute/dhrystone_bm.yaml
@@ -0,0 +1,39 @@
+
+Scenario:
+ benchmark: dhrystone
+ host: machine_1, machine_2
+ server:
+
+Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.23
+ pw:
+ role: host
+ machine_2:
+ ip: 10.20.0.24
+ 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.*
+
+
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview: >
+ ''' This test will run the dhrystone benchmark in parallel 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/test_cases/zte-pod1/compute/dhrystone_vm.yaml b/test_cases/zte-pod1/compute/dhrystone_vm.yaml
new file mode 100644
index 00000000..6f213426
--- /dev/null
+++ b/test_cases/zte-pod1/compute/dhrystone_vm.yaml
@@ -0,0 +1,50 @@
+Scenario:
+ benchmark: dhrystone
+ host: virtualmachine_1, virtualmachine_2
+ server: blakc
+
+Context:
+ Host_Machines:
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: compute1
+ public_network: 'admin-floating_net'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+ virtualmachine_2:
+ availability_zone: compute2
+ public_network: 'admin-floating_net'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+
+ 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.*
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview: >
+ '''This test will run the dhrystone benchmark in parallel on machine_1 and machine_2.\n
+ if you wish to add a virtual machine add the following information under the Virtual_Machine tag
+ machine_1:
+ ip: 172.18.0.16
+ pw: Op3nStack
+ role: host
+ machine_2:
+ ip: 172.18.0.15
+ pw: Op3nStack
+ role: host
+
+ virtualmachine_1:
+ availability_zone:
+ public_network:
+ OS_image:
+ flavor:
+ role:
+ '''
+
diff --git a/test_cases/zte-pod1/compute/dpi_bm.yaml b/test_cases/zte-pod1/compute/dpi_bm.yaml
new file mode 100644
index 00000000..d1c5963e
--- /dev/null
+++ b/test_cases/zte-pod1/compute/dpi_bm.yaml
@@ -0,0 +1,40 @@
+Scenario:
+ benchmark: dpi
+ host: machine_1,machine_2
+
+Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.23
+ pw:
+ role: host
+ machine_2:
+ ip: 10.20.0.24
+ 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.*
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dpi"
+ Overview: >
+ '''This test will run the DPI benchmark in serial on virutalmachine_1 and virtualmachine_2.\n
+ if you wish to add a host machine add the following information under the Host_Machine tag
+ virtualmachine_2:
+ availability_zone: compute1
+ OS_image: QTIP_CentOS
+ public_network: 'provider_network'
+
+ role: 1host
+ flavor: m1.large
+ machine_1:
+ ip:
+ pw:
+ role:
+ '''
+
diff --git a/test_cases/zte-pod1/compute/dpi_vm.yaml b/test_cases/zte-pod1/compute/dpi_vm.yaml
new file mode 100644
index 00000000..d47b7f31
--- /dev/null
+++ b/test_cases/zte-pod1/compute/dpi_vm.yaml
@@ -0,0 +1,40 @@
+Scenario:
+ benchmark: dpi
+ 1Run : virtualmachine_1, virtualmachine_2
+
+Context:
+ Host_Machines:
+
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: compute1
+ OS_image: QTIP_CentOS
+ public_network: 'admin-floating_net'
+ role: 1Run
+ flavor: m1.large
+ virtualmachine_2:
+ availability_zone: compute2
+ OS_image: QTIP_CentOS
+ public_network: 'admin-floating_net'
+ role: 1Run
+ flavor: m1.large
+
+ 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.*
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dpi"
+ Overview: >
+ '''This test will run the DPI benchmark in parallel on virutalmachine_1 and virtualmachine_2.\n
+ if you wish to add a host machine add the following information under the Host_Machine tag
+
+ machine_1:
+ ip:
+ pw:
+ role:
+ '''
+
diff --git a/test_cases/zte-pod1/compute/ramspeed_bm.yaml b/test_cases/zte-pod1/compute/ramspeed_bm.yaml
new file mode 100644
index 00000000..d9e1f170
--- /dev/null
+++ b/test_cases/zte-pod1/compute/ramspeed_bm.yaml
@@ -0,0 +1,40 @@
+
+Scenario:
+ benchmark: ramspeed
+ host: machine_1, machine_2
+ server:
+
+Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.23
+ pw:
+ role: host
+ machine_2:
+ ip: 10.20.0.24
+ 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.*
+
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview: >
+ ''' This test will run the dhrystone benchmark in parallel 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/test_cases/zte-pod1/compute/ramspeed_vm.yaml b/test_cases/zte-pod1/compute/ramspeed_vm.yaml
new file mode 100644
index 00000000..942aa3fe
--- /dev/null
+++ b/test_cases/zte-pod1/compute/ramspeed_vm.yaml
@@ -0,0 +1,50 @@
+Scenario:
+ benchmark: ramspeed
+ host: virtualmachine_1, virtualmachine_2
+ server: blakc
+
+Context:
+ Host_Machines:
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: compute1
+ public_network: 'admin-floating_net'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+ virtualmachine_2:
+ availability_zone: compute2
+ public_network: 'admin-floating_net'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+
+ 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.*
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview: >
+ '''This test will run the dhrystone benchmark in parallel on machine_1 and machine_2.\n
+ if you wish to add a virtual machine add the following information under the Virtual_Machine tag
+ machine_1:
+ ip: 172.18.0.16
+ pw: Op3nStack
+ role: host
+ machine_2:
+ ip: 172.18.0.15
+ pw: Op3nStack
+ role: host
+
+ virtualmachine_1:
+ availability_zone:
+ public_network:
+ OS_image:
+ flavor:
+ role:
+ '''
+
diff --git a/test_cases/zte-pod1/compute/ssl_bm.yaml b/test_cases/zte-pod1/compute/ssl_bm.yaml
new file mode 100644
index 00000000..e4f608e6
--- /dev/null
+++ b/test_cases/zte-pod1/compute/ssl_bm.yaml
@@ -0,0 +1,36 @@
+Scenario:
+ benchmark: ssl
+ host: machine_1,machine_2
+
+Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.23
+ pw:
+ role: host
+ machine_2:
+ ip: 10.20.0.24
+ 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.*
+
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "ssl"
+ Overview: >
+ '''This test will run the SSL benchmark in parallel on machine_1 and machine_1.
+ 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/test_cases/zte-pod1/compute/ssl_vm.yaml b/test_cases/zte-pod1/compute/ssl_vm.yaml
new file mode 100644
index 00000000..cc97ecfd
--- /dev/null
+++ b/test_cases/zte-pod1/compute/ssl_vm.yaml
@@ -0,0 +1,40 @@
+Scenario:
+ benchmark: ssl
+ host: virtualmachine_1, virtualmachine_2
+
+Context:
+ Host_Machines:
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: compute1
+ public_network: 'admin-floating_net'
+ OS_image: 'QTIP_CentOS'
+ flavor: 'm1.large'
+ role: host
+ virtualmachine_2:
+ availability_zone: compute2
+ public_network: 'admin-floating_net'
+ OS_image: 'QTIP_CentOS'
+ flavor: 'm1.large'
+ role: host
+
+ 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.*
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "ssl"
+ Overview: >
+ '''This test will run the SSL benchmark in parallel on virtualmachine_1 and machine_1.\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/test_cases/zte-pod1/compute/whetstone_bm.yaml b/test_cases/zte-pod1/compute/whetstone_bm.yaml
new file mode 100644
index 00000000..6c703de1
--- /dev/null
+++ b/test_cases/zte-pod1/compute/whetstone_bm.yaml
@@ -0,0 +1,38 @@
+
+Scenario:
+ benchmark: whetstone
+ host: machine_1, machine_2
+
+
+Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.23
+ pw:
+ role: host
+ machine_2:
+ ip: 10.20.0.24
+ 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.*
+
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "whetstone"
+ Overview: >
+ ''' This test will run the whetstone benchmark in parallel on machine_1 and machine_2.\n
+ if you wish to add a baremetal machine add the following information under the Virtual_Machine tag
+
+ machine_3:
+ ip:
+ pw:
+ role:
+ '''
+
+
diff --git a/test_cases/zte-pod1/compute/whetstone_vm.yaml b/test_cases/zte-pod1/compute/whetstone_vm.yaml
new file mode 100644
index 00000000..bcde58c1
--- /dev/null
+++ b/test_cases/zte-pod1/compute/whetstone_vm.yaml
@@ -0,0 +1,48 @@
+Scenario:
+ benchmark: whetstone
+ host: virtualmachine_1, virtualmachine_1
+ server:
+
+Context:
+ Host_Machines:
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: compute1
+ public_network: 'admin-floating_net'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+ virtualmachine_2:
+ availability_zone: compute2
+ public_network: 'admin-floating_net'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+
+ 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.*
+
+Test_Description:
+ Test_category: "Compute"
+ Benchmark: "dhrystone"
+ Overview: >
+ '''This test will run the whetstone benchmark in parallel 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: nova
+ public_network: 'net04_ext'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+
+ virtualmachine_1:
+ availability_zone:
+ public_network:
+ OS_image:
+ flavor:
+ role:
+ '''
+
diff --git a/test_cases/zte-pod1/network/iperf_bm.yaml b/test_cases/zte-pod1/network/iperf_bm.yaml
new file mode 100644
index 00000000..5b2126fd
--- /dev/null
+++ b/test_cases/zte-pod1/network/iperf_bm.yaml
@@ -0,0 +1,55 @@
+Scenario:
+ benchmark: iperf
+ topology: Client and Server on different baremetal Compute nodes
+ server: machine_1
+ client: machine_2
+ benchmark_details:
+ duration: 20
+ protocol: tcp
+ bandwidthGbps: 10
+
+Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.23
+ pw:
+ role: 1-server
+ machine_2:
+ ip: 10.20.0.24
+ pw:
+ role: 2-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.*
+
+Test_Description:
+ Test_category: "network"
+ Benchmark: "iperf"
+ Overview: >
+ '''This test will run the IPERF benchmark on virutalmachine_1 and virtualmachine_2. On the\n
+ same compute node
+ if you wish to add a host machine add the following information under the Host_Machine tag
+ virtualmachine_1:
+ availability_zone: compute1
+ OS_image: QTIP_CentOS
+ public_network: 'net04_ext'
+ role: 1-server
+ flavor: m1.large
+
+ virtualmachine_2:
+ availability_zone: compute2
+ OS_image: QTIP_CentOS
+ public_network: 'net04_ext'
+ role: 2-host
+ flavor: m1.large
+
+ machine_1:
+ ip:
+ pw:
+ role:
+ '''
+
diff --git a/test_cases/zte-pod1/network/iperf_vm.yaml b/test_cases/zte-pod1/network/iperf_vm.yaml
new file mode 100644
index 00000000..f03b5b6f
--- /dev/null
+++ b/test_cases/zte-pod1/network/iperf_vm.yaml
@@ -0,0 +1,48 @@
+Scenario:
+ benchmark: iperf
+ topology: Client and Server on ONE compute
+ server : virtualmachine_1
+ client: virtualmachine_2
+ description: 'Leave the bandwidth as 0 to throttle maximum traffic'
+ benchmark_details:
+ duration: 20
+ protocol: tcp
+ bandwidthGbps: 0
+
+Context:
+ Host_Machines:
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: compute1
+ OS_image: QTIP_CentOS
+ public_network: 'admin-floating_net'
+ role: 1-server
+ flavor: m1.large
+
+ virtualmachine_2:
+ availability_zone: compute1
+ OS_image: QTIP_CentOS
+ public_network: 'admin-floating_net'
+ role: 2-host
+ flavor: m1.large
+
+ 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.*
+
+Test_Description:
+ Test_category: "network"
+ Benchmark: "iperf"
+ Overview: >
+ '''This test will run the IPERF benchmark on virutalmachine_1 and virtualmachine_2. On the\n
+ same compute node
+ if you wish to add a host machine add the following information under the Host_Machine tag
+
+ machine_1:
+ ip:
+ pw:
+ role:
+ '''
+
diff --git a/test_cases/zte-pod1/network/iperf_vm_2.yaml b/test_cases/zte-pod1/network/iperf_vm_2.yaml
new file mode 100644
index 00000000..649adf8c
--- /dev/null
+++ b/test_cases/zte-pod1/network/iperf_vm_2.yaml
@@ -0,0 +1,49 @@
+Scenario:
+ benchmark: iperf
+ topology: Client and Server on two different compute nodes
+ server : virtualmachine_1
+ client: virtualmachine_2
+ description: 'Leave the bandwidth as 0 to throttle maximum traffic'
+ benchmark_details:
+ duration: 20
+ protocol: tcp
+ bandwidthGbps: 0
+
+Context:
+ Host_Machines:
+
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: compute1
+ OS_image: QTIP_CentOS
+ public_network: 'admin-floating_net'
+ role: 1-server
+ flavor: m1.large
+
+ virtualmachine_2:
+ availability_zone: compute2
+ OS_image: QTIP_CentOS
+ public_network: 'admin-floating_net'
+ role: 2-host
+ flavor: m1.large
+
+ 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.*
+
+Test_Description:
+ Test_category: "network"
+ Benchmark: "iperf"
+ Overview: >
+ '''This test will run the IPERF benchmark on virutalmachine_1 and virtualmachine_2. On the\n
+ same compute node
+ if you wish to add a host machine add the following information under the Host_Machine tag
+
+ machine_1:
+ ip:
+ pw:
+ role:
+ '''
+
diff --git a/test_cases/zte-pod1/storage/fio_bm.yaml b/test_cases/zte-pod1/storage/fio_bm.yaml
new file mode 100644
index 00000000..d07623c5
--- /dev/null
+++ b/test_cases/zte-pod1/storage/fio_bm.yaml
@@ -0,0 +1,44 @@
+Scenario:
+ benchmark: fio
+ host: machine_1, machine_2
+ server:
+
+Context:
+ Host_Machines:
+ machine_1:
+ ip: 10.20.0.23
+ pw:
+ role: host
+ machine_2:
+ ip: 10.20.0.24
+ 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.*
+
+
+Test_Description:
+ Test_category: "Storage"
+ Benchmark: "FIO"
+ Overview: >
+ '''This test will run the FIO benchmark in parallel on host machines "machine_1" and "machine_2".\n
+ The fio job specifications can be found in qtip/benchmarks/fio_jobs/test_job.
+ The job conists of an fio load of:
+ 1.50% rand read 50% rand write
+ 2.Asynch engine
+ 3.Direct IO.
+ 4.Queing depth of 2
+
+ if you wish to add another machine add the following information under the Host_Machines tag
+ machine_3:
+ ip: 172.18.0.16
+ pw: Op3nStack
+ role: host
+ '''
+
diff --git a/test_cases/zte-pod1/storage/fio_vm.yaml b/test_cases/zte-pod1/storage/fio_vm.yaml
new file mode 100644
index 00000000..3e2f9174
--- /dev/null
+++ b/test_cases/zte-pod1/storage/fio_vm.yaml
@@ -0,0 +1,49 @@
+Scenario:
+ benchmark: fio
+ host: machine_1, machine_2
+ server:
+
+Context:
+ Host_Machines:
+
+ Virtual_Machines:
+ virtualmachine_1:
+ availability_zone: computer1
+ public_network: 'admin_floating_net'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+ virtualmachine_2:
+ availability_zone: computer2
+ public_network: 'admin-floating_net'
+ OS_image: QTIP_CentOS
+ flavor: m1.large
+ role: host
+
+ 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.*
+
+Test_Description:
+ Test_category: "Storage"
+ Benchmark: "FIO"
+ Overview: >
+ '''This test will run the FIO benchmark in parallel on virtualmachine_1 and virtualmachine_2.\n
+ The fio job specifications can be found in qtip/benchmarks/fio_jobs/test_job.
+ The job conists of an fio load of:
+ 1.50% rand read 50% rand write
+ 2.Asynch engine
+ 3.Direct IO.
+ 4.Queing depth of 2
+
+ if you wish to add a virtual machine add the following information under the Virtual_Machine tag
+
+ virtualmachine_3:
+ availability_zone:
+ public_network:
+ OS_image:
+ flavor:
+ role:
+ '''
+
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 00000000..3e5e1ef9
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,31 @@
+# Tox (http://tox.testrun.org/) is a tool for running tests
+# in multiple virtualenvs. This configuration file will run the
+# test suite on all supported python versions. To use it, "pip install tox"
+# and then run "tox" from this directory.
+
+[tox]
+envlist = py27
+skipsdist = True
+
+[testenv]
+changedir=tests
+deps =
+ -r{toxinidir}/requirements.txt
+ -r{toxinidir}/test-requirements.txt
+commands=
+ py.test \
+ --basetemp={envtmpdir} \ # py.test tempdir setting
+ {posargs} # substitute with tox' positional arguments
+
+[testenv:pep8]
+deps = flake8
+commands = flake8 {toxinidir}
+
+[flake8]
+# H803 skipped on purpose per list discussion.
+# E123, E125 skipped as they are invalid PEP-8.
+
+show-source = True
+ignore = E123,E125,H803
+builtins = _
+exclude=.venv,.git,.tox,dist,doc,build