diff options
36 files changed, 806 insertions, 96 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..7d440988 --- /dev/null +++ b/.gitignore @@ -0,0 +1,59 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*,cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ diff --git a/benchmarks/playbooks/dhrystone.yaml b/benchmarks/playbooks/dhrystone.yaml index 8d5f04a9..34ccfd89 100644 --- a/benchmarks/playbooks/dhrystone.yaml +++ b/benchmarks/playbooks/dhrystone.yaml @@ -19,8 +19,11 @@ - name: make directory shell: mkdir $HOME/qtip_result - include: ./sys_info_pbook.yaml +<<<<<<< HEAD vars: network: false +======= +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework - name: Installing UnixBench dependencies if CentOS shell: yum install git gcc patch perl-Time-HiRes -y when: ansible_os_family == "RedHat" diff --git a/benchmarks/playbooks/dpi.yaml b/benchmarks/playbooks/dpi.yaml index c18b75ac..b2c87d35 100644 --- a/benchmarks/playbooks/dpi.yaml +++ b/benchmarks/playbooks/dpi.yaml @@ -19,8 +19,11 @@ - name: make qtip_result shell: mkdir $HOME/qtip_result - include: ./sys_info_pbook.yaml +<<<<<<< HEAD vars: network: false +======= +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework - name: Installing nDPI dependencies if CentOS shell: yum install git gcc patch perl-Time-HiRes autofconf automake libpcap-devel libtool -y when: ansible_os_family == "RedHat" diff --git a/benchmarks/playbooks/info_script/info_collect.py b/benchmarks/playbooks/info_script/info_collect.py index b352651e..6dbb51b3 100644 --- a/benchmarks/playbooks/info_script/info_collect.py +++ b/benchmarks/playbooks/info_script/info_collect.py @@ -3,6 +3,7 @@ import pickle import time import datetime import json +<<<<<<< HEAD import sys os.system('inxi -b -c0 -n > $PWD/est_2') @@ -92,3 +93,106 @@ with open('./sys_info_temp','w+')as out_info: with open('temp','w+') as result_json: json.dump(Info_dict,result_json,indent=4,sort_keys=True) +======= + +os.system('inxi -b -c0 -n > $PWD/est_2') +est_ob = open("est_2", "r+") +est_ob2 = open("est_1", "w+") +in_string = est_ob.read().replace('\n', ' ') + +est_ob2.write(in_string) +est_ob.close() +est_ob2.close() + +Info_dict = {} +inxi_host = os.popen( + """cat $PWD/est_1 | grep -o -P '(?<=Host:).*(?=Kernel)' """).read().lstrip().rstrip() +inxi_mem = os.popen( + """inxi -c0 | grep -o -P '(?<=Mem~).*(?=HDD)' """).read().lstrip().rstrip() +inxi_cpu = os.popen( + """cat $PWD/est_1 | grep -o -P '(?<=CPU).*(?=speed)' | cut -f2 -d':'""").read().lstrip().rstrip() +#inxi_Speed=os.popen(""" cat $PWD/est_1 | grep -o -P '(?<=max:).*(?=Graphics)' """).read().rstrip().lstrip() +inxi_distro = os.popen( + """ cat $PWD/est_1 | grep -o -P '(?<=Distro:).*(?=Machine:)' """).read().rstrip().lstrip() +inxi_kernel = os.popen( + """ cat $PWD/est_1 | grep -o -P '(?<=Kernel:).*(?=Console:)' """).read().rstrip().lstrip() +inxi_HD = os.popen( + """ cat $PWD/est_1 | grep -o -P '(?<=HDD Total Size:).*(?=Info:)' """).read().rstrip().lstrip() +#inxi_system=os.popen(""" cat $PWD/est_1 | grep -o -P '(?<=Machine System:).*(?=product:)' """).read().rstrip().lstrip() +inxi_product = os.popen( + """ cat $PWD/est_1 | grep -o -P '(?<=product:).*(?=Mobo:)' """).read().rstrip().lstrip() +# print inxi_system + + +Info_dict['1_Hostname'] = inxi_host +Info_dict['2_Product'] = inxi_product +Info_dict['3_OS Distribution'] = inxi_distro +Info_dict['4_Kernel'] = inxi_kernel +Info_dict['5_CPU'] = inxi_cpu +Info_dict['6_Memory Usage'] = inxi_mem +Info_dict['7_Disk usage'] = inxi_HD +Info_dict['8_Network_Interfaces'] = {} + +tem_2 = """ cat $PWD/est_1 | grep -o -P '(?<=Network:).*(?=Info:)'""" +print os.system(tem_2 + ' > Hello') +i = int(os.popen(tem_2 + " | grep -o 'Card' | wc -l ").read()) +print i + + +for x in range(1, i + 1): + tem = """ cat $PWD/est_1 | grep -o -P '(?<=Card-""" + str( + x) + """:).*(?=Card-""" + str(x + 1) + """)'""" + if i == 1: + tem = """ cat $PWD/est_1 | grep -o -P '(?<=Network:).*(?=Info:)'""" + inxi_card_1 = ( + (os.popen( + tem + + " | grep -o -P '(?<=Card:).*(?=Drives:)'|sed 's/ *driver:.*//'").read().rstrip().lstrip())) + print inxi_card_1 + Info_dict['8_Network_Interfaces']['Interface_' + str(x)] = {} + Info_dict['8_Network_Interfaces'][ + 'Interface_' + str(x)]['1_Network_Card'] = inxi_card_1 + inxi_card_2 = ( + (os.popen( + tem + + "| grep -o -P '(?<=Card:).*(?=Drives:)'|sed -e 's/^.*IF: //'").read())).rstrip().lstrip() + Info_dict['8_Network_Interfaces'][ + 'Interface_' + str(x)]['2_Interface_info'] = inxi_card_2 + elif x < (i): + print "two" + #inxi_Card_temp=((os.popen(""" cat $PWD/est_1 | grep -o -P '(?<=Card-"""+str(x)+""":).*(?=Card-"""+str(x+1)+""")' """).read().rstrip().lstrip())) + inxi_card_1 = ( + (os.popen(tem + "| sed 's/ *driver:.*//'").read().rstrip().lstrip())) + Info_dict['8_Network_Interfaces']['Interface_' + str(x)] = {} + Info_dict['8_Network_Interfaces'][ + 'Interface_' + str(x)]['1_Network_Card'] = inxi_card_1 + inxi_card_2 = ( + (os.popen(tem + "|sed -e 's/^.*IF: //'").read())).rstrip().lstrip() + Info_dict['8_Network_Interfaces'][ + 'Interface_' + str(x)]['2_Interface_info'] = inxi_card_2 + elif x == i: + print "Three" + Info_dict['8_Network_Interfaces']['Interface_' + str(x)] = {} + inxi_card_1 = ( + (os.popen( + """ cat $PWD/est_1 | grep -o -P '(?<=Card-""" + + str(x) + + """:).*(?=Drives:)'| sed 's/ *driver:.*//' """).read().rstrip().lstrip())) + Info_dict['8_Network_Interfaces'][ + 'Interface_' + str(x)]['1_Network_Card'] = inxi_card_1 + inxi_card_2 = ( + (os.popen( + """ cat $PWD/est_1 | grep -o -P '(?<=Card-""" + + str(x) + + """:).*(?=Drives:)'| sed -e 's/^.*IF: //' """).read().rstrip().lstrip())) + Info_dict['8_Network_Interfaces'][ + 'Interface_' + str(x)]['2_Interface_info'] = inxi_card_2 + else: + print "No network cards" +print Info_dict +home_dir = str(os.popen("echo $HOME").read().rstrip()) +with open('./sys_info_temp', 'w+')as out_info: + pickle.dump(Info_dict, out_info) + +# json.dump(Info_dict, out_json, sort_keys=True,separators=(',',':'),indent=4) +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework diff --git a/benchmarks/playbooks/iperf.yaml b/benchmarks/playbooks/iperf.yaml new file mode 100644 index 00000000..9d4d185c --- /dev/null +++ b/benchmarks/playbooks/iperf.yaml @@ -0,0 +1,87 @@ + - hosts: 127.0.0.1 + connection: local + tasks: + + - name: getting directory + shell: echo $PWD + register: qtip_dir + - name: making Iperf directory + file: path=../../{{Dest_dir}}/iperf state=directory + - name: making temporary iperf directory + file: path=../../{{Dest_dir}}/iperf/iperf_temp state=directory + + + - hosts: "{{role}}" + tasks: + - name: Rolename + set_fact: + rolename: "{{role}}" + when: role is defined + - name: Get Hostname + shell: echo $HOSTNAME + register: hostID + - name: echo + shell: echo index_var + - name: checking_home directory + shell: echo $HOME + register: home_dir + - name: cleaning + shell: rm -rf $HOME/iperf + - name: cleaning previous results + shell: rm -rf $HOME/qtip_result + - name: making Iperf temporary directory + shell: mkdir $HOME/iperf + - name: making results temporary directory + shell: mkdir $HOME/qtip_result + - include: ./sys_info_pbook.yaml + - name: Installing Epel-release when CentOS + shell: yum install epel-release -y + when: ansible_os_family == "RedHat" + - name: Getting Firewall entry number + shell: iptables -L INPUT --line-number | grep DROP | awk '{print $1}' + register: iptable_entry + ignore_errors: yes + - name: Removing entry number + shell: iptables -D INPUT {{iptable_entry.stdout}} + ignore_errors: yes + when: iptable_entry != '' + - name: Installing IPERF when Ubuntu + shell: apt-get install iperf3 -y + when: ansible_os_family == "Debian" and rolename == '1-server' + - name: Installing Iperf3 + shell: yum install iperf3 -y + when: ansible_os_family == "RedHat" + - name: Running iperf on server + shell: iperf3 -s + async: 400 + poll: 0 + when: rolename == "1-server" + - name: Running Iperf on Host + shell: iperf3 -Z --{{protocol}} --time {{duration}} -b {{bandwidthGbps}}G -c {{item}} -J >> ./qtip_result/server{{hostID.stdout}}-{{item}}.json + ignore_errors: yes + with_items: + - "{{ip1}}" + - "{{ip2}}" + when: rolename == "2-host" and "{{ip2}}" != '' + - name: Running Iperf on Host + shell: iperf3 -Z --{{protocol}} --time {{duration}} -b {{bandwidthGbps}}G -c {{item}} -J >> ./qtip_result/server{{hostID.stdout}}-{{item}}.json + ignore_errors: yes + with_items: + - "{{ip1}}" + when: rolename == "2-host" and "{{ip2}}" == '' + - name: Files to Copy + shell: (cd $HOME/qtip_result/; find . -maxdepth 1 -name "*.json") | cut -d'/' -f2 + register: files_to_copy + - name: copy results + fetch: src={{home_dir.stdout}}/qtip_result/{{item}} dest=../../{{Dest_dir}}/iperf/iperf_temp + with_items: files_to_copy.stdout_lines + - hosts: 127.0.0.1 + connection: local + tasks: + - name: Rolename + set_fact: + rolename: "{{role}}" + when: role is defined + - name: extracting_json + shell: ( find ../../{{Dest_dir}}/iperf/iperf_temp/ -name "*.json" | xargs cp -t ../../{{Dest_dir}}/iperf/) + when: rolename == "2-host" diff --git a/benchmarks/playbooks/netperf.yaml b/benchmarks/playbooks/netperf.yaml new file mode 100644 index 00000000..fb6fd18a --- /dev/null +++ b/benchmarks/playbooks/netperf.yaml @@ -0,0 +1,74 @@ + - hosts: 127.0.0.1 + connection: local + tasks: + + - name: getting directory + shell: echo $PWD + register: qtip_dir + - name: making Netperf directory + file: path=../../{{Dest_dir}}/netperf state=directory + - name: making temporary netperf directory + file: path=../../{{Dest_dir}}/netperf/netperf_temp state=directory + + + - hosts: "{{role}}" + tasks: + - name: Rolename + set_fact: + rolename: "{{role}}" + when: role is defined + + - name: Get Hostname + shell: echo $HOSTNAME + register: hostID + - name: checking_home directory + shell: echo $HOME + register: home_dir + - name: cleaning + shell: rm -rf $HOME/netperf + - name: cleaning previous results + shell: rm -rf $HOME/qtip_result + - name: making netperf temporary directory + shell: mkdir $HOME/netperf + - name: making results temporary directory + shell: mkdir $HOME/qtip_result + + - name: Fetching netperf + shell: wget ftp://ftp.netperf.org/netperf/netperf-2.7.0.tar.gz + when: ansible_os_family == "RedHat" + - name: Extracting Netperf + shell: tar -xvf netperf-2.7.0.tar.gz + - name: configuring netperf + shell: cd $HOME/netperf-2.7.0 && ./configure + - name: Making Netperf + shell: cd $HOME/netperf-2.7.0 && make + - name: Installing Netperf + shell: cd $HOME/netperf-2.7.0 && make install + + - name: Running netperf on server + shell: /usr/local/bin/netserver -p 4000 + when: rolename == "1-server" + + - name: Running netperf on Host + shell: /usr/local/bin/netperf -H {{privateip1}} -p 4000 -l {{duration}} -t {{teststream}} -fG >> ./qtip_result/server{{hostID.stdout}}-{{item}}.json + ignore_errors: yes + with_items: + - "{{ip1}}" + when: rolename == "2-host" and "{{ip2}}" == '' + + - name: Files to Copy + shell: (cd $HOME/qtip_result/; find . -maxdepth 1 -name "*.json") | cut -d'/' -f2 + register: files_to_copy + - name: copy results + fetch: src={{home_dir.stdout}}/qtip_result/{{item}} dest=../../{{Dest_dir}}/netperf/netperf_temp + with_items: files_to_copy.stdout_lines + - hosts: 127.0.0.1 + connection: local + tasks: + - name: Rolename + set_fact: + rolename: "{{role}}" + when: role is defined + - name: extracting_json + shell: ( find ../../{{Dest_dir}}/netperf/netperf_temp/ -name "*.json" | xargs cp -t ../../{{Dest_dir}}/netperf/) + when: rolename == "2-host"
\ No newline at end of file diff --git a/benchmarks/playbooks/pktgen.yaml b/benchmarks/playbooks/pktgen.yaml new file mode 100644 index 00000000..04a0066e --- /dev/null +++ b/benchmarks/playbooks/pktgen.yaml @@ -0,0 +1,38 @@ + - hosts: 127.0.0.1 + connection: local + tasks: + + - name: getting directory + shell: echo $PWD + register: qtip_dir + - name: making pktgen directory + file: path=../../{{Dest_dir}}/pktgen state=directory + - name: making temporary pktgen directory + file: path=../../{{Dest_dir}}/pktgen/pktgen_temp state=directory + + + - hosts: "{{role}}" + tasks: + - name: Rolename + set_fact: + rolename: "{{role}}" + when: role is defined + + - name: IPTABLE Setup + shell: iptables -F + when: rolename == '1-server' + - name: iptables + shell: sudo iptables -A INPUT -p udp --dport 1000 -j DROP + when: rolename == '1-server' + - name: run pktgen + shell: bash pktgen.sh {{privateip1}} 1 {{packetsize}} {{duration}} >> .json + when: rolename == '2-host' + - hosts: "{{role}}" + tasks: + - name: Rolename + set_fact: + rolename: "{{role}}" + when: role is defined + - name: Get server packetsize + shell: iptables -L -vnx >> pktgenServer{{privateip1}}.txt + when: rolename == '1-server'
\ No newline at end of file diff --git a/benchmarks/playbooks/ramspeedbench.yaml b/benchmarks/playbooks/ramspeedbench.yaml new file mode 100644 index 00000000..d8136b08 --- /dev/null +++ b/benchmarks/playbooks/ramspeedbench.yaml @@ -0,0 +1,38 @@ + + - hosts: "{{ role }}" + + tasks: + - name: clean + shell: rm -rf /usr/bin/phoronix-test-suite + shell: rm -rf /usr/share/doc/phoronix-test-suite/ + shell: rm -rf /usr/share/phoronix-test-suite + shell: rm -rf /root/photmp/ + - name: clean previous results + file: path=/root/results path=absent + - name: make direc + file: path=/root/photmp/ state=directory + - name: Fetch Phornonix + shell: cd /root/photmp/ && wget https://www.dropbox.com/s/5kks513ozxy7vvs/phoronix-suite.tar.gz + - name: unarchive Phoronix + shell: cd /root/photmp/ && tar -zxvf phoronix-suite.tar.gz + - name: Phornonix Dependencies + shell: yum install php php-xml php-client php-process -y + - name: Install Phornonix + shell: cd /root/photmp/phoronix-test-suite-master/&&./install-sh + - name: batchSetup + shell: phoronix-test-suite batch-setup + - name: install + shell: phoronix-test-suite batch-install ramspeed + - name: run + shell: phoronix-test-suite batch-run ramspeed + - name: making directory + file: path=/root/results state=directory + - name: copying result to temp directory + shell: cp -r /var/lib/phoronix-test-suite/test-results/* /root/results/ + - name: registering files + shell: (cd /root/results/; find . -maxdepth 1 -type f) | cut -d'/' -f2 + register: files_to_copy + - name: copy results + fetch: src=/root/results/{{item}} dest={{Dest_dir}}/dhrystone + with_items: files_to_copy.stdout_lines + diff --git a/benchmarks/playbooks/result_transform/dpi/dpi_transform.py b/benchmarks/playbooks/result_transform/dpi/dpi_transform.py index 89e4f187..2aa45757 100644 --- a/benchmarks/playbooks/result_transform/dpi/dpi_transform.py +++ b/benchmarks/playbooks/result_transform/dpi/dpi_transform.py @@ -47,4 +47,8 @@ result['DPI_benchmark(M pps)'] = round(dpi_result_pps, 3) result['DPI_benchmark(Gb/s)'] = round(dpi_result_bps, 3) with open('./result_temp', 'w+') as result_file: pickle.dump(result, result_file) +<<<<<<< HEAD +======= +print json.dumps(result, indent=4, sort_keys=True) +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework diff --git a/benchmarks/playbooks/result_transform/dpi/final_report.py b/benchmarks/playbooks/result_transform/dpi/final_report.py new file mode 100644 index 00000000..be25daa8 --- /dev/null +++ b/benchmarks/playbooks/result_transform/dpi/final_report.py @@ -0,0 +1,20 @@ +import pickle +import json +import datetime +import sys + +with open('/root/qtip_result/sys_info_temp', 'r') as sys_info_f: + sys_info_dict = pickle.load(sys_info_f) +with open('/root/qtip_result/result_temp', 'r') as result_f: + result_dict = pickle.load(result_f) + +host_name = sys_info_dict['1_Hostname'] +benchmark_name = str(sys.argv[1]) +report_time_stamp = str(datetime.datetime.utcnow().isoformat()) +final_dict = {} +final_dict['1 Time of Report'] = report_time_stamp +final_dict['2 System Information'] = sys_info_dict +final_dict['3 ' + benchmark_name + ' result'] = result_dict + +with open('/root/qtip_result/' + host_name + '-' + report_time_stamp + '.json', 'w+') as result_json: + json.dump(final_dict, result_json, indent=4, sort_keys=True) diff --git a/benchmarks/playbooks/result_transform/ssl/ssl_transform.py b/benchmarks/playbooks/result_transform/ssl/ssl_transform.py index 188eb3d5..575b94a0 100644 --- a/benchmarks/playbooks/result_transform/ssl/ssl_transform.py +++ b/benchmarks/playbooks/result_transform/ssl/ssl_transform.py @@ -35,7 +35,11 @@ aes_1024B = os.popen( aes_8192B = os.popen( "cat AES-128-CBC_dump | grep 'aes-128-cbc ' | awk '{print $6}' ").read().rstrip() +<<<<<<< HEAD +======= +# def get_nova_client(self): +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework hostname = os.popen("hostname").read().rstrip() time_stamp = str(datetime.datetime.utcnow().isoformat()) @@ -43,6 +47,13 @@ time_stamp = str(datetime.datetime.utcnow().isoformat()) os.system("mv RSA_dump " + hostname + "-" + time_stamp + ".log") os.system("cat AES-128-CBC_dump >> " + hostname + "-" + time_stamp + ".log") +<<<<<<< HEAD +======= +# if self._glance_client is None: +## keystone = self.get_keystone_client() +# nova = client.Client('2', token = keystone.auth_token) + +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework result = {} @@ -64,4 +75,9 @@ result['3. AES-128-cbc throughput']['5. 16 Bytes block (B/sec)'] = [aes_8192B] with open('./result_temp', 'w+') as result_file: pickle.dump(result, result_file) +<<<<<<< HEAD +======= +# print json.dumps(result, indent=4, sort_keys=True) +# print result.items() +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework diff --git a/benchmarks/playbooks/ssl.yaml b/benchmarks/playbooks/ssl.yaml index 89020bd7..8b5b427b 100644 --- a/benchmarks/playbooks/ssl.yaml +++ b/benchmarks/playbooks/ssl.yaml @@ -2,9 +2,15 @@ connection: local tasks: - name: making ssl directory +<<<<<<< HEAD file: path={{Dest_dir}}/ssl state=directory - name: making temporary ssl directory file: path={{Dest_dir}}/ssl/ssl_temp state=directory +======= + file: path=../../{{Dest_dir}}/ssl state=directory + - name: making temporary ssl directory + file: path=../../{{Dest_dir}}/ssl/ssl_temp state=directory +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework - hosts: "{{role}}" @@ -22,8 +28,11 @@ - name: making results temporary directory shell: mkdir $HOME/qtip_result - include: ./sys_info_pbook.yaml +<<<<<<< HEAD vars: network: false +======= +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework - name: Installing OpenSSL dependencies when CentOS shell: yum install git wget gcc patch perl-Time-HiRes autofconf automake libpcap-devel libtool -y when: ansible_os_family == "RedHat" @@ -74,6 +83,7 @@ connection: local tasks: - name: extracting_json +<<<<<<< HEAD shell: ( find {{Dest_dir}}/ssl/ssl_temp/ -name "*.json" | xargs cp -t {{Dest_dir}}/ssl/) - name: making_logs_folder shell: mkdir -p {{Dest_dir}}/ssl/logs @@ -81,4 +91,13 @@ shell: ( find {{Dest_dir}}/ssl/ssl_temp/ -name "*.log" | xargs cp -t {{Dest_dir}}/ssl/logs) - name: removing ssl_temp shell: rm -rf {{Dest_dir}}/ssl/ssl_temp +======= + shell: ( find ../../{{Dest_dir}}/ssl/ssl_temp/ -name "*.json" | xargs cp -t ../../{{Dest_dir}}/ssl/) + - name: making_logs_folder + shell: mkdir -p {{../../Dest_dir}}/ssl/logs + - name: extracting_log + shell: ( find {{../../Dest_dir}}/ssl/ssl_temp/ -name "*.log" | xargs cp -t {{../../Dest_dir}}/ssl/logs) + - name: removing ssl_temp + shell: rm -rf {{../../Dest_dir}}/ssl/ssl_temp +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework diff --git a/benchmarks/playbooks/sys_info_pbook.yaml b/benchmarks/playbooks/sys_info_pbook.yaml index cc926b7e..9eca0bc3 100644 --- a/benchmarks/playbooks/sys_info_pbook.yaml +++ b/benchmarks/playbooks/sys_info_pbook.yaml @@ -7,6 +7,7 @@ - name: system info collection tool install when Ubuntu shell: apt-get install inxi -y when: ansible_os_family == "Debian" +<<<<<<< HEAD - name: Install ansible copy dependencies if remote host has selinux enabled shell: yum install libselinux-python -y when: ansible_os_family == "RedHat" @@ -21,5 +22,11 @@ - name: collecting system information for network test cases shell: cd $HOME/qtip_result && python info_collect.py n when: network +======= + - name: system_info script copy + copy: src=./info_script/info_collect.py dest={{home_dir.stdout}}/qtip_result/ + - name: collecting_sys_info + shell: cd $HOME/qtip_result && python info_collect.py +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework diff --git a/benchmarks/playbooks/whetstone.yaml b/benchmarks/playbooks/whetstone.yaml index c22ea433..71063815 100644 --- a/benchmarks/playbooks/whetstone.yaml +++ b/benchmarks/playbooks/whetstone.yaml @@ -20,8 +20,11 @@ - name: make directory shell: mkdir $HOME/qtip_result - include: ./sys_info_pbook.yaml +<<<<<<< HEAD vars: network: false +======= +>>>>>>> 5a7dcc0... Networking testcases for QTIP Framework - name: Installing UnixBench dependencies if CentOS shell: yum install git gcc patch perl-Time-HiRes -y when: ansible_os_family == "RedHat" diff --git a/func/__init__.pyc b/func/__init__.pyc Binary files differdeleted file mode 100644 index d217b489..00000000 --- a/func/__init__.pyc +++ /dev/null diff --git a/func/cli.py b/func/cli.py index 235040b5..33aacbcb 100644 --- a/func/cli.py +++ b/func/cli.py @@ -38,23 +38,19 @@ class cli(): sys.exit(0) if (args.suite and args.benchmark): obj = Env_setup() - if os.path.isfile( - './test_cases/' + - args.suite + - '/' + - args.benchmark): - - [benchmark, roles, vm_info] = obj.parse( - './test_cases/' + args.suite + '/' + args.benchmark) + if os.path.isfile('./test_cases/' + args.suite + + '/' + args.benchmark): + [benchmark, roles, vm_info, benchmark_details, pip] = obj.parse('./test_cases/' + args.suite + + '/' + args.benchmark) + if len(vm_info) != 0: vmObj = SpawnVM(vm_info) - obj.callpingtest() obj.callsshtest() obj.updateAnsible() dvr = Driver() - dvr.drive_bench(benchmark, obj.roles_dict.items()) + dvr.drive_bench(benchmark, obj.roles_dict.items(), benchmark_details, obj.ip_pw_dict.items()) else: print (args.benchmark, ' is not a Template in the Directory - \ Enter a Valid file name. or use qtip.py -h for list') diff --git a/func/cli.pyc b/func/cli.pyc Binary files differdeleted file mode 100644 index 3a09e907..00000000 --- a/func/cli.pyc +++ /dev/null diff --git a/func/create_zones.py b/func/create_zones.py index 92ce43fe..86cfc23b 100644 --- a/func/create_zones.py +++ b/func/create_zones.py @@ -13,6 +13,7 @@ from keystoneclient.auth.identity import v2 from keystoneclient import session from novaclient import client import os +import re from collections import defaultdict @@ -82,6 +83,11 @@ class create_zones: nova.aggregates.remove_host(id, host) nova.aggregates.delete(id) + def get_compute_num(self, computeName): + + num = re.findall(r'\d+',computeName) + return (int(num[0])-1) + def create_agg(self, D): nova = self._get_nova_client() hyper_list = nova.hypervisors.list() @@ -100,18 +106,19 @@ class create_zones: zone_machine[k].append(' ') for x in range(len(zone_machine)): - if not self.check_aggregate(nova, hostnA[x]): - agg_idA = nova.aggregates.create(hostnA[x], D[x]) - nova.aggregates.add_host(aggregate=agg_idA, host=hostnA[x]) + compute_index = self.get_compute_num(D[x]) + if not self.check_aggregate(nova, hostnA[compute_index]): + agg_idA = nova.aggregates.create(hostnA[compute_index], D[x]) + nova.aggregates.add_host(aggregate=agg_idA, host=hostnA[compute_index]) else: - id1 = self.get_aggregate_id(nova, hostnA[x]) - self.del_agg(nova, id1, hostnA[x]) - agg_idA = nova.aggregates.create(hostnA[x], D[x]) - id1 = self.get_aggregate_id(nova, hostnA[x]) + id1 = self.get_aggregate_id(nova, hostnA[compute_index]) + self.del_agg(nova, id1, hostnA[compute_index]) + agg_idA = nova.aggregates.create(hostnA[compute_index], D[x]) + id1 = self.get_aggregate_id(nova, hostnA[compute_index]) if not self.check_host_added_to_aggregate( - nova, id1, hostnA[x]): + nova, id1, hostnA[compute_index]): - nova.aggregates.add_host(aggregate=id1, host=hostnA[x]) + nova.aggregates.add_host(aggregate=id1, host=hostnA[compute_index]) diff --git a/func/create_zones.pyc b/func/create_zones.pyc Binary files differdeleted file mode 100644 index 4faf6abd..00000000 --- a/func/create_zones.pyc +++ /dev/null diff --git a/func/driver.py b/func/driver.py index 45ec3fa2..83e64a80 100644 --- a/func/driver.py +++ b/func/driver.py @@ -10,20 +10,41 @@ import os - +import json +from collections import defaultdict class Driver: def __init__(self): + print "Class driver initialized\n" + self.dic_json = defaultdict() - def drive_bench(self, benchmark, roles): - result_dir = '$PWD/results' + def drive_bench(self, benchmark, roles, benchmark_detail= None, pip_dict = None): + roles= sorted(roles) + pip_dict = sorted(pip_dict) + result_dir = 'results' benchmark_name = benchmark + '.yaml' - print roles + self.dic_json['Dest_dir'] = str(result_dir) + self.dic_json['ip1']='' + self.dic_json['ip2']='' + + for k,v in benchmark_detail: + self.dic_json[k]=v for k, v in roles: - print k - run_play = 'ansible-playbook -s $PWD/benchmarks/playbooks/{0} --extra-vars "Dest_dir={1} role={2}" -vvv'.format( - benchmark_name, result_dir, k) - + self.dic_json['role']=k + index=1 + if benchmark_detail != None: + for values in v: + if k == '1-server': + print values, 'saving IP' + self.dic_json['ip'+str(index)]= str(values) + self.dic_json['privateip'+str(index)] = pip_dict[0][1] + index= index+1 + dic_json = json.dumps(dict(self.dic_json.items())) + print dic_json + run_play = 'ansible-playbook -s ./benchmarks/playbooks/{0} --extra-vars \'{1}\' -vvv'.format(benchmark_name, dic_json) +# run_play = 'ansible-playbook -s $PWD/benchmarks/playbooks/{0} --extra-vars "Dest_dir={1} role={2}" -vvv'.format( +# benchmark_name, result_dir, k) status = os.system(run_play) + diff --git a/func/driver.pyc b/func/driver.pyc Binary files differdeleted file mode 100644 index 0ad3c584..00000000 --- a/func/driver.pyc +++ /dev/null diff --git a/func/env_setup.py b/func/env_setup.py index 919df176..1db54564 100644 --- a/func/env_setup.py +++ b/func/env_setup.py @@ -7,10 +7,6 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## - - - - import os import sys from collections import defaultdict @@ -23,12 +19,13 @@ class Env_setup(): ip_pw_list = [] # IP and password, this will be used to ssh roles_dict = defaultdict(list) ip_pw_dict = defaultdict(list) + ip_pip_list = [] vm_parameters = defaultdict(list) + benchmark_details= defaultdict() benchmark = '' def __init__(self): print '\nParsing class initiated\n' -# obj1 = SpawnVM() def writeTofile(self, role): fname2 = open('/etc/ansible/hosts', 'w') @@ -113,12 +110,17 @@ class Env_setup(): def GetVirtualMachineinfo(self, Virtualtag): num = len(Virtualtag) - for x in range(num): hostlabel = 'virtualmachine_' + str(x + 1) for k, v in Virtualtag[hostlabel].iteritems(): self.vm_parameters[k].append(v) + def GetBenchmarkDetails(self, detail_dic): + + print detail_dic + for k,v in detail_dic.items(): + self.benchmark_details[k]= v + def parse(self, configfilepath): try: fname = open(configfilepath, 'r+') @@ -131,12 +133,9 @@ class Env_setup(): self.GetVirtualMachineinfo(doc['Context']['Virtual_Machines']) if doc['Context']['Host_Machines']: self.GetHostMachineinfo(doc['Context']['Host_Machines']) - - # num = len(doc['Context']['Vir_Machines']) - # for x in range(num): - # lab = 'host_machine'+ str(x+1) - # self.roles_ip_list.insert(x,(doc[lab]['role'],doc[lab]['ip'])) - # self.ip_pw_list.insert(x,(doc[lab]['ip'],doc[lab]['pw'])) + if doc.get('Scenario',{}).get('benchmark_details',{}): + self.GetBenchmarkDetails(doc.get('Scenario',{}).get('benchmark_details',{})) + for k, v in self.roles_ip_list: self.roles_dict[k].append(v) for k, v in self.ip_pw_list: @@ -144,7 +143,9 @@ class Env_setup(): return ( self.benchmark, self.roles_dict.items(), - self.vm_parameters) + self.vm_parameters, + self.benchmark_details.items(), + self.ip_pw_dict.items()) except KeyboardInterrupt: fname.close() print 'ConfigFile Closed: exiting!' diff --git a/func/env_setup.pyc b/func/env_setup.pyc Binary files differdeleted file mode 100644 index 0f9c1433..00000000 --- a/func/env_setup.pyc +++ /dev/null diff --git a/func/fetchimg.pyc b/func/fetchimg.pyc Binary files differdeleted file mode 100644 index 0c0b228d..00000000 --- a/func/fetchimg.pyc +++ /dev/null diff --git a/func/spawn_vm.py b/func/spawn_vm.py index a9dada2e..c1bacedc 100644 --- a/func/spawn_vm.py +++ b/func/spawn_vm.py @@ -21,8 +21,6 @@ import glanceclient from novaclient import client import time import json - - from func.create_zones import create_zones @@ -81,17 +79,14 @@ class SpawnVM(Env_setup): 'type': 'string' } - - Heat_Dic['resources'][ - 'public_port_' + - str(x)] = { - 'type': 'OS::Neutron::Port', - 'properties': { - 'network': {'get_resource': 'private_network'}, - 'security_groups': [{ 'get_resource': 'demo1_security_Group'}], - 'fixed_ips': [ - { - 'subnet_id': {'get_resource': 'private_subnet'}}]}} + + Heat_Dic['resources']['public_port_' +str(x)] = { + 'type': 'OS::Neutron::Port', + 'properties': { + 'network': {'get_resource': 'private_network'}, + 'security_groups': [{ 'get_resource': 'demo1_security_Group'}], + 'fixed_ips': [ + {'subnet_id': {'get_resource': 'private_subnet'}}]}} Heat_Dic['resources']['floating_ip_' + str(x)] = { 'type': 'OS::Neutron::FloatingIP', @@ -108,11 +103,11 @@ class SpawnVM(Env_setup): 'type': 'OS::Nova::Server', 'properties': { 'image': img, - 'networks': - [{'port': {'get_resource': 'public_port_' + str(x)}}], + 'networks':[ + {'port': {'get_resource': 'public_port_' + str(x)}}], 'flavor': flavor, 'availability_zone': avail_zone, - 'name': 'QTIP_Instance_' + str(x), + 'name': 'instance' + str(x), 'key_name': {'get_resource': 'KeyPairSavePrivate'}, 'user_data_format': 'RAW', 'user_data': scriptcmd}} @@ -124,9 +119,15 @@ class SpawnVM(Env_setup): 'rules': [{ 'protocol': 'tcp', 'port_range_min': 22, - 'port_range_max': 22}, + 'port_range_max': 5201}, + {'protocol': 'udp', + 'port_range_min': 22, + 'port_range_max': 5201}, {'protocol': 'icmp'}]}} - + + Heat_Dic['outputs']['instance_PIP_' +str(x)] = { + 'description': 'IP address of the instance', + 'value': {'get_attr': ['my_instance_' + str(x), 'first_address']}} Heat_Dic['outputs']['instance_ip_' +str(x)] = { 'description': 'IP address of the instance', 'value': {'get_attr': ['floating_ip_' + str(x), 'floating_ip_address']}} @@ -205,10 +206,7 @@ class SpawnVM(Env_setup): qtip_image = glance.images.upload( qtip_image.id, open('./Temp_Img/QTIP_CentOS.qcow2')) json_temp = json.dumps(Heat_template) -# cluster_body = { -# "stack_name": stackname, -# "template": Heat_template -# } + for checks in range(3): for prev_stacks in heat.stacks.list(): @@ -219,12 +217,12 @@ class SpawnVM(Env_setup): print '\nStack Creating Started\n' - try: - heat.stacks.create(stack_name=stackname, template=Heat_template) - - except: - print 'Create Failed :( ' + # try: + heat.stacks.create(stack_name=stackname, template=Heat_template) + #except: + #print 'Create Failed :( ' + cluster_detail = heat.stacks.get(stackname) while(cluster_detail.status != 'COMPLETE'): if cluster_detail.status == 'IN_PROGRESS': @@ -242,18 +240,17 @@ class SpawnVM(Env_setup): if I['output_key'] == availabilityKey: zone.insert(s,str(I['output_value'])) - s=s+1 - + s=s+1 for i in cluster_detail.outputs: instanceKey = "instance_ip_" + str(vm + 1) - + privateIPkey = 'instance_PIP_' + str(vm +1) if i['output_key'] == instanceKey: - - Env_setup.roles_dict[vm_role_ip_dict['role'][ - vm]].append(str(i['output_value'])) - - Env_setup.ip_pw_list.append( - (str(i['output_value']),'')) + Env_setup.roles_dict[vm_role_ip_dict['role'][vm]].append( + str(i['output_value'])) + Env_setup.ip_pw_list.append((str(i['output_value']),'')) + + if i['output_key'] == privateIPkey: + Env_setup.ip_pw_dict[vm_role_ip_dict['role'][vm]]=str(i['output_value']) if i['output_key'] == 'KeyPair_PublicKey': sshkey = str(i['output_value']) diff --git a/func/spawn_vm.pyc b/func/spawn_vm.pyc Binary files differdeleted file mode 100644 index 8e6ce8f1..00000000 --- a/func/spawn_vm.pyc +++ /dev/null diff --git a/func/validate_yaml.pyc b/func/validate_yaml.pyc Binary files differdeleted file mode 100644 index 9a560316..00000000 --- a/func/validate_yaml.pyc +++ /dev/null diff --git a/results/INFO b/results/INFO deleted file mode 100644 index b97ca7e8..00000000 --- a/results/INFO +++ /dev/null @@ -1,2 +0,0 @@ -Results for QTIP will be stored in this directory -QTIP result directory will be made configurable soon diff --git a/results/foo.txt b/results/foo.txt new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/results/foo.txt diff --git a/test_cases/compute/dpi_parallel.yaml b/test_cases/compute/dpi_parallel.yaml index 5edb3968..01905f57 100644 --- a/test_cases/compute/dpi_parallel.yaml +++ b/test_cases/compute/dpi_parallel.yaml @@ -15,7 +15,7 @@ Context: role: 1Run flavor: m1.large virtualmachine_2: - availability_zone: compute2 + availability_zone: compute4 OS_image: QTIP_CentOS public_network: 'provider_network' role: 1Run diff --git a/test_cases/network/iperf.yaml b/test_cases/network/iperf.yaml deleted file mode 100644 index 56c49e28..00000000 --- a/test_cases/network/iperf.yaml +++ /dev/null @@ -1,17 +0,0 @@ -scenario: - benchmark: dpi - ExecOrder1: vm_1 - ExecOrder2: vm_2 - -Context: - VirtualMachines: - vm_1: - availability_zone: compute1 - OS_image: centos7 - public_network: "provider_network" - role: ExecOrder1 - vm_2: - availability_zone: compute1 - OS_image: centos7 - public_network: "provider_network" - role: ExecOrder2 diff --git a/test_cases/network/iperf_topology_1.yaml b/test_cases/network/iperf_topology_1.yaml new file mode 100644 index 00000000..20a433a9 --- /dev/null +++ b/test_cases/network/iperf_topology_1.yaml @@ -0,0 +1,43 @@ +Scenario: + benchmark: iperf + topology: Client and Server on ONE compute + server : virtualmachine_1 + client: virtualmachine_2 + benchmark_details: + duration: 10 + protocol: udp + bandwidthGbps: 10 + +Context: + Host_Machines: + + + Virtual_Machines: + virtualmachine_1: + availability_zone: compute2 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 1-server + flavor: m1.large + + virtualmachine_2: + availability_zone: compute2 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 2-host + flavor: m1.large + +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/network/iperf_topology_2.yaml b/test_cases/network/iperf_topology_2.yaml new file mode 100644 index 00000000..4392f32b --- /dev/null +++ b/test_cases/network/iperf_topology_2.yaml @@ -0,0 +1,43 @@ +Scenario: + benchmark: iperf + topology: Client and Server on different Compute nodes + server: virtualmachine_1 + client: virtualmachine_2 + benchmark_details: + duration: 20 + protocol: udp + bandwidthGbps: 1 + +Context: + Host_Machines: + + + Virtual_Machines: + virtualmachine_1: + availability_zone: compute1 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 1-server + flavor: m1.large + + virtualmachine_2: + availability_zone: compute2 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 2-host + flavor: m1.large + +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/network/iperf_topology_3.yaml b/test_cases/network/iperf_topology_3.yaml new file mode 100644 index 00000000..9e7b73e7 --- /dev/null +++ b/test_cases/network/iperf_topology_3.yaml @@ -0,0 +1,60 @@ +Scenario: + benchmark: iperf + topology: 2 Client on one compute and 2 servers on another machine + 1Run : virtualmachine_1, virtualmachine_2 + 2Run: + benchmark_details: + duration: 20 + protocol: udp + bandwidthGbps: 1 + +Context: + Host_Machines: + + + Virtual_Machines: + virtualmachine_1: + availability_zone: compute1 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 1-server + flavor: m1.large + + virtualmachine_2: + availability_zone: compute2 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 1-server + flavor: m1.large + + virtualmachine_3: + availability_zone: compute3 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 1-server + flavor: m1.large + + virtualmachine_4: + availability_zone: compute4 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 1-server + flavor: m1.large + + + + +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/network/netperf.yaml b/test_cases/network/netperf.yaml new file mode 100644 index 00000000..60ee4a13 --- /dev/null +++ b/test_cases/network/netperf.yaml @@ -0,0 +1,42 @@ +Scenario: + benchmark: netperf + topology: Client and Server on ONE compute + server : virtualmachine_1 + client: virtualmachine_2 + benchmark_details: + duration: 10 + teststream: udp_stream + +Context: + Host_Machines: + + + Virtual_Machines: + virtualmachine_1: + availability_zone: compute2 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 1-server + flavor: m1.large + + virtualmachine_2: + availability_zone: compute2 + OS_image: QTIP_CentOS + public_network: 'provider_network' + role: 2-host + flavor: m1.large + +Test_Description: + Test_category: "network" + Benchmark: "netperf" + Overview: > + '''This test will run the NETPERF 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/network/pktgen.yaml b/test_cases/network/pktgen.yaml new file mode 100644 index 00000000..13fae68f --- /dev/null +++ b/test_cases/network/pktgen.yaml @@ -0,0 +1,44 @@ +Scenario: + benchmark: pktgen + topology: Client and Server on ONE compute + server : virtualmachine_1 + client: virtualmachine_2 + benchmark_details: + duration: "10" + packetsize: "64" + ipaddr: "10.10.17.4" + numberofports: "10" + +Context: + Host_Machines: + + + Virtual_Machines: + virtualmachine_1: + availability_zone: compute2 + OS_image: pktgenready + public_network: 'provider_network' + role: 1-server + flavor: m1.large + + virtualmachine_2: + availability_zone: compute2 + OS_image: pktgenready + public_network: 'provider_network' + role: 2-host + flavor: m1.large + +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: + ''' + |