diff options
41 files changed, 997 insertions, 171 deletions
@@ -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')
@@ -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 Binary files differdeleted file mode 100644 index b51f8c90..00000000 --- a/test_cases/.TESTER.yaml.swo +++ /dev/null diff --git a/test_cases/.TESTER.yaml.swp b/test_cases/.TESTER.yaml.swp Binary files differdeleted file mode 100644 index aa95a5c1..00000000 --- a/test_cases/.TESTER.yaml.swp +++ /dev/null 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 |