diff options
87 files changed, 384 insertions, 4678 deletions
diff --git a/legacy/assets/perftest/dhrystone.yaml b/legacy/assets/perftest/dhrystone.yaml deleted file mode 100644 index dd098c5e..00000000 --- a/legacy/assets/perftest/dhrystone.yaml +++ /dev/null @@ -1,119 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: making dhrystone directory - file: path={{Dest_dir}}/dhrystone state=directory - - - name: making temporary dhrystone directory - file: path={{Dest_dir}}/dhrystone/dhrystone_temp state=directory - - - hosts: "{{role}}" - become: yes - remote_user: "{{username}}" - - tasks: - - name: checking home directory - shell: echo $HOME - register: home_dir - - - name: cleaning tempT - file: path={{home_dir.stdout}}/tempT state=absent - - - name: cleaning qtip_result - file: path={{home_dir.stdout}}/qtip_result state=absent - - - name: make directory - file: path={{home_dir.stdout}}/qtip_result state=directory - - - include: ./common/sys_proxy_pbook.yaml - - - include: ./common/sys_info_pbook.yaml - vars: - network: false - - - name: Installing UnixBench dependencies if CentOS - shell: yum install git gcc patch perl-Time-HiRes -y - when: ansible_os_family == "RedHat" - - - name: Installing UnixBench dependencies if Ubuntu - shell: apt-get install git gcc patch perl -y - when: ansible_os_family == "Debian" - - - include: ./common/git_proxy_pbook.yaml - - - name: Clone unixbench - git: repo=https://github.com/kdlucas/byte-unixbench.git - dest=$HOME/tempT - - - name: make - shell: sudo make --directory $HOME/tempT/UnixBench/ - - - name: Run dhrystone - shell: cd $HOME/tempT/UnixBench/&& sudo ./Run -v dhrystone - - - name: collecting and transforming result script copy - copy: src={{workingdir}}/qtip/utils/transform/ubench_transform.py dest={{home_dir.stdout}}/qtip_result/ - - - name: transforming result - shell: cd $HOME/qtip_result/ && sudo python ubench_transform.py - - - name: copying consolidated report script - copy: src={{workingdir}}/utils/transform/final_report.py dest={{home_dir.stdout}}/qtip_result/ - - - name: making consolidated report - shell: cd $HOME/qtip_result && sudo python final_report.py Dhrystone {{fname}} - - - name: making directory - file: path={{home_dir.stdout}}/qtip_result/log state=directory - - - name: copying result to temp directory - shell: sudo cp -r $HOME/tempT/UnixBench/results/* $HOME/qtip_result/log/ - - - name: registering files - 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}}/dhrystone/dhrystone_temp - with_items: "{{files_to_copy.stdout_lines}}" - - - name: registering log files - shell: (cd $HOME/qtip_result/log/; find . -maxdepth 1 -name "*.log") | cut -d'/' -f2 - register: copy_log_results - - - name: copying log results - fetch: src={{home_dir.stdout}}/qtip_result/log/{{item}} dest={{Dest_dir}}/dhrystone/dhrystone_temp - with_items: "{{copy_log_results.stdout_lines}}" - - - name: cleaning tempT - file: path={{home_dir.stdout}}/tempT state=absent - - - name: cleaning_qtip_result - file: path={{home_dir.stdout}}/qtip_result state=absent - - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: extracting_json - shell: (find {{Dest_dir}}/dhrystone/dhrystone_temp/ -name "*.json" | xargs cp -t {{Dest_dir}}/dhrystone/) - - - name: making_logs_folder - file: path={{Dest_dir}}/dhrystone/logs state=directory - - - name: extracting_log - shell: (find {{Dest_dir}}/dhrystone/dhrystone_temp/ -name "*.log" | xargs cp -t {{Dest_dir}}/dhrystone/logs) - - - name: removing dhrystone_temp - file: path={{Dest_dir}}/dhrystone/dhrystone_temp state=directory diff --git a/legacy/assets/perftest/dpi.yaml b/legacy/assets/perftest/dpi.yaml deleted file mode 100644 index 55a5dcb5..00000000 --- a/legacy/assets/perftest/dpi.yaml +++ /dev/null @@ -1,134 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: making dpi directory - file: path={{Dest_dir}}/dpi state=directory - - - name: making temporary whetstone directory - file: path={{Dest_dir}}/dpi/dpi_temp state=directory - - - hosts: "{{role}}" - become: yes - remote_user: "{{username}}" - - tasks: - - name: echo - shell: echo $USER - - - name: checking home directory - shell: echo $HOME - register: home_dir - - - name: cleaning - file: path={{home_dir.stdout}}/tempD state=absent - - - name: cleaning previous results - file: path={{home_dir.stdout}}/qtip_result state=absent - - - name: make qtip_result - file: path={{home_dir.stdout}}/qtip_result state=directory - - - include: ./common/sys_proxy_pbook.yaml - - - include: ./common/sys_info_pbook.yaml - vars: - network: false - - - name: Installing nDPI dependencies if CentOS - shell: sudo yum install git gcc patch perl-Time-HiRes autofconf automake libpcap-devel libtool -y - when: ansible_os_family == "RedHat" - - - name: Installing nDPI dependcies if Ubuntu - shell: sudo apt-get install git gcc patch autoconf automake libpcap-dev libtool -y - when: ansible_os_family == "Debian" - - - name: making nDPI temporary directory - file: path=$HOME/tempD state=directory - - - include: ./common/git_proxy_pbook.yaml - - - name: Clone nDPI - git: repo=https://github.com/ntop/nDPI.git - dest=$HOME/tempD/nDPI - - - name: autogen - shell: cd $HOME/tempD/nDPI && sudo ./autogen.sh - - - name: configure - shell: cd $HOME/tempD/nDPI && sudo ./configure - - - name: make - shell: cd $HOME/tempD/nDPI && sudo make - - - name: Fetching Test_pcap file - shell: cd $HOME/tempD/nDPI/example && wget http://build.opnfv.org/artifacts.opnfv.org/qtip/utilities/test.pcap - - - name: fetch Averaging script - copy: src=./etc/dpi_average.sh dest={{home_dir.stdout}}/tempD/nDPI/example mode=777 - - - name: Run nDPI benchmark - shell: cd $HOME/tempD/nDPI/example && sudo ./dpi_average.sh - - - name: copy result to temp_direc - shell: sudo cp $HOME/tempD/nDPI/example/dpi_dump.txt $HOME/qtip_result - - - name: fetch dpi result transform script - copy: src={{workingdir}}/qtip/utils/transform/dpi_transform.py dest={{home_dir.stdout}}/qtip_result - - - name: Transforming results - shell: cd $HOME/qtip_result && sudo python dpi_transform.py - - - name: copy report formation script - copy: src={{workingdir}}/qtip/utils/transform/final_report.py dest={{home_dir.stdout}}/qtip_result - - - name: consolidating report - shell: cd $HOME/qtip_result && sudo python final_report.py DPI {{fname}} - - - name: registering files - 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}}/dpi/dpi_temp - with_items: "{{files_to_copy.stdout_lines}}" - - - name: registering log files - shell: (cd $HOME/qtip_result/; find . -maxdepth 1 -name "*.log") | cut -d'/' -f2 - register: copy_log_results - - - name: copying log results - fetch: src={{home_dir.stdout}}/qtip_result/{{item}} dest={{Dest_dir}}/dpi/dpi_temp - with_items: "{{copy_log_results.stdout_lines}}" - - - name: cleaning tempD - file: path={{home_dir.stdout}}/tempD state=absent - - - name: cleaning_qtip_result - file: path={{home_dir.stdout}}/qtip_result state=absent - - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: extracting_json - shell: (find {{Dest_dir}}/dpi/dpi_temp/ -name "*.json" | xargs cp -t {{Dest_dir}}/dpi/) - - - name: making_logs_folder - file: path={{Dest_dir}}/dpi/logs state=directory - - - name: extracting_log - shell: (find {{Dest_dir}}/dpi/dpi_temp/ -name "*.log" | xargs cp -t {{Dest_dir}}/dpi/logs) - - - name: removing dpi_temp - file: path={{Dest_dir}}/dpi/dpi_temp state=absent diff --git a/legacy/assets/perftest/ramspeed.yaml b/legacy/assets/perftest/ramspeed.yaml deleted file mode 100644 index 835d517a..00000000 --- a/legacy/assets/perftest/ramspeed.yaml +++ /dev/null @@ -1,123 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: making ramspeed directory - file: path={{Dest_dir}}/ramspeed state=directory - - - name: making temporary ramspeed directory - file: path={{Dest_dir}}/ramspeed/ramspeed_temp state=directory - - - - hosts: "{{role}}" - become: yes - remote_user: "{{username}}" - - tasks: - - name: checking home directory - shell: echo $HOME - register: home_dir - - - name: cleaning ramspeed directory - file: path={{home_dir.stdout}}/ramspeed state=absent - - - name: cleaning previous results - file: path={{home_dir.stdout}}/qtip_result state=absent - - - name: making ramspeed temporary directory - file: path={{home_dir.stdout}}/ramspeed state=directory - - - name: making results temporary directory - file: path={{home_dir.stdout}}/qtip_result state=directory - - - include: ./common/sys_proxy_pbook.yaml - - - include: ./common/sys_info_pbook.yaml - vars: - network: false - - - name: Installing RAM_Speed dependencies when CentOS - shell: sudo yum install wget gcc -y - when: ansible_os_family == "RedHat" - - - name: Installing RAM_Speed dependencies when Ubuntu - shell: sudo apt-get install wget gcc -y - when: ansible_os_family == "Debian" - - - name: make dummy file - shell: sudo touch $HOME/ramspeed/ramspeed.tar.gz - - - name: Fetching RAM_Speed - shell: cd $HOME/ramspeed/ && sudo wget -O ramspeed.tar.gz https://docs.google.com/uc?id=0B92Bp5LZTM7gRFctalZLMktTNDQ - - - name: Untar RAM_SPeed - shell: cd $HOME/ramspeed/ && sudo tar -zxvf ramspeed.tar.gz - - - name: configure - shell: cd $HOME/ramspeed/ramsmp-3.5.0 && ./build.sh - - - name: Benchmarking IntMem Bandwidth - shell: cd $HOME/ramspeed/ramsmp-3.5.0 && ./ramsmp -b 3 -l 5 -p 1 >> $HOME/qtip_result/Intmem - - - name: Benchmarking FloatMem Bandwidth - shell: cd $HOME/ramspeed/ramsmp-3.5.0 && ./ramsmp -b 6 -l 5 -p 1 >> $HOME/qtip_result/Floatmem - - - name: Fetching result transformation script - copy: src={{workingdir}}/qtip/utils/transform/ramspeed_transform.py dest={{home_dir.stdout}}/qtip_result - - - name: Transforming result - shell: cd $HOME/qtip_result && sudo python ramspeed_transform.py - - - name: copy report formation script - copy: src={{workingdir}}/qtip/utils/transform/final_report.py dest={{home_dir.stdout}}/qtip_result - - - name: consolidating report - shell: cd $HOME/qtip_result && sudo python final_report.py RamSpeed {{fname}} - - - name: registering files - 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}}/ramspeed/ramspeed_temp - with_items: "{{files_to_copy.stdout_lines}}" - - - name: registering log files - shell: (cd $HOME/qtip_result/; find . -maxdepth 1 -name "*.log") | cut -d'/' -f2 - register: copy_log_results - - - name: copying log results - fetch: src={{home_dir.stdout}}/qtip_result/{{item}} dest={{Dest_dir}}/ramspeed/ramspeed_temp - with_items: "{{copy_log_results.stdout_lines}}" - - - name: cleaning ramspeed directory - file: path={{home_dir.stdout}}/ramspeed state=absent - - - name: cleaning previous results - file: path={{home_dir.stdout}}/qtip_result state=absent - - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: extracting_json - shell: (find /{{Dest_dir}}/ramspeed/ramspeed_temp/ -name "*.json" | xargs cp -t {{Dest_dir}}/ramspeed/) - - - name: making_logs_folder - file: path={{Dest_dir}}/ramspeed/logs state=directory - - - name: extracting_log - shell: ( find {{Dest_dir}}/ramspeed/ramspeed_temp/ -name "*.log" | xargs cp -t {{Dest_dir}}/ramspeed/logs) - - - name: removing ramspeed_log - file: path={{Dest_dir}}/ramspeed/ramspeed_temp state=absent diff --git a/legacy/assets/perftest/ssl.yaml b/legacy/assets/perftest/ssl.yaml deleted file mode 100644 index db77a724..00000000 --- a/legacy/assets/perftest/ssl.yaml +++ /dev/null @@ -1,127 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: making ssl directory - file: path={{Dest_dir}}/ssl state=directory - - - name: making temporary ssl directory - file: path={{Dest_dir}}/ssl/ssl_temp state=directory - - - hosts: "{{role}}" - become: yes - remote_user: "{{username}}" - - tasks: - - name: checking home directory - shell: sudo echo $HOME - register: home_dir - - - name: cleaning Open_SSL directory - file: path={{home_dir.stdout}}/Open_SSL state=absent - - - name: cleaning_qtip_result - file: path={{home_dir.stdout}}/qtip_result state=absent - - - name: making OpenSSL temporary directory - file: path={{home_dir.stdout}}/Open_SSL state=directory - - - name: making results temporary directory - file: path={{home_dir.stdout}}/qtip_result state=directory - - - include: ./common/sys_proxy_pbook.yaml - - - include: ./common/sys_info_pbook.yaml - vars: - network: false - - - name: Installing OpenSSL dependencies when CentOS - shell: sudo yum install git wget gcc patch perl-Time-HiRes autofconf automake libpcap-devel libtool -y - when: ansible_os_family == "RedHat" - - - name: Installing OpenSSL dependencies when Ubuntu - shell: sudo apt-get install git gcc wget perl autoconf automake libpcap-dev libtool -y - when: ansible_os_family == "Debian" - - - name: Fetching OpenSSL - shell: cd $HOME/Open_SSL/ && sudo wget http://artifacts.opnfv.org/qtip/utilities/openssl-1.0.2f.tar.gz - - - name: Untar OpenSSL - shell: cd $HOME/Open_SSL/ && sudo tar -zxvf openssl-1.0.2f.tar.gz - - name: configure - shell: cd $HOME/Open_SSL/openssl-1.0.2f && sudo ./config - - - name: make - shell: cd $HOME/Open_SSL/openssl-1.0.2f && sudo make - - - name: make install - shell: cd $HOME/Open_SSL/openssl-1.0.2f && sudo make install - - - name: Benchmarking RSA signatures - shell: cd $HOME/Open_SSL/openssl-1.0.2f/apps && sudo ./openssl speed rsa >> $HOME/qtip_result/RSA_dump - - - name: Benchmaring AES-128-cbc cipher encryption throughput - shell: cd $HOME/Open_SSL/openssl-1.0.2f/apps && sudo ./openssl speed -evp aes-128-cbc >> $HOME/qtip_result/AES-128-CBC_dump - - - name: Fetching result transformation script - copy: src={{workingdir}}/qtip/utils/transform/ssl_transform.py dest={{home_dir.stdout}}/qtip_result - - - name: Transforming result - shell: cd $HOME/qtip_result && python ssl_transform.py - - - name: copy report formation script - copy: src={{workingdir}}/qtip/utils/transform/final_report.py dest={{home_dir.stdout}}/qtip_result - - - name: consolidating report - shell: cd $HOME/qtip_result && python final_report.py SSL {{fname}} - - - name: registering files - 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}}/ssl/ssl_temp - with_items: "{{files_to_copy.stdout_lines}}" - - - name: registering log files - shell: (cd $HOME/qtip_result/; find . -maxdepth 1 -name "*.log") | cut -d'/' -f2 - register: copy_log_results - - - name: copying log results - fetch: src={{home_dir.stdout}}/qtip_result/{{item}} dest={{Dest_dir}}/ssl/ssl_temp - with_items: "{{copy_log_results.stdout_lines}}" - - - name: cleaning Open_SSL directory - file: path={{home_dir.stdout}}/Open_SSL state=absent - - - name: cleaning_qtip_result - file: path={{home_dir.stdout}}/qtip_result state=absent - - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: echo - shell: echo $PWD - - - name: extracting_json - shell: (find {{Dest_dir}}/ssl/ssl_temp/ -name "*.json" | xargs cp -t {{Dest_dir}}/ssl/) - - - name: making_logs_folder - file: path={{Dest_dir}}/ssl/logs state=directory - - - name: extracting_log - shell: (find {{Dest_dir}}/ssl/ssl_temp/ -name "*.log" | xargs cp -t {{Dest_dir}}/ssl/logs) - - - name: removing ssl_temp - file: path={{Dest_dir}}/ssl/ssl_temp state=absent diff --git a/legacy/assets/perftest/whetstone.yaml b/legacy/assets/perftest/whetstone.yaml deleted file mode 100644 index 0037ded3..00000000 --- a/legacy/assets/perftest/whetstone.yaml +++ /dev/null @@ -1,119 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: making whetstone directory - file: path={{Dest_dir}}/whetstone state=directory - - - name: making temporary whetstone directory - file: path={{Dest_dir}}/whetstone/whetstone_temp state=directory - - - hosts: "{{role}}" - become: yes - remote_user: "{{username}}" - - tasks: - - name: storing_home - shell: echo $HOME - register: home_dir - - - name: cleaning tempT directory - file: path={{home_dir.stdout}}/tempT state=absent - - - name: cleaning qtip result directory - file: path={{home_dir.stdout}}/qtip_result state=absent - - - name: making qtip_result directory - file: path={{home_dir.stdout}}/qtip_result state=directory - - - include: ./common/sys_proxy_pbook.yaml - - - include: ./common/sys_info_pbook.yaml - vars: - network: false - - - name: Installing UnixBench dependencies if CentOS - shell: sudo yum install git gcc patch perl-Time-HiRes -y - when: ansible_os_family == "RedHat" - - - name: Installing UnixBench dependencies if Ubuntu - shell: sudo apt-get install git gcc patch perl -y - when: ansible_os_family == "Debian" - - - include: ./common/git_proxy_pbook.yaml - - - name: Clone unixbench - git: repo=https://github.com/kdlucas/byte-unixbench.git - dest=$HOME/tempT - - - name: make - shell: sudo make --directory $HOME/tempT/UnixBench/ - - - name: Run Whetstone - shell: cd $HOME/tempT/UnixBench/&&./Run -v whetstone - - - name: collecting and transforming result script copy - copy: src={{workingdir}}/qtip/utils/transform/ubench_transform.py dest={{home_dir.stdout}}/qtip_result/ - - - name: transforming result - shell: cd $HOME/qtip_result && sudo python ubench_transform.py - - - name: copying consolidated report script - copy: src={{workingdir}}/qtip/utils/transform/final_report.py dest={{home_dir.stdout}}/qtip_result/ - - - name: making consolidated report - shell: cd $HOME/qtip_result && sudo python final_report.py Whetstone {{fname}} - - - name: making directory - file: path={{home_dir.stdout}}/qtip_result/log state=directory - - - name: copying result to temp directory - shell: sudo cp -r $HOME/tempT/UnixBench/results/* $HOME/qtip_result/log - - - name: registering files - 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}}/whetstone/whetstone_temp - with_items: "{{files_to_copy.stdout_lines}}" - - - name: registering log files - shell: (cd $HOME/qtip_result/log/; find . -maxdepth 1 -name "*.log") | cut -d'/' -f2 - register: copy_log_results - - - name: copying log results - fetch: src={{home_dir.stdout}}/qtip_result/log/{{item}} dest={{Dest_dir}}/whetstone/whetstone_temp - with_items: "{{copy_log_results.stdout_lines}}" - - - name: cleaning tempT directory - file: path={{home_dir.stdout}}/tempT state=absent - - - name: cleaning qtip result directory - file: path={{home_dir.stdout}}/qtip_result state=absent - - - hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: extracting_json - shell: (find {{Dest_dir}}/whetstone/whetstone_temp/ -name "*.json" | xargs cp -t {{Dest_dir}}/whetstone/) - - - name: making_logs_folder - file: path={{Dest_dir}}/whetstone/logs state=directory - - - name: extracting_log - shell: (find {{Dest_dir}}/whetstone/whetstone_temp/ -name "*.log" | xargs cp -t {{Dest_dir}}/whetstone/logs) - - - name: removing whetstone_temp - file: path={{Dest_dir}}/whetstone/whetstone_temp state=absent diff --git a/legacy/assets/suite/compute b/legacy/assets/suite/compute deleted file mode 100644 index 3bf1b184..00000000 --- a/legacy/assets/suite/compute +++ /dev/null @@ -1,16 +0,0 @@ -{ - "bm": [ - "dhrystone_bm.yaml", - "whetstone_bm.yaml", - "ramspeed_bm.yaml", - "dpi_bm.yaml", - "ssl_bm.yaml" - ], - "vm": [ - "dhrystone_vm.yaml", - "whetstone_vm.yaml", - "ramspeed_vm.yaml", - "dpi_vm.yaml", - "ssl_vm.yaml" - ] -} diff --git a/legacy/assets/suite/compute.yaml b/legacy/assets/suite/compute.yaml deleted file mode 100644 index ead194a4..00000000 --- a/legacy/assets/suite/compute.yaml +++ /dev/null @@ -1,54 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -QPI: compute -description: sample performance index of computing - -formula: weighted arithmetic mean - -section: -- name: Integer - weight: 0.3 - formula: geometric mean - perftests: - - name: dhrystone - workloads: - - single_cpu - - multi_cpu -- name: Floating - weight: 0.3 - formula: geometric mean - perftests: - - name: whetstone - workloads: - - single_cpu - - multi_cpu -- name: Memory - weight: 0.2 - formula: geometric mean - perftests: - - name: ramspeed - workloads: - - int: [add, average, copy, scale, triad] - - float: [add, average, copy, scale, triad] -- name: DPI - weight: 0.1 - formula: geometric mean - perftests: - - name: dpi - workloads: - - bps - - pps -- name: SSL - weight: 0.1 - formula: geometric mean - perftests: - - name: ssl - workloads: - - aes_128_cbc: [512, 1024, 2048, 4096] - - rsa_sig: [16, 64, 256, 1024, 8192] diff --git a/legacy/assets/suite/network b/legacy/assets/suite/network deleted file mode 100644 index 58ce5cb9..00000000 --- a/legacy/assets/suite/network +++ /dev/null @@ -1,9 +0,0 @@ -{ - "bm": [ - "iperf_bm.yaml" - ], - "vm": [ - "iperf_vm.yaml", - "iperf_vm_2.yaml" - ] -} diff --git a/legacy/assets/suite/storage b/legacy/assets/suite/storage deleted file mode 100644 index f3068dd5..00000000 --- a/legacy/assets/suite/storage +++ /dev/null @@ -1,8 +0,0 @@ -{ - "bm": [ - "fio_bm.yaml" - ], - "vm": [ - "fio_vm.yaml" - ] -} diff --git a/legacy/assets/testplan/default/compute/dhrystone_bm.yaml b/legacy/assets/testplan/default/compute/dhrystone_bm.yaml deleted file mode 100644 index 54f27fb6..00000000 --- a/legacy/assets/testplan/default/compute/dhrystone_bm.yaml +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -Scenario: - benchmark: dhrystone - host: machine_1, machine_2 - server: - -Context: - Host_Machines: - machine_1: - ip: - pw: - role: host - machine_2: - ip: - pw: - role: host - - Virtual_Machines: - - -Test_Description: - Test_category: "Compute" - Benchmark: "dhrystone" - Overview: > - ''' This test will run the dhrystone benchmark in parallel on machine_1 and machine_2.\n - 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/legacy/assets/testplan/default/compute/dhrystone_vm.yaml b/legacy/assets/testplan/default/compute/dhrystone_vm.yaml deleted file mode 100644 index 06377bea..00000000 --- a/legacy/assets/testplan/default/compute/dhrystone_vm.yaml +++ /dev/null @@ -1,53 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario: - benchmark: dhrystone - host: virtualmachine_1, virtualmachine_2 - server: blakc - -Context: - Host_Machines: - - Virtual_Machines: - virtualmachine_1: - availability_zone: compute1 - public_network: 'net04_ext' - OS_image: QTIP_CentOS - flavor: m1.large - role: host - virtualmachine_2: - availability_zone: compute2 - public_network: 'net04_ext' - OS_image: QTIP_CentOS - flavor: m1.large - role: host - -Test_Description: - Test_category: "Compute" - Benchmark: "dhrystone" - Overview: > - '''This test will run the dhrystone benchmark in parallel on machine_1 and machine_2.\n - 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/legacy/assets/testplan/default/compute/dpi_bm.yaml b/legacy/assets/testplan/default/compute/dpi_bm.yaml deleted file mode 100644 index deb6a874..00000000 --- a/legacy/assets/testplan/default/compute/dpi_bm.yaml +++ /dev/null @@ -1,42 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario: - benchmark: dpi - host: machine_1,machine_2 - -Context: - Host_Machines: - machine_1: - ip: - pw: - role: host - machine_2: - ip: - pw: - role: host - Virtual_Machines: -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/legacy/assets/testplan/default/compute/dpi_vm.yaml b/legacy/assets/testplan/default/compute/dpi_vm.yaml deleted file mode 100644 index 4fb16842..00000000 --- a/legacy/assets/testplan/default/compute/dpi_vm.yaml +++ /dev/null @@ -1,43 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario: - benchmark: dpi - 1Run : virtualmachine_1, virtualmachine_2 - -Context: - Host_Machines: - - - Virtual_Machines: - virtualmachine_1: - availability_zone: compute1 - OS_image: QTIP_CentOS - public_network: 'net04_ext' - role: 1Run - flavor: m1.large - virtualmachine_2: - availability_zone: compute2 - OS_image: QTIP_CentOS - public_network: 'net04_ext' - role: 1Run - flavor: m1.large - -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/legacy/assets/testplan/default/compute/ramspeed_bm.yaml b/legacy/assets/testplan/default/compute/ramspeed_bm.yaml deleted file mode 100644 index c758c18d..00000000 --- a/legacy/assets/testplan/default/compute/ramspeed_bm.yaml +++ /dev/null @@ -1,42 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario: - benchmark: ramspeed - host: machine_1, machine_2 - server: - -Context: - Host_Machines: - machine_1: - ip: - pw: - role: host - machine_2: - ip: - pw: - role: host - - Virtual_Machines: - - -Test_Description: - Test_category: "Compute" - Benchmark: "dhrystone" - Overview: > - ''' This test will run the dhrystone benchmark in parallel on machine_1 and machine_2.\n - 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/legacy/assets/testplan/default/compute/ramspeed_vm.yaml b/legacy/assets/testplan/default/compute/ramspeed_vm.yaml deleted file mode 100644 index 5f7ab831..00000000 --- a/legacy/assets/testplan/default/compute/ramspeed_vm.yaml +++ /dev/null @@ -1,53 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario: - benchmark: ramspeed - host: virtualmachine_1, virtualmachine_2 - server: blakc - -Context: - Host_Machines: - - Virtual_Machines: - virtualmachine_1: - availability_zone: compute1 - public_network: 'net04_ext' - OS_image: QTIP_CentOS - flavor: m1.large - role: host - virtualmachine_2: - availability_zone: compute2 - public_network: 'net04_ext' - OS_image: QTIP_CentOS - flavor: m1.large - role: host - -Test_Description: - Test_category: "Compute" - Benchmark: "dhrystone" - Overview: > - '''This test will run the dhrystone benchmark in parallel on machine_1 and machine_2.\n - 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/legacy/assets/testplan/default/compute/ssl_bm.yaml b/legacy/assets/testplan/default/compute/ssl_bm.yaml deleted file mode 100644 index bb2ee64a..00000000 --- a/legacy/assets/testplan/default/compute/ssl_bm.yaml +++ /dev/null @@ -1,39 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario: - benchmark: ssl - host: machine_1,machine_2 - -Context: - Host_Machines: - machine_1: - ip: - pw: - role: host - machine_2: - ip: - pw: - role: host - Virtual_Machines: - - -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/legacy/assets/testplan/default/compute/ssl_vm.yaml b/legacy/assets/testplan/default/compute/ssl_vm.yaml deleted file mode 100644 index ca18393b..00000000 --- a/legacy/assets/testplan/default/compute/ssl_vm.yaml +++ /dev/null @@ -1,44 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario: - benchmark: ssl - host: virtualmachine_1, virtualmachine_2 - -Context: - Host_Machines: - - Virtual_Machines: - virtualmachine_1: - availability_zone: compute1 - public_network: 'net04_ext' - OS_image: 'QTIP_CentOS' - flavor: 'm1.large' - role: host - virtualmachine_2: - availability_zone: compute2 - public_network: 'net04_ext' - OS_image: 'QTIP_CentOS' - flavor: 'm1.large' - role: host - - -Test_Description: - Test_category: "Compute" - Benchmark: "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/legacy/assets/testplan/default/compute/whetstone_bm.yaml b/legacy/assets/testplan/default/compute/whetstone_bm.yaml deleted file mode 100644 index 1d3add50..00000000 --- a/legacy/assets/testplan/default/compute/whetstone_bm.yaml +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario: - benchmark: whetstone - host: machine_1, machine_2 - - -Context: - Host_Machines: - machine_1: - ip: - pw: - role: host - machine_2: - ip: - pw: - role: host - Virtual_Machines: - - - -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/legacy/assets/testplan/default/compute/whetstone_vm.yaml b/legacy/assets/testplan/default/compute/whetstone_vm.yaml deleted file mode 100644 index 4e0e1d80..00000000 --- a/legacy/assets/testplan/default/compute/whetstone_vm.yaml +++ /dev/null @@ -1,52 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario: - benchmark: whetstone - host: virtualmachine_1, virtualmachine_1 - server: - -Context: - Host_Machines: - - Virtual_Machines: - virtualmachine_1: - availability_zone: compute1 - public_network: 'net04_ext' - OS_image: QTIP_CentOS - flavor: m1.large - role: host - virtualmachine_2: - availability_zone: compute2 - public_network: 'net04_ext' - OS_image: QTIP_CentOS - flavor: m1.large - role: host - - -Test_Description: - Test_category: "Compute" - Benchmark: "dhrystone" - Overview: > - '''This test will run the 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/legacy/data/hosts b/legacy/data/hosts deleted file mode 100644 index 0a0ac539..00000000 --- a/legacy/data/hosts +++ /dev/null @@ -1,2 +0,0 @@ -[sample_group_name] -127.0.0.1 diff --git a/legacy/data/my_key.pem b/legacy/data/my_key.pem deleted file mode 100644 index d7c96f24..00000000 --- a/legacy/data/my_key.pem +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAntmA9ybqcxQKr9R3iTbNr+89ZJwlt5+gLbT8VR9sUAYCEEJn -xX7DX5djpSdQ1OoxJun/HE0ByKPXCIqGq3sHnxQ/3Wh80UGlyiSXgS8/p8NlfgPr -DIDuVNhKJlsobsfTVXL789i512rqf2zFBWfoesFgZee6ACrSYN3hdNICFOwtbmHA -g+xEs00yGmbcFDuBQnDeR2yPpV6G4AtrU5zwliVj7fMzrB5w9De20ydbFqxjPdOD -gbfwrhQQs82pv7vfJCFByjsSlwP4mcznKgOt/aO2y/B1ZvL+dOsCi8D3H6Ggrg7R -wmiIRaCijYX4SycYxdn+RkZpp9g0AyR/potcKwIDAQABAoIBADncgF2Gj1/brQjf -G6ufiszLGFHNju+T9YSwqDlZeNqtVZMWnTYTNpdbTbCa4Zast7q1AXgNlNjA1VMH -IobUCbKobZr4tH6Eqx82tPkZfNZfFlkQlE25qRa+skPGcLPpldFKUPxBtXACQeio -dhvB/ay5Q6PbBKWK85bVO4qR9LApxHCDQgovGtasUF1/wu5z4vOCP3KLtlE268m+ -XJ/4IZX2erBOfxOGPqp+qDK8FTP1NcuGFEkhUa8Tr406CIXptTDyPc+bMZANIGDM -hhww6VR5aHxsHWgu1UITVZuDh5fJ8U6n2utqTm/QLT25DUPKoTJSAjLet7fnm4Cw -hee7GgECgYEAziiWq4peA9WrJYTlR8bNRLgsMjZx/AphyJQpFCQsgCMuB9wIluTT -5Di4jvdvKclsFTh6foxnltltX6O8tL+vrzfbK9fBB3A2T1V1sDMOznhI47Mmoqk6 -9le6aMmpTIhNFJMu1DpsuoxRLIJaNkWLCwWaIE1ZggqCgbjIdMOJt20CgYEAxUDo -DUf0zi/qYZVVTnziubcqu0kjUWhmeEiv08WFst8l2fAwHBILNms5ot4TY5MlFxta -vLsWaXC7o6tqofSHF52cD8AbUWEnvK2NtCA7gW+0xBtQEPqrtItA0YjblFXw7qwb -QUValSo535bFYJjp5foJxTZXg9rErF4iUgExqvcCgYBK5t5PNvePhxsmh5FSMb20 -oQGVwMhLHW6HlKUUJ0xvxdhcjKomQL9npOAROX8O/JqjXyDKR7L/UMH3RKM0PIzV -KYMc+8erLy7cRh17RiG0DGnXKOj5omjExfz5Q4OaRc9TkWIrQ4rrgD2h4T5rh3rM -J13nLJM/txfRj9Rs7/piRQKBgCm3RFwqr5c7gvIIRvZGaxyjpCHfodyBm8osdSLw -Two5LyQcK9CD8GMd4h6ToL4aTGnKmzH2zxKViNlgUzjVIgzYhDzAgAaB6Yl5mtJR -TsRc/3nJ3PD6Un3oRVkK/IUud7nCJDF1nWaWe47RsARx0mWUr6RJjdCQ368kaVW2 -cu6ZAoGBALD4Gw+AsH6/za7gmRIqlzBURHpHCgKutQKv3UbD1hVc5tDAoYwBjjod -AVY8N8+AmX/nmJOVcch/dAnICkLrZn5Bm/q52/3xCAlnGkwNHyW4G99lZCfNEQrx -sVAZ4FNrtMC9Xwtj0o73ojqKP4gxVkljbybnbuyNSXZo14EbXuJU ------END RSA PRIVATE KEY----- diff --git a/legacy/data/output/hosts b/legacy/data/output/hosts deleted file mode 100644 index 9b47df0e..00000000 --- a/legacy/data/output/hosts +++ /dev/null @@ -1,3 +0,0 @@ -[host] -10.20.0.29 -10.20.0.28 diff --git a/legacy/data/schema/test_bm_schema.yaml b/legacy/data/schema/test_bm_schema.yaml deleted file mode 100644 index af97da70..00000000 --- a/legacy/data/schema/test_bm_schema.yaml +++ /dev/null @@ -1,84 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -type: map -mapping: - Scenario: - type: map - mapping: - benchmark: - type: str - required: True - host: - type: str - server: - type: str - allowempty: True - client: - type: str - allowempty: True - topology: - type: str - allowempty: True - benchmark_details: - type: map - mapping: - duration: - type: int - protocol: - type: str - bandwidthGbps: - type: int - description: - type: str - 1Run: - type: str - - Context: - type: map - mapping: - Host_Machines: - type: map - required: True - mapping: - regex;(^machine): - type: map - mapping: - role: - type: str - ip: - type: str - allowempty: True - pw: - type: str - allowempty: True - Virtual_Machines: - type: map - allowempty: True - Proxy_Environment: - type: map - mapping: - http_proxy: - type: str - https_proxy: - type: str - no_proxy: - type: str - - Test_Description: - type: map - mapping: - Test_category: - type: str - allowempty: True - Benchmark: - type: str - allowempty: True - Overview: - type: str - allowempty: True diff --git a/legacy/data/schema/test_vm_schema.yaml b/legacy/data/schema/test_vm_schema.yaml deleted file mode 100644 index ca632e50..00000000 --- a/legacy/data/schema/test_vm_schema.yaml +++ /dev/null @@ -1,88 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -type: map -mapping: - Scenario: - type: map - mapping: - benchmark: - type: str - required: True - host: - type: str - server: - type: str - allowempty: True - 1Run: - type: str - client: - type: str - allowempty: True - topology: - type: str - allowempty: True - benchmark_details: - type: map - mapping: - duration: - type: int - protocol: - type: str - bandwidthGbps: - type: int - teststream: - type: str - description: - type: str - - Context: - type: map - mapping: - Host_Machines: - type: map - allowempty: True - Virtual_Machines: - type: map - required: True - mapping: - regex;(^virtualmachine): - type: map - mapping: - availability_zone: - type: str - OS_image: - type: str - public_network: - type: str - role: - type: str - flavor: - type: str - Proxy_Environment: - type: map - mapping: - http_proxy: - type: str - https_proxy: - type: str - no_proxy: - type: str - - Test_Description: - type: map - mapping: - Test_category: - type: str - allowempty: True - Benchmark: - type: str - allowempty: True - Overview: - type: str - allowempty: True diff --git a/legacy/data/test.retry b/legacy/data/test.retry deleted file mode 100644 index 7b9ad531..00000000 --- a/legacy/data/test.retry +++ /dev/null @@ -1 +0,0 @@ -127.0.0.1 diff --git a/legacy/data/test.yml b/legacy/data/test.yml deleted file mode 100644 index d27bce3c..00000000 --- a/legacy/data/test.yml +++ /dev/null @@ -1,12 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -- hosts: sample_group_name - tasks: - - name: just an uname - command: uname -a diff --git a/legacy/data/testplan/bm_ping.yaml b/legacy/data/testplan/bm_ping.yaml deleted file mode 100644 index 39c05aad..00000000 --- a/legacy/data/testplan/bm_ping.yaml +++ /dev/null @@ -1,37 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -
-Scenario:
- benchmark: dhrystone
- host: machine_1
- server:
-
-Context:
- Host_Machines:
- machine_1:
- ip: 127.0.0.1
- pw:
- role: host
-
- Virtual_Machines:
-
-
-Test_Description:
- Test_category: "Compute"
- Benchmark: "dhrystone"
- Overview: >
- ''' This test will run the dhrystone benchmark in parallel on machine_1 and machine_2.\n
- 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/legacy/data/testplan/bm_with_proxy.yaml b/legacy/data/testplan/bm_with_proxy.yaml deleted file mode 100644 index ef9e651e..00000000 --- a/legacy/data/testplan/bm_with_proxy.yaml +++ /dev/null @@ -1,47 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -
-Scenario:
- benchmark: dhrystone
- host: machine_1, machine_2
- server:
-
-Context:
- Host_Machines:
- machine_1:
- ip: 10.20.0.28
- pw:
- role: host
- machine_2:
- ip: 10.20.0.29
- 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/legacy/data/testplan/bm_without_proxy.yaml b/legacy/data/testplan/bm_without_proxy.yaml deleted file mode 100644 index 8a1f3b05..00000000 --- a/legacy/data/testplan/bm_without_proxy.yaml +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -
-Scenario:
- benchmark: dhrystone
- host: machine_1, machine_2
- server:
-
-Context:
- Host_Machines:
- machine_1:
- ip: 10.20.0.28
- pw:
- role: host
- machine_2:
- ip: 10.20.0.29
- pw:
- role: host
-
- Virtual_Machines:
-
-
-Test_Description:
- Test_category: "Compute"
- Benchmark: "dhrystone"
- Overview: >
- ''' This test will run the dhrystone benchmark in parallel on machine_1 and machine_2.\n
- 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/legacy/data/testplan/vm.yaml b/legacy/data/testplan/vm.yaml deleted file mode 100644 index 9ba13b30..00000000 --- a/legacy/data/testplan/vm.yaml +++ /dev/null @@ -1,56 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -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/legacy/data/testplan/vm_error.yaml b/legacy/data/testplan/vm_error.yaml deleted file mode 100644 index d5cd6df6..00000000 --- a/legacy/data/testplan/vm_error.yaml +++ /dev/null @@ -1,50 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -Scenario:
- 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
-
-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/legacy/run.py b/legacy/run.py deleted file mode 100644 index a2c26eda..00000000 --- a/legacy/run.py +++ /dev/null @@ -1,18 +0,0 @@ -############################################################################## -# Copyright (c) 2015 Dell Inc and others. -# Copyright (c) 2016 ZTE corp. 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 utils.cli import Cli - - -def main(): - Cli() - - -if __name__ == "__main__": - main() diff --git a/legacy/scripts/cleanup_creds.sh b/legacy/scripts/cleanup_creds.sh deleted file mode 100755 index b4eee924..00000000 --- a/legacy/scripts/cleanup_creds.sh +++ /dev/null @@ -1,11 +0,0 @@ -#! /bin/bash - -DEST_IP=$1 -HOSTNAME=$(hostname) -sshoptions="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" - -case "$INSTALLER_TYPE" in - fuel) - ssh $sshoptions -i ./config/QtipKey root@$DEST_IP "sed -i '/root@$HOSTNAME/d' /root/.ssh/authorized_keys" - ;; -esac diff --git a/legacy/scripts/get_env_info.sh b/legacy/scripts/get_env_info.sh deleted file mode 100755 index cd49ac87..00000000 --- a/legacy/scripts/get_env_info.sh +++ /dev/null @@ -1,37 +0,0 @@ -#! /bin/bash - -usage() { - echo "usage $0 -n <installer_type> -i <installer_ip> -k <key incase of apex>" -} - - - -while getopts ":n:i:k:" optchar; do - case "${optchar}" in - n) - export INSTALLER_TYPE=${OPTARG};; - - i) - export INSTALLER_IP=${OPTARG};; - - k) - export APEX_KEY=${OPTARG};; - - *) - echo "Incorrect usage" - usage ;; - esac -done - -if [ $INSTALLER_TYPE == "apex" ] - then - if [ -z $APEX_KEY ] - then - echo "Please provide the the key to access the APEX Instack VM" - usage - exit 1 - fi -fi - - -${REPOS_DIR}/releng/utils/fetch_os_creds.sh -d ${QTIP_DIR}/opnfv-creds.sh diff --git a/legacy/scripts/ssh_exch.exp b/legacy/scripts/ssh_exch.exp deleted file mode 100644 index c52140b7..00000000 --- a/legacy/scripts/ssh_exch.exp +++ /dev/null @@ -1,9 +0,0 @@ -#1 /usr/bin/expect -set timeout 4 -set ip [lindex $argv 0] -set pswd [lindex $argv 1] -spawn ssh-copy-id -i QtipKey $ip -expect "Are you sure you want to continue connecting" {send "yes\r"} -expect "password:" { send "$pswd\r"} - -interact diff --git a/legacy/tests/ansible_api_test.py b/legacy/tests/ansible_api_test.py deleted file mode 100644 index 6f286fc3..00000000 --- a/legacy/tests/ansible_api_test.py +++ /dev/null @@ -1,22 +0,0 @@ -############################################################################## -# Copyright (c) 2016 ZTE Corp 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 tests import BaseTest -from qtip.utils.ansible_api import AnsibleApi - - -class TestClass(BaseTest): - - def test_call_ansible_api_success(self): - ansible_api = AnsibleApi() - ret = ansible_api.execute_playbook(self.abspath('hosts'), - self.abspath('test.yml'), - self.abspath('QtipKey'), - {'keys': 'test'}) - assert ret == 3 diff --git a/legacy/tests/args_handler_test.py b/legacy/tests/args_handler_test.py deleted file mode 100644 index dceca1f5..00000000 --- a/legacy/tests/args_handler_test.py +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################## -# Copyright (c) 2016 ZTE Corp 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 pytest -import mock -import qtip.utils.args_handler - - -@pytest.mark.xfail(reason="to be fixed") -class TestClass: - @pytest.mark.parametrize("test_input, expected", [ - (['fuel', '/home', 'benchmarks/testplan/default/network/iperf_bm.yaml'], - ['fuel', '/home', "iperf", - [('1-server', ['10.20.0.23']), ('2-host', ['10.20.0.24'])], - "iperf_bm.yaml", - [('duration', 20), ('protocol', 'tcp'), ('bandwidthGbps', 10)], - [("10.20.0.24", [None]), ("10.20.0.23", [None])], {}]) - ]) - @mock.patch('qtip.utils.args_handler.Env_setup.call_ping_test') - @mock.patch('qtip.utils.args_handler.Env_setup.call_ssh_test') - @mock.patch('qtip.utils.args_handler.Env_setup.update_ansible') - @mock.patch('qtip.utils.args_handler.SpawnVM') - @mock.patch('qtip.utils.args_handler.Driver.drive_bench') - def test_prepare_and_run_benchmark_successful(self, mock_driver, mock_sqawn_vm, mock_env_setup_ping, - mock_env_setup_ssh, mock_update_ansible, test_input, expected): - mock_ips = mock.Mock(return_value=["10.20.0.23", "10.20.0.24"]) - qtip.utils.args_handler.Env_setup.fetch_compute_ips = mock_ips - qtip.utils.args_handler.prepare_and_run_benchmark(test_input[0], test_input[1], test_input[2]) - call = mock_driver.call_args - call_args, call_kwargs = call - assert sorted(map(sorted, call_args)) == sorted(map(sorted, expected)) diff --git a/legacy/tests/cli_test.py b/legacy/tests/cli_test.py deleted file mode 100644 index 5b7eac65..00000000 --- a/legacy/tests/cli_test.py +++ /dev/null @@ -1,52 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 pytest -import mock -import os -from qtip.utils.cli import Cli -from os.path import expanduser - - -@pytest.mark.skip("TODO(yujunz) recover test after refactoring") -class TestClass: - @pytest.mark.parametrize("test_input, expected", [ - (['-l', - 'zte', - '-f', - 'compute'], "You have specified a lab that is not present under benchmarks/testplan"), - (['-l', - 'default', - '-f', - 'test'], "This suite file test doesn't exist under benchmarks/suite/") - ]) - def test_cli_error(self, capfd, test_input, expected): - k = mock.patch.dict(os.environ, {'INSTALLER_TYPE': 'fuel', 'PWD': '/home'}) - with pytest.raises(SystemExit): - k.start() - Cli(test_input) - k.stop() - with open(expanduser('~') + "/qtip/logs/cli.log", "r") as file: - data = file.read() - assert expected in data - - @pytest.mark.parametrize("test_input, expected", [ - (['-l', - 'default', - '-f', - 'storage'], [('fuel', '/home', 'benchmarks/testplan/default/storage/fio_bm.yaml'), - ('fuel', '/home', 'benchmarks/testplan/default/storage/fio_vm.yaml')]) - ]) - @mock.patch('qtip.utils.cli.args_handler.prepare_and_run_benchmark') - def test_cli_successful(self, mock_args_handler, test_input, expected): - k = mock.patch.dict(os.environ, {'INSTALLER_TYPE': 'fuel', 'PWD': '/home'}) - k.start() - Cli(test_input) - k.stop() - call_list = map(lambda x: mock_args_handler.call_args_list[x][0], range(len(expected))) - assert sorted(call_list) == sorted(expected) diff --git a/legacy/tests/driver_test.py b/legacy/tests/driver_test.py deleted file mode 100644 index abe8cfbb..00000000 --- a/legacy/tests/driver_test.py +++ /dev/null @@ -1,103 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 pytest -import mock -from qtip.utils.driver import Driver -from os.path import expanduser - -HOME_DIR = expanduser('~') - - -class TestClass: - @pytest.mark.parametrize("test_input, expected", [ - (['fuel', - '/home', - "iperf", - [('host', ['10.20.0.13', '10.20.0.15'])], - "iperf_bm.yaml", - [('duration', 20), ('protocol', 'tcp'), ('bandwidthGbps', 0)], - [("10.20.0.13", [None]), ("10.20.0.15", [None])], - {'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.*'}], - [{'Dest_dir': HOME_DIR + '/qtip/results', - 'ip1': '', - 'ip2': '', - 'installer': 'fuel', - 'workingdir': '/home', - 'fname': 'iperf_bm.yaml', - 'username': 'root', - '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.*', - 'duration': 20, - 'protocol': 'tcp', - 'bandwidthGbps': 0, - "role": "host"}]), - (['joid', - '/home', - "iperf", - [('1-server', ['10.20.0.13']), ('2-host', ['10.20.0.15'])], - "iperf_vm.yaml", - [('duration', 20), ('protocol', 'tcp'), ('bandwidthGbps', 0)], - [('1-server', '10.10.17.4'), ('2-host', '10.10.17.5')], - {}], - [{'Dest_dir': HOME_DIR + '/qtip/results', - 'ip1': '10.20.0.13', - 'ip2': '', - 'installer': 'joid', - 'privateip1': '10.10.17.4', - 'workingdir': '/home', - 'fname': 'iperf_vm.yaml', - 'username': 'ubuntu', - 'duration': 20, - 'protocol': 'tcp', - 'bandwidthGbps': 0, - "role": "1-server"}, - {'Dest_dir': HOME_DIR + '/qtip/results', - 'ip1': '10.20.0.13', - 'ip2': '', - 'installer': 'joid', - 'privateip1': '10.10.17.4', - 'workingdir': '/home', - 'fname': 'iperf_vm.yaml', - 'username': 'ubuntu', - 'duration': 20, - 'protocol': 'tcp', - 'bandwidthGbps': 0, - "role": "2-host"}]) - ]) - @mock.patch('qtip.utils.driver.AnsibleApi.execute_playbook') - @mock.patch('qtip.utils.driver.AnsibleApi.get_detail_playbook_stats') - def test_driver_success(self, mock_stats, mock_ansible, test_input, expected): - mock_ansible.return_value = True - mock_stats.return_value = [(u'10.20.6.14', {'unreachable': 0, - 'skipped': 13, - 'ok': 27, - 'changed': 26, - 'failures': 0}), - ('localhost', {'unreachable': 0, - 'skipped': 0, - 'ok': 6, - 'changed': 6, - 'failures': 0}), - (u'10.20.6.13', {'unreachable': 0, - 'skipped': 13, - 'ok': 27, - 'changed': 26, - 'failures': 0})] - dri = Driver() - result = dri.drive_bench(test_input[0], test_input[1], test_input[2], test_input[3], - test_input[4], test_input[5], test_input[6], test_input[7]) - call_list = mock_ansible.call_args_list - for call in call_list: - call_args, call_kwargs = call - real_call = call_args[3] - assert real_call == expected[call_list.index(call)] - assert result['result'] == 0 diff --git a/legacy/tests/env_setup_test.py b/legacy/tests/env_setup_test.py deleted file mode 100644 index dea48190..00000000 --- a/legacy/tests/env_setup_test.py +++ /dev/null @@ -1,120 +0,0 @@ -############################################################################## -# Copyright (c) 2016 ZTE 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 os -import pytest -import filecmp -from qtip.utils.env_setup import Env_setup -import mock - - -DATA_DIR = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, 'data') - - -def get_test_plan(name): - return os.path.join(DATA_DIR, 'testplan', name) - - -def get_output(name): - return os.path.join(DATA_DIR, 'output', name) - - -class TestClass: - @pytest.mark.parametrize("test_input, expected", [ - (get_test_plan("bm_with_proxy.yaml"), - ["dhrystone", - {}, - [], - {'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.*'}]), - (get_test_plan("bm_without_proxy.yaml"), - ["dhrystone", - {}, - [], - {}]), - (get_test_plan("vm.yaml"), - ["iperf", - {'availability_zone': ['compute1', 'compute1'], - 'OS_image': ['QTIP_CentOS', 'QTIP_CentOS'], - 'public_network': ['admin-floating_net', 'admin-floating_net'], - 'flavor': ['m1.large', 'm1.large'], - 'role': ['1-server', '2-host']}, - [('duration', 20), ('protocol', 'tcp'), ('bandwidthGbps', 0)], - {'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.*'}])]) - def test_parse_success(self, test_input, expected): - test_class = Env_setup() - mock_ips = mock.Mock(return_value=["10.20.0.28", "10.20.0.29"]) - test_class.fetch_compute_ips = mock_ips - benchmark, vm_para, details, proxy = \ - test_class.parse(test_input) - assert benchmark == expected[0] - assert vm_para == expected[1] - assert sorted(details) == sorted(expected[2]) - assert proxy == expected[3] - - def test_parse_vm_error(self): - test_class = Env_setup() - mock_ips = mock.Mock(return_value=["10.20.0.28", "10.20.0.29"]) - test_class.fetch_compute_ips = mock_ips - with pytest.raises(KeyError) as excinfo: - test_class.parse(get_test_plan("vm_error.yaml")) - assert "benchmark" in str(excinfo.value) - - def test_update_ansible(self): - test_class = Env_setup() - mock_ips = mock.Mock(return_value=["10.20.0.28", "10.20.0.29"]) - test_class.fetch_compute_ips = mock_ips - test_class.parse(get_test_plan("bm_without_proxy.yaml")) - test_class.update_ansible() - result = filecmp.cmp(get_output("hosts"), "config/hosts") - assert result - - @pytest.mark.skip("(yujunz) test hung") - def test_ping(self, capfd): - test_class = Env_setup() - mock_ips = mock.Mock(return_value=["127.0.0.1", "10.20.0.29"]) - test_class.fetch_compute_ips = mock_ips - test_class.parse(get_test_plan("bm_ping.yaml")) - test_class.call_ping_test() - resout, reserr = capfd.readouterr() - assert '127.0.0.1 is UP' in resout - - def test_check_machine_ips_without_ip(self): - test_class = Env_setup() - mock_ips = mock.Mock(return_value=["10.20.0.28", "10.20.0.29"]) - test_class.fetch_compute_ips = mock_ips - inputs = {"machine_1": {"ip": "", "pw": "", "role": "host"}, - "machine_2": {"ip": "", "pw": "", "role": "host"}} - test_class.check_machine_ips(inputs) - assert inputs["machine_1"]['ip'] in ["10.20.0.28", "10.20.0.29"] - assert inputs["machine_2"]['ip'] in ["10.20.0.28", "10.20.0.29"] - assert inputs["machine_1"]['ip'] != inputs["machine_2"]['ip'] - - def test_check_machine_ips_with_ip(self): - test_class = Env_setup() - mock_ips = mock.Mock(return_value=["10.20.0.28", "10.20.0.29"]) - test_class.fetch_compute_ips = mock_ips - inputs = {"machine_1": {"ip": "10.20.0.28", "pw": "", "role": "host"}, - "machine_2": {"ip": "10.20.0.29", "pw": "", "role": "host"}} - test_class.check_machine_ips(inputs) - assert inputs["machine_1"]['ip'] in ["10.20.0.28", "10.20.0.29"] - assert inputs["machine_2"]['ip'] in ["10.20.0.28", "10.20.0.29"] - assert inputs["machine_1"]['ip'] != inputs["machine_2"]['ip'] - - def test_check_machine_ips_with_invalid_ip(self): - test_class = Env_setup() - mock_ips = mock.Mock(return_value=["10.20.0.28", "10.20.0.29"]) - test_class.fetch_compute_ips = mock_ips - inputs = {"machine_1": {"ip": "10.20.0.3", "pw": "", "role": "host"}, - "machine_2": {"ip": "10.20.0.4", "pw": "", "role": "host"}} - with pytest.raises(RuntimeError): - test_class.check_machine_ips(inputs) diff --git a/legacy/utils/ansible_api.py b/legacy/utils/ansible_api.py deleted file mode 100644 index 9e1d249e..00000000 --- a/legacy/utils/ansible_api.py +++ /dev/null @@ -1,65 +0,0 @@ -############################################################################## -# Copyright (c) 2016 ZTE Corp 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 os -from collections import namedtuple -from ansible.executor.playbook_executor import PlaybookExecutor -from ansible.inventory import Inventory -from ansible.parsing.dataloader import DataLoader -from ansible.vars import VariableManager -import logger_utils - -logger = logger_utils.QtipLogger('ansible_api').get - - -class AnsibleApi: - - def __init__(self): - self.variable_manager = VariableManager() - self.loader = DataLoader() - self.passwords = {} - self.pbex = None - - def _check_path(self, file_path): - if not os.path.exists(file_path): - logger.error('The playbook %s does not exist' % file_path) - return False - else: - return True - - def execute_playbook(self, hosts_file, playbook_path, pub_key_file, vars): - if not self._check_path(hosts_file): - return False - - inventory = Inventory(loader=self.loader, variable_manager=self.variable_manager, - host_list=hosts_file) - Options = namedtuple('Options', ['listtags', 'listtasks', 'listhosts', 'syntax', - 'connection', 'module_path', 'forks', 'remote_user', - 'private_key_file', 'ssh_common_args', 'ssh_extra_args', - 'sftp_extra_args', 'scp_extra_args', 'become', - 'become_method', 'become_user', 'verbosity', 'check']) - options = Options(listtags=False, listtasks=False, listhosts=False, syntax=False, - connection='ssh', module_path=None, forks=100, remote_user='root', - private_key_file=pub_key_file, ssh_common_args=None, - ssh_extra_args=None, sftp_extra_args=None, scp_extra_args=None, - become=True, become_method=None, become_user='root', verbosity=None, - check=False) - self.variable_manager.extra_vars = vars - - self.pbex = PlaybookExecutor(playbooks=[playbook_path], inventory=inventory, - variable_manager=self.variable_manager, loader=self.loader, - options=options, passwords=self.passwords) - - return self.pbex.run() - - def get_detail_playbook_stats(self): - if self.pbex: - stats = self.pbex._tqm._stats - return map(lambda x: (x, stats.summarize(x)), stats.processed.keys()) - else: - return None diff --git a/legacy/utils/args_handler.py b/legacy/utils/args_handler.py deleted file mode 100644 index 993b1035..00000000 --- a/legacy/utils/args_handler.py +++ /dev/null @@ -1,73 +0,0 @@ -############################################################################## -# Copyright (c) 2016 ZTE Corp 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 os -from operator import add -import simplejson as json -from env_setup import Env_setup -from spawn_vm import SpawnVM -from driver import Driver - - -def get_files_in_suite(suite_name, case_type='all'): - benchmark_list = json.load(file('benchmarks/suite/{0}'.format(suite_name))) - return reduce(add, benchmark_list.values()) \ - if case_type == 'all' else benchmark_list[case_type] - - -def get_files_in_test_plan(lab, suite_name, case_type='all'): - test_case_all = os.listdir('benchmarks/testplan/{0}/{1}'.format(lab, suite_name)) - return test_case_all if case_type == 'all' else \ - filter(lambda x: case_type in x, test_case_all) - - -def get_benchmark_path(lab, suit, benchmark): - return 'benchmarks/testplan/{0}/{1}/{2}'.format(lab, suit, benchmark) - - -def check_suite(suite_name): - return True if os.path.isfile('benchmarks/suite/' + suite_name) else False - - -def check_lab_name(lab_name): - return True if os.path.isdir('benchmarks/testplan/' + lab_name) else False - - -def check_benchmark_name(lab, file, benchmark): - return os.path.isfile('benchmarks/testplan/' + lab + '/' + file + '/' + benchmark) - - -def _get_f_name(test_case_path): - return test_case_path.split('/')[-1] - - -def prepare_ansible_env(benchmark_test_case): - env_setup = Env_setup() - [benchmark, vm_info, benchmark_details, proxy_info] = env_setup.parse(benchmark_test_case) - SpawnVM(vm_info) if len(vm_info) else None - env_setup.call_ping_test() - env_setup.call_ssh_test() - env_setup.update_ansible() - return benchmark, benchmark_details, proxy_info, env_setup - - -def run_benchmark(installer_type, pwd, benchmark, benchmark_details, - proxy_info, env_setup, benchmark_test_case): - driver = Driver() - result = driver.drive_bench(installer_type, pwd, benchmark, - env_setup.roles_dict.items(), - _get_f_name(benchmark_test_case), - benchmark_details, env_setup.ip_pw_dict.items(), proxy_info) - env_setup.cleanup_authorized_keys() - return result - - -def prepare_and_run_benchmark(installer_type, pwd, benchmark_test_case): - benchmark, benchmark_details, proxy_info, env_setup = prepare_ansible_env(benchmark_test_case) - return run_benchmark(installer_type, pwd, benchmark, benchmark_details, - proxy_info, env_setup, benchmark_test_case) diff --git a/legacy/utils/cli.py b/legacy/utils/cli.py deleted file mode 100644 index 5e566f27..00000000 --- a/legacy/utils/cli.py +++ /dev/null @@ -1,76 +0,0 @@ -############################################################################## -# 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 sys -import os -import args_handler -import argparse -import logger_utils - -logger = logger_utils.QtipLogger('cli').get - - -class Cli: - - @staticmethod - def _parse_args(args): - parser = argparse.ArgumentParser() - parser.add_argument('-l ', '--lab', required=True, help='Name of Lab ' - 'on which being tested, These can' - 'be found in the benchmarks/testplan/ directory. Please ' - 'ensure that you have edited the respective files ' - 'before using them. For testing other than through Jenkins' - ' The user should list default after -l . all the fields in' - ' the files are necessary and should be filled') - parser.add_argument('-f', '--file', required=True, help='File in ' - 'benchmarks/suite/ with the list of tests. there are three files' - '\n compute ' - '\n storage ' - '\n network ' - 'They contain all the tests that will be run. They are listed by suite.' - 'Please ensure there are no empty lines') - parser.add_argument('-b', '--benchmark', help='Name of the benchmark.' - 'Can be found in benchmarks/suite/file_name') - - return parser.parse_args(args) - - def __init__(self, args=sys.argv[1:]): - - args = self._parse_args(args) - if not args_handler.check_suite(args.file): - logger.error("ERROR: This suite file %s doesn't exist under benchmarks/suite/.\ - Please enter correct file." % str(args.file)) - sys.exit(1) - - if not args_handler.check_lab_name(args.lab): - logger.error("You have specified a lab that is not present under benchmarks/testplan/.\ - Please enter correct file. If unsure how to proceed, use -l default.") - sys.exit(1) - suite = args.file - benchmarks = args_handler.get_files_in_suite(suite) - test_cases = args_handler.get_files_in_test_plan(args.lab, suite) - benchmarks_list = filter(lambda x: x in test_cases, benchmarks) - - if args.benchmark: - if not args_handler.check_benchmark_name(args.lab, args.file, args.benchmark): - logger.error("You have specified an incorrect benchmark.\ - Please enter the correct one.") - sys.exit(1) - else: - logger.info("Starting with " + args.benchmark) - args_handler.prepare_and_run_benchmark( - os.environ['INSTALLER_TYPE'], os.environ['PWD'], - args_handler.get_benchmark_path(args.lab.lower(), args.file, args.benchmark)) - else: - map(lambda x: args_handler.prepare_and_run_benchmark( - os.environ['INSTALLER_TYPE'], os.environ['PWD'], - args_handler.get_benchmark_path(args.lab.lower(), suite, x)), benchmarks_list) - - logger.info("{0} is not a Template in the Directory Enter a Valid file name.\ - or use qtip.py -h for list".format(filter(lambda x: x not in test_cases, benchmarks))) diff --git a/legacy/utils/driver.py b/legacy/utils/driver.py deleted file mode 100644 index 9894e0f5..00000000 --- a/legacy/utils/driver.py +++ /dev/null @@ -1,92 +0,0 @@ -############################################################################## -# Copyright (c) 2015 Dell Inc, ZTE 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 logger_utils -from operator import add -from ansible_api import AnsibleApi -from os.path import expanduser - -logger = logger_utils.QtipLogger('driver').get - - -class Driver: - - def __init__(self): - - logger.info("Class driver initialized\n") - self.installer_username = {'fuel': 'root', - 'joid': 'ubuntu', - 'apex': 'heat-admin'} - - @staticmethod - def merge_two_dicts(x, y): - ''' - It is from http://stackoverflow.com/questions/38987/ - how-can-i-merge-two-python-dictionaries-in-a-single-expression - ''' - z = x.copy() - z.update(y) - return z - - def get_common_var_json(self, installer_type, pwd, benchmark_fname, - benchmark_detail, pip_dict, proxy_info): - common_json = {'Dest_dir': expanduser('~') + '/qtip/results', - 'ip1': '', - 'ip2': '', - 'installer': str(installer_type), - 'workingdir': str(pwd), - 'fname': str(benchmark_fname), - 'username': self.installer_username[str(installer_type)]} - common_json.update(benchmark_detail) if benchmark_detail else None - common_json.update(proxy_info) if proxy_info else None - return common_json - - def get_special_var_json(self, role, roles, benchmark_detail, pip_dict): - special_json = {} - index = roles.index(role) + 1 - private_ip = pip_dict[0][1] if pip_dict[0][1][0] else 'NONE' - map(lambda x: special_json.update({'ip' + str(index): x}), role[1])\ - if benchmark_detail and (role[0] == '1-server') else None - map(lambda x: special_json.update({'privateip' + str(index): private_ip}), role[1])\ - if benchmark_detail and (role[0] == '1-server') else None - special_json = self.get_special_var_json(filter(lambda x: x[0] == '1-server', roles)[0], - roles, - benchmark_detail, - pip_dict) if role[0] == '2-host' else special_json - special_json.update({'role': role[0]}) - return special_json - - def run_ansible_playbook(self, benchmark, extra_vars): - logger.info(extra_vars) - ansible_api = AnsibleApi() - ansible_api.execute_playbook('./config/hosts', - './benchmarks/perftest/{0}.yaml'.format(benchmark), - './config/QtipKey', extra_vars) - return self.get_ansible_result(extra_vars['role'], ansible_api.get_detail_playbook_stats()) - - def drive_bench(self, installer_type, pwd, benchmark, roles, benchmark_fname, - benchmark_detail=None, pip_dict=None, proxy_info=None): - roles = sorted(roles) - pip_dict = sorted(pip_dict) - var_json = self.get_common_var_json(installer_type, pwd, benchmark_fname, - benchmark_detail, pip_dict, proxy_info) - result = map(lambda role: self.run_ansible_playbook - (benchmark, self.merge_two_dicts(var_json, - self.get_special_var_json(role, roles, - benchmark_detail, - pip_dict))), roles) - return reduce(self._merge_ansible_result, result) - - def get_ansible_result(self, role, stats): - result = reduce(add, map(lambda x: x[1]['failures'] + x[1]['unreachable'], stats)) - return {'result': result, - 'detail': {role: stats}} - - def _merge_ansible_result(self, result_1, result_2): - return {'result': result_1['result'] + result_2['result'], - 'detail': self.merge_two_dicts(result_1['detail'], result_2['detail'])} diff --git a/legacy/utils/env_setup.py b/legacy/utils/env_setup.py deleted file mode 100644 index 7bbedfcf..00000000 --- a/legacy/utils/env_setup.py +++ /dev/null @@ -1,214 +0,0 @@ -############################################################################## -# Copyright (c) 2016 Dell Inc, ZTE 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 os -import random -import socket -import sys -import time -from collections import defaultdict -from os.path import expanduser -import paramiko -import yaml -import logger_utils - -logger = logger_utils.QtipLogger('env_setup').get - - -class Env_setup: - - roles_ip_list = [] # ROLE and its corresponding IP address list - 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' - self.roles_ip_list[:] = [] - self.ip_pw_list[:] = [] - 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 = '' - - @staticmethod - def write_to_file(role): - f_name_2 = open('./config/hosts', 'w') - print role.items() - for k in role: - f_name_2.write('[' + k + ']\n') - num = len(role[k]) - for x in range(num): - f_name_2.write(role[k][x] + '\n') - f_name_2.close() - - @staticmethod - def ssh_test(hosts): - for ip, pw in hosts: - logger.info('Beginning SSH Test: %s \n' % ip) - os.system('ssh-keyscan %s >> /root/.ssh/known_hosts' % ip) - time.sleep(2) - - ssh_cmd = './scripts/qtip_creds.sh %s' % ip - logger.info("run command: %s " % ssh_cmd) - os.system(ssh_cmd) - - ssh = paramiko.SSHClient() - ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - ssh.connect(ip, key_filename='./config/QtipKey') - - for attempts in range(100): - try: - stdin, stdout, stderr = ssh.exec_command('uname') - if not stderr.readlines(): - logger.info('SSH successful') - break - except socket.error: - logger.error('SSH is still unavailable, retry!') - time.sleep(2) - if attempts == 99: - logger.error("Try 99 times, SSH failed: %s" % ip) - - @staticmethod - def ping_test(lister, attempts=30): - for k, v in lister.iteritems(): - time.sleep(10) - for val in v: - ipvar = val - ping_cmd = 'ping -D -c1 {0}'.format(ipvar) - for i in range(attempts): - if os.system(ping_cmd) != 0: - print '\nWaiting for machine\n' - time.sleep(10) - else: - break - print ('\n\n %s is UP \n\n ' % ipvar) - - @staticmethod - def fetch_compute_ips(): - logger.info("Fetch compute ips through installer") - ips = [] - - installer_type = str(os.environ['INSTALLER_TYPE'].lower()) - installer_ip = str(os.environ['INSTALLER_IP']) - if installer_type not in ["fuel", "compass"]: - raise RuntimeError("%s is not supported" % installer_type) - if not installer_ip: - raise RuntimeError("undefine environment variable INSTALLER_IP") - - cmd = "bash ./scripts/fetch_compute_ips.sh -i %s -a %s" % \ - (installer_type, installer_ip) - logger.info(cmd) - os.system(cmd) - with open(expanduser('~') + "/qtip/ips.log", "r") as file: - data = file.read() - if data: - ips.extend(data.rstrip('\n').split('\n')) - logger.info("All compute ips: %s" % ips) - return ips - - def check_machine_ips(self, host_tag): - logger.info("Check machine ips") - ips = self.fetch_compute_ips() - ips_num = len(ips) - num = len(host_tag) - if num > ips_num: - err = "host num %s > compute ips num %s" % (num, ips_num) - raise RuntimeError(err) - - for x in range(num): - hostlabel = 'machine_' + str(x + 1) - if host_tag[hostlabel]['ip']: - if host_tag[hostlabel]['ip'] in ips: - info = "%s's ip %s is defined by test case yaml file" % \ - (hostlabel, host_tag[hostlabel]['ip']) - logger.info(info) - else: - err = "%s is not in %s" % (host_tag[hostlabel]['ip'], ips) - raise RuntimeError(err) - else: - host_tag[hostlabel]['ip'] = random.choice(ips) - info = "assign ip %s to %s" % (host_tag[hostlabel]['ip'], hostlabel) - ips.remove(host_tag[hostlabel]['ip']) - - def get_host_machine_info(self, host_tag): - num = len(host_tag) - offset = len(self.roles_ip_list) - self.check_machine_ips(host_tag) - for x in range(num): - hostlabel = 'machine_' + str(x + 1) - self.roles_ip_list.insert( - offset, (host_tag[hostlabel]['role'], host_tag[hostlabel]['ip'])) - self.ip_pw_list.insert( - offset, (host_tag[hostlabel]['ip'], host_tag[hostlabel]['pw'])) - - def get_virtual_machine_info(self, virtual_tag): - - num = len(virtual_tag) - for x in range(num): - host_label = 'virtualmachine_' + str(x + 1) - for k, v in virtual_tag[host_label].iteritems(): - self.vm_parameters[k].append(v) - - def get_bench_mark_details(self, detail_dic): - - print detail_dic - for k, v in detail_dic.items(): - self.benchmark_details[k] = v - - def parse(self, config_file_path): - try: - f_name = open(config_file_path, 'r+') - doc = yaml.safe_load(f_name) - f_name.close() - if doc['Scenario']['benchmark']: - self.benchmark = doc['Scenario']['benchmark'] - if doc['Context']['Virtual_Machines']: - self.get_virtual_machine_info(doc['Context']['Virtual_Machines']) - if doc['Context']['Host_Machines']: - self.get_host_machine_info(doc['Context']['Host_Machines']) - if doc.get('Scenario', {}).get('benchmark_details', {}): - self.get_bench_mark_details(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: - self.ip_pw_dict[k].append(v) - return ( - self.benchmark, - self.vm_parameters, - self.benchmark_details.items(), - self.proxy_info) - except KeyboardInterrupt: - print 'ConfigFile Closed: exiting!' - sys.exit(0) - - def update_ansible(self): - self.write_to_file(self.roles_dict) - - def call_ping_test(self): - self.ping_test(self.roles_dict) - - def call_ssh_test(self): - self.ssh_test(self.ip_pw_list) - - def cleanup_authorized_keys(self): - for ip, pw in self.ip_pw_list: - cmd = './scripts/cleanup_creds.sh %s' % ip - logger.info("cleanup authorized_keys: %s " % cmd) - os.system(cmd) diff --git a/legacy/utils/transform/dpi_transform.py b/legacy/utils/transform/dpi_transform.py deleted file mode 100644 index bc837311..00000000 --- a/legacy/utils/transform/dpi_transform.py +++ /dev/null @@ -1,55 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 os -import pickle -import datetime - -sum_dpi_pps = float(0) -sum_dpi_bps = float(0) - -for x in range(1, 11): - dpi_result_pps = float( - os.popen( - "cat $HOME/qtip_result/dpi_dump.txt | grep 'nDPI throughput:' | awk 'NR=='" + - str(x) + - " | awk '{print $3}'").read().lstrip()) - dpi_result_bps = float( - os.popen( - "cat $HOME/qtip_result/dpi_dump.txt | grep 'nDPI throughput:' | awk 'NR=='" + - str(x) + - " | awk '{print $7}'").read().rstrip()) - - if (dpi_result_pps > 100): - dpi_result_pps = dpi_result_pps / 1000 - - if (dpi_result_bps > 100): - dpi_result_bps = dpi_result_bps / 1000 - - sum_dpi_pps += dpi_result_pps - sum_dpi_bps += dpi_result_bps - -dpi_result_pps = sum_dpi_pps / 10 -dpi_result_bps = sum_dpi_bps / 10 - -host = os.popen("hostname").read().rstrip() -log_time_stamp = str(datetime.datetime.utcnow().isoformat()) - -os.popen( - "cat $HOME/qtip_result/dpi_dump.txt > $HOME/qtip_result/" + - host + - "-" + - log_time_stamp + - ".log") - -home_dir = str(os.popen("echo $HOME").read().rstrip()) -host = os.popen("echo $HOSTNAME") -result = {'pps': round(dpi_result_pps, 3), - 'bps': round(dpi_result_bps, 3)} -with open('./result_temp', 'w+') as result_file: - pickle.dump(result, result_file) diff --git a/legacy/utils/transform/final_report.py b/legacy/utils/transform/final_report.py deleted file mode 100644 index 1d7c3001..00000000 --- a/legacy/utils/transform/final_report.py +++ /dev/null @@ -1,32 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 pickle -import json -import datetime -import os -import sys - -home_dir = str((os.popen("echo $HOME").read().rstrip())) - -with open('./sys_info_temp', 'r') as sys_info_f: - sys_info_dict = pickle.load(sys_info_f) -with open('./result_temp', 'r') as result_f: - result_dict = pickle.load(result_f) - -host_name = (os.popen("hostname").read().rstrip()) -benchmark_name = str(sys.argv[1]) -testcase_name = str(sys.argv[2]) -report_time_stamp = str(datetime.datetime.utcnow().isoformat()) -final_dict = {"name": testcase_name, - "time": report_time_stamp, - "system_information": sys_info_dict, - "details": result_dict} - -with open('./' + host_name + '-' + report_time_stamp + '.json', 'w+') as result_json: - json.dump(final_dict, result_json, indent=4, sort_keys=True) diff --git a/legacy/utils/transform/ramspeed_transform.py b/legacy/utils/transform/ramspeed_transform.py deleted file mode 100644 index 9aa713ff..00000000 --- a/legacy/utils/transform/ramspeed_transform.py +++ /dev/null @@ -1,49 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 os -import pickle -import datetime - -intmem_copy = os.popen("cat Intmem | grep 'BatchRun Copy' | awk '{print $4}'").read().rstrip() -intmem_scale = os.popen("cat Intmem | grep 'BatchRun Scale' | awk '{print $4}'").read().rstrip() -intmem_add = os.popen("cat Intmem | grep 'BatchRun Add' | awk '{print $4}'").read().rstrip() -intmem_triad = os.popen("cat Intmem | grep 'BatchRun Triad' | awk '{print $4}'").read().rstrip() -intmem_average = os.popen("cat Intmem | grep 'BatchRun AVERAGE' | awk '{print $4}'").read().rstrip() - -print intmem_copy -print intmem_average - -floatmem_copy = os.popen("cat Floatmem | grep 'BatchRun Copy' | awk '{print $4}'").read().rstrip() -floatmem_scale = os.popen("cat Floatmem | grep 'BatchRun Scale' | awk '{print $4}'").read().rstrip() -floatmem_add = os.popen("cat Floatmem | grep 'BatchRun Add' | awk '{print $4}'").read().rstrip() -floatmem_triad = os.popen("cat Floatmem | grep 'BatchRun Triad' | awk '{print $4}'").read().rstrip() -floatmem_average = os.popen("cat Floatmem | grep 'BatchRun AVERAGE' | awk '{print $4}'").read().rstrip() - -print floatmem_copy -print floatmem_average - -hostname = os.popen("hostname").read().rstrip() -time_stamp = str(datetime.datetime.utcnow().isoformat()) - -os.system("mv Intmem " + hostname + "-" + time_stamp + ".log") -os.system("cp Floatmem >> " + hostname + "-" + time_stamp + ".log") - -result = {"int_bandwidth": {"copy": intmem_copy, - "add": intmem_add, - "scale": intmem_scale, - "triad": intmem_triad, - "average": intmem_average}, - "float_bandwidth": {"copy": floatmem_copy, - "add": floatmem_add, - "scale": floatmem_scale, - "triad": floatmem_triad, - "average": floatmem_average}} - -with open('./result_temp', 'w+') as result_file: - pickle.dump(result, result_file) diff --git a/legacy/utils/transform/ssl_transform.py b/legacy/utils/transform/ssl_transform.py deleted file mode 100644 index 24b696e5..00000000 --- a/legacy/utils/transform/ssl_transform.py +++ /dev/null @@ -1,62 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 os -import pickle -import datetime - -openssl_version = os.popen("cat RSA_dump | head -1").read().rstrip() -rsa_512_sps = os.popen( - "cat RSA_dump | grep '512 bits ' | awk '{print $6}' ").read().rstrip() -rsa_512_vps = os.popen( - "cat RSA_dump | grep '512 bits ' | awk '{print $7}' ").read().rstrip() -rsa_1024_sps = os.popen( - "cat RSA_dump | grep '1024 bits ' | awk '{print $6}' ").read().rstrip() -rsa_1024_vps = os.popen( - "cat RSA_dump | grep '1024 bits ' | awk '{print $7}' ").read().rstrip() -rsa_2048_sps = os.popen( - "cat RSA_dump | grep '2048 bits ' | awk '{print $6}' ").read().rstrip() -rsa_2048_vps = os.popen( - "cat RSA_dump | grep '2048 bits ' | awk '{print $7}' ").read().rstrip() -rsa_4096_sps = os.popen( - "cat RSA_dump | grep '4096 bits ' | awk '{print $6}' ").read().rstrip() -rsa_4096_vps = os.popen( - "cat RSA_dump | grep '4096 bits ' | awk '{print $7}' ").read().rstrip() - -aes_16B = os.popen( - "cat AES-128-CBC_dump | grep 'aes-128-cbc ' | awk '{print $2}' ").read().rstrip() -aes_64B = os.popen( - "cat AES-128-CBC_dump | grep 'aes-128-cbc ' | awk '{print $3}' ").read().rstrip() -aes_256B = os.popen( - "cat AES-128-CBC_dump | grep 'aes-128-cbc ' | awk '{print $4}' ").read().rstrip() -aes_1024B = os.popen( - "cat AES-128-CBC_dump | grep 'aes-128-cbc ' | awk '{print $5}' ").read().rstrip() -aes_8192B = os.popen( - "cat AES-128-CBC_dump | grep 'aes-128-cbc ' | awk '{print $6}' ").read().rstrip() - -hostname = os.popen("hostname").read().rstrip() -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") - -result = {"version": [openssl_version], - "rsa_sig": {"512_bits": rsa_512_sps, - "1024_bits": rsa_1024_sps, - "2048_bits": rsa_2048_sps, - "4096_bits": rsa_4096_sps, - "unit": "sig/sec"}, - "aes_128_cbc": {"16B_block": aes_16B, - "64B_block": aes_64B, - "256B_block": aes_256B, - "1024B_block": aes_1024B, - "8192B_block": aes_8192B, - "unit": "B/sec"}} - -with open('./result_temp', 'w+') as result_file: - pickle.dump(result, result_file) diff --git a/legacy/utils/transform/ubench_transform.py b/legacy/utils/transform/ubench_transform.py deleted file mode 100644 index fe687118..00000000 --- a/legacy/utils/transform/ubench_transform.py +++ /dev/null @@ -1,40 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 os -import json -import pickle - -total_cpu = os.popen( - "cat $HOME/tempT/UnixBench/results/* | grep 'of tests' | awk '{print $1;}' | awk 'NR==1'").read().rstrip() - -cpu_1 = os.popen( - "cat $HOME/tempT/UnixBench/results/* | grep 'of tests' | awk '{print $6;}' | awk 'NR==1'").read().rstrip() - - -cpu_2 = os.popen( - "cat $HOME/tempT/UnixBench/results/* | grep 'of tests' | awk '{print $6;}' | awk 'NR==2'").read().rstrip() - - -index_1 = os.popen( - "cat $HOME/tempT/UnixBench/results/* | grep 'Index Score (Partial Only) ' | awk '{print $7;}' | awk 'NR==1'").read().rstrip() -index_2 = os.popen( - "cat $HOME/tempT/UnixBench/results/* | grep 'Index Score (Partial Only) ' | awk '{print $7;}' | awk 'NR==2'").read().rstrip() - - -result = {"n_cpu": total_cpu, - "single": {"n_para_test": cpu_1, - "score": index_1}, - "multi": {"n_para_test": cpu_2, - "score": index_2} - } - -with open('result_temp', 'w+') as result_file: - pickle.dump(result, result_file) -print json.dumps(result, indent=4, sort_keys=True) -# print result.items() diff --git a/qtip/ansible_library/plugins/action/aggregate.py b/qtip/ansible_library/plugins/action/aggregate.py index f1451e06..36ea0ef1 100644 --- a/qtip/ansible_library/plugins/action/aggregate.py +++ b/qtip/ansible_library/plugins/action/aggregate.py @@ -42,9 +42,15 @@ class ActionModule(ActionBase): # aggregate QPI results @export_to_file def aggregate(hosts, basepath, src): - host_results = [{'host': host, 'result': json.load(open(os.path.join(basepath, host, src)))} for host in hosts] - score = int(mean([r['result']['score'] for r in host_results])) + host_results = [] + for host in hosts: + host_result = json.load(open(os.path.join(basepath, host, src))) + host_result['name'] = host + host_results.append(host_result) + score = int(mean([r['score'] for r in host_results])) return { 'score': score, - 'host_results': host_results + 'name': 'compute', + 'description': 'POD Compute QPI', + 'children': host_results } diff --git a/qtip/ansible_library/plugins/action/calculate.py b/qtip/ansible_library/plugins/action/calculate.py index 8d5fa1f7..d50222fe 100644 --- a/qtip/ansible_library/plugins/action/calculate.py +++ b/qtip/ansible_library/plugins/action/calculate.py @@ -55,18 +55,22 @@ def calc_qpi(qpi_spec, metrics): display.vvv("spec: {}".format(qpi_spec)) display.vvv("metrics: {}".format(metrics)) - section_results = [{'name': s['name'], 'result': calc_section(s, metrics)} + section_results = [calc_section(s, metrics) for s in qpi_spec['sections']] # TODO(yujunz): use formula in spec standard_score = 2048 - qpi_score = int(mean([r['result']['score'] for r in section_results]) * standard_score) + qpi_score = int(mean([r['score'] for r in section_results]) * standard_score) results = { - 'spec': qpi_spec, 'score': qpi_score, - 'section_results': section_results, - 'metrics': metrics + 'name': qpi_spec['name'], + 'description': qpi_spec['description'], + 'children': section_results, + 'details': { + 'metrics': metrics, + 'spec': qpi_spec + } } return results @@ -78,13 +82,15 @@ def calc_section(section_spec, metrics): display.vvv("spec: {}".format(section_spec)) display.vvv("metrics: {}".format(metrics)) - metric_results = [{'name': m['name'], 'result': calc_metric(m, metrics[m['name']])} + metric_results = [calc_metric(m, metrics[m['name']]) for m in section_spec['metrics']] # TODO(yujunz): use formula in spec - section_score = mean([r['result']['score'] for r in metric_results]) + section_score = mean([r['score'] for r in metric_results]) return { 'score': section_score, - 'metric_results': metric_results + 'name': section_spec['name'], + 'description': section_spec.get('description', 'section'), + 'children': metric_results } @@ -95,12 +101,16 @@ def calc_metric(metric_spec, metrics): display.vvv("metrics: {}".format(metrics)) # TODO(yujunz): use formula in spec - workload_results = [{'name': w['name'], 'score': calc_score(metrics[w['name']], w['baseline'])} + workload_results = [{'name': w['name'], + 'description': 'workload', + 'score': calc_score(metrics[w['name']], w['baseline'])} for w in metric_spec['workloads']] metric_score = mean([r['score'] for r in workload_results]) return { 'score': metric_score, - 'workload_results': workload_results + 'name': metric_spec['name'], + 'description': metric_spec.get('description', 'metric'), + 'children': workload_results } diff --git a/qtip/collector/calculator.py b/qtip/collector/calculator.py deleted file mode 100644 index c3d961b3..00000000 --- a/qtip/collector/calculator.py +++ /dev/null @@ -1,38 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corp 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 operator import add - -from qtip.util.logger import QtipLogger - -logger = QtipLogger('calculator').get - - -def dpi_calculator(samples): - try: - float_pps = map(lambda x: float(x), samples['pps']) - float_bps = map(lambda x: float(x), samples['bps']) - sum_dpi_pps = reduce(add, - map(lambda x: x / 1000 if x > 100 else x, float_pps)) - sum_dpi_bps = reduce(add, - map(lambda x: x / 1000 if x > 100 else x, float_bps)) - - return {'pps': round(sum_dpi_pps / 10, 3), 'bps': round(sum_dpi_bps / 10, 3)} - except Exception as error: - logger.error(error) - return {'pps': None, 'bps': None} - - -def calculate_cpu_usage(cpu_idle): - try: - cpu_usage = round((100.0 - float(cpu_idle)), 3) - return '{0}%'.format(str(cpu_usage)) - except Exception, error: - logger.error(error) - return None diff --git a/qtip/collector/parser/grep.py b/qtip/collector/parser/grep.py index d3a8210a..66b51b1e 100644 --- a/qtip/collector/parser/grep.py +++ b/qtip/collector/parser/grep.py @@ -7,21 +7,15 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -from collections import defaultdict -from os import path import re -import yaml from qtip.base import BaseActor from qtip.base.constant import BaseProp -from qtip.collector import calculator from qtip.util.logger import QtipLogger logger = QtipLogger('grep').get -REGEX_FILE = path.join(path.dirname(__file__), 'regex.yaml') - class GrepProp(BaseProp): FILENAME = 'filename' @@ -40,63 +34,3 @@ def grep_in_file(filename, regex): with open(filename, 'r') as f: return filter(lambda x: x is not None, re.finditer(regex, f.read(), re.MULTILINE)) - - -def _parse_logfile(config, paths): - captured = {} - for regex_rules_by_file in config: - filename = \ - '{0}/{1}'.format(paths, regex_rules_by_file[GrepProp.FILENAME]) - for regex in regex_rules_by_file['grep']: - matches = grep_in_file(filename, regex) - if len(matches) > 1: - temp_dict = defaultdict(list) - for item in [match.groupdict() for match in matches]: - for key in item: - temp_dict[key].append(item[key]) - captured.update(temp_dict) - elif len(matches) == 1: - captured.update(matches[0].groupdict()) - else: - logger.error("Nothing is matched from {0}".format(filename)) - return captured - - -# TODO: Hardcord in Danube, it will be removed in the future. -def parse_sysinfo(config, result_dir): - sysinfo = _parse_logfile(config, result_dir) - if "cpu_idle" in sysinfo: - sysinfo['cpu_usage'] = \ - calculator.calculate_cpu_usage(sysinfo['cpu_idle']) - sysinfo.pop('cpu_idle') - return sysinfo - - -# TODO: Hardcord in Danube, it will be removed in the future. -def parse_test_result(benchmark, config, result_dir): - test_result = _parse_logfile(config, result_dir) - if benchmark == 'dpi': - return calculator.dpi_calculator(test_result) - if benchmark == 'dhrystone' or benchmark == 'whetstone': - return {'total_cpus': test_result['total_cpus'], - 'single_cpu': {'num': test_result['single_cpu'], - 'score': test_result['score'][0]}, - 'multi_cpus': {'num': test_result['multi_cpus'], - 'score': test_result['score'][1]}} - return test_result - - -# TODO: Hardcord in Danube, it will be removed in the future. -def parse_benchmark_result(result_dir): - regex_config = yaml.safe_load(file(REGEX_FILE)) - benchmark = result_dir.split('/')[-1] - result = {'name': benchmark} - - test_result = \ - parse_test_result(benchmark, regex_config[benchmark], result_dir) - result['results'] = test_result.copy() - - sysinfo = parse_sysinfo(regex_config['sysinfo'], result_dir) - result['sysinfo'] = sysinfo.copy() - - return result diff --git a/qtip/collector/parser/regex.yaml b/qtip/collector/parser/regex.yaml deleted file mode 100644 index e1512855..00000000 --- a/qtip/collector/parser/regex.yaml +++ /dev/null @@ -1,85 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -dhrystone: - - filename: dhrystone - grep: - - '^(?P<total_cpus>\d+)\sCPUs in system; running 1 parallel copy of tests$' - - '.+\srunning (?P<single_cpu>\d+) parallel copy of tests$' - - '.+\srunning (?P<multi_cpus>\d+) parallel copies of tests$' - - '^System Benchmarks Index Score \(Partial Only\)\s+(?P<score>\d+\.\d)$' -whetstone: - - filename: whetstone - grep: - - '^(?P<total_cpus>\d+)\sCPUs in system; running 1 parallel copy of tests$' - - '.+\srunning (?P<single_cpu>\d+) parallel copy of tests$' - - '.+\srunning (?P<multi_cpus>\d+) parallel copies of tests$' - - '^System Benchmarks Index Score \(Partial Only\)\s+(?P<score>\d+\.\d)$' -dpi: - - filename: dpi_dump.txt - grep: - - |- - ^\s+nDPI throughput:.+?(?P<pps>\d+.\d+)\s.+\spps.+ - ?(?P<bps>\d+.\d+)\s.+\/sec -ramspeed: - - filename: Intmem - grep: - - '^INTEGER\s+BatchRun\s+Copy:\s+?(?P<integer_copy>\d+\.\d+)\sMB/s$' - - '^INTEGER\s+BatchRun\s+Scale:\s+?(?P<integer_scale>\d+\.\d+)\sMB/s$' - - '^INTEGER\s+BatchRun\s+Add:\s+?(?P<integer_add>\d+\.\d+)\sMB/s$' - - '^INTEGER\s+BatchRun\s+Triad:\s+?(?P<integer_triad>\d+\.\d+)\sMB/s$' - - '^INTEGER\s+BatchRun\s+AVERAGE:\s+?(?P<integer_average>\d+\.\d+)\sMB/s$' - - filename: Floatmem - grep: - - '^FL-POINT\s+BatchRun\s+Copy:\s+?(?P<float_copy>\d+\.\d+)\sMB/s$' - - '^FL-POINT\s+BatchRun\s+Scale:\s+?(?P<float_scale>\d+\.\d+)\sMB/s$' - - '^FL-POINT\s+BatchRun\s+Add:\s+?(?P<float_add>\d+\.\d+)\sMB/s$' - - '^FL-POINT\s+BatchRun\s+Triad:\s+?(?P<float_triad>\d+\.\d+)\sMB/s$' - - '^FL-POINT\s+BatchRun\s+AVERAGE:\s+?(?P<float_average>\d+\.\d+)\sMB/s$' -ssl: - - filename: RSA_dump - grep: - - |- - ^rsa\s+512\sbits\s.+\s+ - ?(?P<rsa_sign_512>\d+\.\d)\s+ - ?(?P<rsa_verify_512>\d+\.\d)$ - - |- - ^rsa\s+1024\sbits\s.+\s+ - ?(?P<rsa_sign_1024>\d+\.\d)\s+ - ?(?P<rsa_verify_1024>\d+\.\d)$ - - |- - ^rsa\s+2048\sbits\s.+\s+ - ?(?P<rsa_sign_2048>\d+\.\d)\s+ - ?(?P<rsa_verify_2048>\d+\.\d)$ - - |- - ^rsa\s+4096\sbits\s.+\s+ - ?(?P<rsa_sign_4096>\d+\.\d)\s+ - ?(?P<rsa_verify_4096>\d+\.\d)$ - - filename: AES-128-CBC_dump - grep: - - |- - ^aes-128-cbc\s+ - ?(?P<aes_128_cbc_16_bytes>\d+\.\w+)\s+ - ?(?P<aes_128_cbc_64_bytes>\d+\.\w+)\s+ - ?(?P<aes_128_cbc_256_bytes>\d+\.\w+)\s+ - ?(?P<aes_128_cbc_1024_bytes>\d+\.\w+)\s+ - ?(?P<aes_128_cbc_8192_bytes>\d+\.\w+)$ -sysinfo: - - filename: top.log - grep: - - 'Cpu\(s\):.+?(?P<cpu_idle>\d+\.\d)\sid' - - filename: inxi.log - grep: - - '.+\s+Host:\s+(?P<hostname>.+)\sKernel' - - '.+\sMemory:\s+(?P<memory>.+MB)\s' - - '^CPU\(s\):\s+(?P<cpu>.+)' - - '.+\sDistro:\s+(?P<os>.+)' - - '.+\sKernel:\s+(?P<kernel>.+)\sConsole' - - '.+\s+HDD Total Size:\s+(?P<disk>.+)\s' - - '.+\sproduct:\s+(?P<product>.+)\sv'
\ No newline at end of file diff --git a/qtip/driver/__init__.py b/qtip/driver/__init__.py deleted file mode 100644 index e69de29b..00000000 --- a/qtip/driver/__init__.py +++ /dev/null diff --git a/qtip/driver/ansible_api.py b/qtip/driver/ansible_api.py deleted file mode 100644 index 5c5baffc..00000000 --- a/qtip/driver/ansible_api.py +++ /dev/null @@ -1,58 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corp 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 collections import namedtuple - -from ansible.executor.playbook_executor import PlaybookExecutor -from ansible.inventory import Inventory -from ansible.parsing.dataloader import DataLoader -from ansible.vars import VariableManager - - -class AnsibleApi(object): - - def __init__(self): - self.variable_manager = VariableManager() - self.loader = DataLoader() - self.passwords = {} - self.playbook_executor = None - - def execute_playbook(self, playbook_path, hosts_file=None, - key_file=None, extra_vars=None): - inventory = Inventory(loader=self.loader, - variable_manager=self.variable_manager, - host_list=hosts_file) - Options = namedtuple('Options', - ['listtags', 'listtasks', 'listhosts', 'syntax', - 'connection', 'module_path', 'forks', 'remote_user', - 'private_key_file', 'ssh_common_args', 'ssh_extra_args', - 'sftp_extra_args', 'scp_extra_args', 'become', - 'become_method', 'become_user', 'verbosity', 'check']) - options = Options(listtags=False, listtasks=False, listhosts=False, - syntax=False, connection='ssh', module_path=None, - forks=100, remote_user='root', private_key_file=key_file, - ssh_common_args=None, ssh_extra_args=None, sftp_extra_args=None, - scp_extra_args=None, become=None, become_method=None, - become_user='root', verbosity=None, check=False) - self.variable_manager.extra_vars = extra_vars - - self.playbook_executor = PlaybookExecutor(playbooks=[playbook_path], - inventory=inventory, - variable_manager=self.variable_manager, - loader=self.loader, - options=options, - passwords=self.passwords) - return self.playbook_executor.run() - - def get_detail_playbook_stats(self): - if self.playbook_executor: - stats = self.playbook_executor._tqm._stats - return map(lambda x: (x, stats.summarize(x)), stats.processed.keys()) - else: - return None diff --git a/qtip/driver/ansible_driver.py b/qtip/driver/ansible_driver.py deleted file mode 100644 index 34ef46ed..00000000 --- a/qtip/driver/ansible_driver.py +++ /dev/null @@ -1,102 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corp 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 collections import defaultdict -from os import path -from operator import add - -from qtip.driver.ansible_api import AnsibleApi -from qtip.util.env import AnsibleEnvSetup -from qtip.util.logger import QtipLogger - -logger = QtipLogger('ansible_driver').get -PLAYBOOK_DIR = path.join(path.dirname(__file__), 'playbook') - - -class AnsibleDriver(object): - """driver for running performance tests with Ansible""" - - def __init__(self, config={}): - self.config = config - self.env = AnsibleEnvSetup() - self.env_setup_flag = False - - @staticmethod - def merge_two_dicts(x, y): - ''' - It is from http://stackoverflow.com/questions/38987/ - how-can-i-merge-two-python-dictionaries-in-a-single-expression - ''' - z = x.copy() - z.update(y) - return z - - def pre_run(self): - if self.env_setup_flag: - logger.info("Already setup environment......") - else: - logger.info("Starting to setup test environment...") - self.env.setup(self.config) - self.env_setup_flag = True - logger.info("Setup test enviroment, Done!") - - def cleanup(self): - self.env.cleanup() - - def run(self, metric_list, **kwargs): - if 'args' in self.config: - extra_vars = self.merge_two_dicts(kwargs, self.config['args']) - else: - extra_vars = kwargs - logger.info("extra_var: {0}".format(extra_vars)) - - tool_to_metrics = defaultdict(list) - for metric in metric_list: - if metric == 'dhrystone' or metric == 'whetstone': - tool_to_metrics['unixbench'].append(metric) - extra_vars[metric] = True - elif metric == 'ssl': - tool_to_metrics['openssl'].append(metric) - else: - tool_to_metrics[metric].append(metric) - - result_list = map(lambda tool: self._run_metric(tool, - tool_to_metrics[tool], - extra_vars), - tool_to_metrics) - return False not in result_list - - def _run_metric(self, tool, metrics, extra_vars): - logger.info('Using {0} to measure metrics {1}'.format(tool, metrics)) - - setup_pbook = "{0}/{1}/setup.yaml".format(PLAYBOOK_DIR, tool) - run_pbook = "{0}/{1}/run.yaml".format(PLAYBOOK_DIR, tool) - clean_pbook = "{0}/{1}/clean.yaml".format(PLAYBOOK_DIR, tool) - - if self._run_ansible_playbook(setup_pbook, extra_vars): - self._run_ansible_playbook(run_pbook, extra_vars) - else: - logger.error("{0} is failed.".format(setup_pbook)) - - return self._run_ansible_playbook(clean_pbook, extra_vars) - - def _run_ansible_playbook(self, pbook, extra_vars): - ansible_api = AnsibleApi() - logger.debug("Run {0} with extra_vars: {1}".format(pbook, extra_vars)) - ansible_api.execute_playbook(pbook, self.env.hostfile, - self.env.keypair['private'], extra_vars) - playbook_stats = ansible_api.get_detail_playbook_stats() - logger.debug("playbook_stat: {0}".format(playbook_stats)) - return self.is_pass(playbook_stats) - - @staticmethod - def is_pass(stats): - return 0 == reduce(add, - map(lambda x: x[1]['failures'] + x[1]['unreachable'], - stats)) diff --git a/qtip/driver/base.py b/qtip/driver/base.py deleted file mode 100644 index 6f5cab3c..00000000 --- a/qtip/driver/base.py +++ /dev/null @@ -1,20 +0,0 @@ -############################################################################## -# Copyright (c) 2016 ZTE Corp 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 BaseDriver(object): - """performance testing tool driver""" - def pre_run(self): - pass - - def run(self): - pass - - def post_run(self): - pass diff --git a/qtip/driver/playbook/dpi/clean.yaml b/qtip/driver/playbook/dpi/clean.yaml deleted file mode 100644 index 0b9f9291..00000000 --- a/qtip/driver/playbook/dpi/clean.yaml +++ /dev/null @@ -1,23 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Cleaning tempD - file: - path: '{{ ansible_env.HOME }}/tempD' - state: absent - - - name: Cleaning qtip_result - file: - path: '{{ ansible_env.HOME }}/qtip_result' - state: absent diff --git a/qtip/driver/playbook/dpi/dpi_average.sh b/qtip/driver/playbook/dpi/dpi_average.sh deleted file mode 100644 index 6f038053..00000000 --- a/qtip/driver/playbook/dpi/dpi_average.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -COUNTER=0 -WDIR=$PWD -while [ $COUNTER -lt 10 ]; do - echo $WDIR - $( ./ndpiReader -i test.pcap >> $WDIR/dpi_dump.txt ) - let COUNTER=COUNTER+1 - echo "Run number: $COUNTER" -done
\ No newline at end of file diff --git a/qtip/driver/playbook/dpi/run.yaml b/qtip/driver/playbook/dpi/run.yaml deleted file mode 100644 index f4c8c457..00000000 --- a/qtip/driver/playbook/dpi/run.yaml +++ /dev/null @@ -1,42 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Make some directories needed - file: - path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/dpi/' - state: directory - - - include: ../inxi.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/dpi/' - - - include: ../top.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/dpi/' - - - name: Run nDPI benchmark - shell: ./dpi_average.sh - args: - chdir: '{{ ansible_env.HOME }}/tempD/nDPI/example/' - - - name: Copying result and system info to qtip result directory - command: cp $HOME/tempD/nDPI/example/dpi_dump.txt ./ - args: - chdir: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/dpi/' - - - name: Fetch result files to local manchine - synchronize: - mode: pull - src: '{{ ansible_env.HOME }}/qtip_result/' - dest: '{{ result_dir }}/' diff --git a/qtip/driver/playbook/dpi/setup.yaml b/qtip/driver/playbook/dpi/setup.yaml deleted file mode 100644 index 76e62e6d..00000000 --- a/qtip/driver/playbook/dpi/setup.yaml +++ /dev/null @@ -1,93 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -- hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: Making Dpi directory - file: - path: '{{ result_dir }}/' - state: directory - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Cleaning tempD directory - file: - path: '{{ ansible_env.HOME }}/tempD' - state: absent - - - name: Cleaning qtip_result directory - file: - path: '{{ ansible_env.HOME }}/qtip_result' - state: absent - - - include: ../prepare_env.yaml - - - name: Installing nDPI dependencies if CentOS - yum: - name: '{{ item }}' - state: present - when: ansible_os_family == "RedHat" - with_items: - - git - - gcc - - patch - - perl-Time-HiRes - - autofconf - - automake - - libpcap-devel libtool - - - name: Installing nDPI dependencies if Ubuntu - apt: - name: '{{ item }}' - state: present - when: ansible_os_family == "Debian" - with_items: - - git - - gcc - - patch - - autoconf - - automake - - libpcap-dev - - libtool - - - name: Making nDPI temporary directory - file: - path: '{{ ansible_env.HOME }}/tempD' - state: directory - - - name: Clone nDPI - git: - repo: https://github.com/ntop/nDPI.git - dest: '{{ ansible_env.HOME }}/tempD/nDPI' - - - name: Run autogen && configure Dpi && make Dpi - command: '{{ item }}' - with_items: - - ./autogen.sh - - ./configure - - make - args: - chdir: '{{ ansible_env.HOME }}/tempD/nDPI/' - - - name: Fetching Test_pcap file - get_url: - url: http://build.opnfv.org/artifacts.opnfv.org/qtip/utilities/test.pcap - dest: '{{ ansible_env.HOME }}/tempD/nDPI/example/test.pcap' - - - name: Fetch Averaging script - copy: - src: ./dpi_average.sh - dest: '{{ ansible_env.HOME }}/tempD/nDPI/example' - mode: 777
\ No newline at end of file diff --git a/qtip/driver/playbook/inxi.yaml b/qtip/driver/playbook/inxi.yaml deleted file mode 100644 index 2a4d9b3f..00000000 --- a/qtip/driver/playbook/inxi.yaml +++ /dev/null @@ -1,25 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -- name: Install Inxi when CentOS - yum: - name: inxi - state: present - when: ansible_os_family == "RedHat" - -- name: Install Inxi when Ubuntu - apt: - name: inxi - state: present - update_cache: yes - when: ansible_os_family == "Debian" - -- name: Run inxi - shell: inxi -b -c0 -n > inxi.log - args: - chdir: '{{ dest_path }}' diff --git a/qtip/driver/playbook/openssl/clean.yaml b/qtip/driver/playbook/openssl/clean.yaml deleted file mode 100644 index 0139ba54..00000000 --- a/qtip/driver/playbook/openssl/clean.yaml +++ /dev/null @@ -1,23 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Cleaning Open_SSL - file: - path: '{{ ansible_env.HOME }}/Open_SSL' - state: absent - - - name: Cleaning qtip_result - file: - path: '{{ ansible_env.HOME }}/qtip_result' - state: absent diff --git a/qtip/driver/playbook/openssl/run.yaml b/qtip/driver/playbook/openssl/run.yaml deleted file mode 100644 index db923fed..00000000 --- a/qtip/driver/playbook/openssl/run.yaml +++ /dev/null @@ -1,45 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Make some directories needed - file: - path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/ssl/' - state: directory - - - include: ../inxi.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/ssl/' - - - include: ../top.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/ssl/' - - - name: Benchmarking RSA signatures and AES-128-cbc cipher encryption throughput - shell: '{{ item }}' - with_items: - - ./openssl speed rsa >> RSA_dump - - ./openssl speed -evp aes-128-cbc >> AES-128-CBC_dump - args: - chdir: '{{ ansible_env.HOME }}/Open_SSL/openssl-1.0.2f/apps' - - - name: Copying result to qtip result directory - shell: cp ~/Open_SSL/openssl-1.0.2f/apps/*_dump ./ - args: - chdir: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/ssl/' - - - name: Fetch result files to local manchine - synchronize: - mode: pull - src: '{{ ansible_env.HOME }}/qtip_result/' - dest: '{{ result_dir }}/' diff --git a/qtip/driver/playbook/openssl/setup.yaml b/qtip/driver/playbook/openssl/setup.yaml deleted file mode 100644 index 3a6f385a..00000000 --- a/qtip/driver/playbook/openssl/setup.yaml +++ /dev/null @@ -1,87 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -- hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: Making ssl directory - file: - path: '{{ result_dir }}/' - state: directory - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Cleaning Open_SSL directory - file: - path: '{{ ansible_env.HOME }}/Open_SSL' - state: absent - - - name: Cleaning qtip_result directory - file: - path: '{{ ansible_env.HOME }}/qtip_result' - state: absent - - - include: ../prepare_env.yaml - - - name: Installing UnixBench dependencies if CentOS - yum: - name: '{{ item }}' - state: present - when: ansible_os_family == "RedHat" - with_items: - - git - - gcc - - patch - - perl-Time-HiRes - - wget - - autofconf - - automake - - libpcap-devel - - libtool - - - name: Installing UnixBench dependencies if Ubuntu - apt: - name: '{{ item }}' - state: present - when: ansible_os_family == "Debian" - with_items: - - git - - gcc - - patch - - perl - - wget - - autoconf - - automake - - libpcap-dev - - libtool - - - name: Make Open_SSL directory - file: - path: '{{ ansible_env.HOME }}/Open_SSL' - state: directory - - - name: Untar OpenSSL - unarchive: - src: http://artifacts.opnfv.org/qtip/utilities/openssl-1.0.2f.tar.gz - dest: '{{ ansible_env.HOME }}/Open_SSL/' - remote_src: True - - - name: Configure && Make && Install OpenSSL - shell: "{{ item }}" - with_items: - - ./config - - make - - make install - args: - chdir: '{{ ansible_env.HOME }}/Open_SSL/openssl-1.0.2f'
\ No newline at end of file diff --git a/qtip/driver/playbook/prepare_env.yaml b/qtip/driver/playbook/prepare_env.yaml deleted file mode 100644 index 1ec71520..00000000 --- a/qtip/driver/playbook/prepare_env.yaml +++ /dev/null @@ -1,54 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## -- name: Epel Release install when CentOS - yum: - name: epel-release - state: present - when: ansible_os_family == "RedHat" - -- name: Software Properties Common - apt: - name: software-properties-common - state: present - when: ansible_os_family == "Debian" - -- name: Adding ubuntu backport main repo - apt_repository: - repo: deb http://archive.ubuntu.com/ubuntu/ {{ansible_distribution_release}}-backports main restricted universe multiverse - state: present - when: ansible_os_family == "Debian" - -- name: Adding ubuntu main repo - apt_repository: - repo: deb http://archive.ubuntu.com/ubuntu/ {{ansible_distribution_release}} main restricted universe multiverse - when: ansible_os_family == "Debian" - -- name: Install ansible copy dependencies if remote host has selinux enabled - yum: - name: libselinux-python - state: present - when: ansible_os_family == "RedHat" - -- name: Install ansiblle copy dependencies if remote host has selinux enaled - apt: - name: python-selinux - state: present - when: ansible_os_family == "Debian" - -- name: Install rsync when CentOS - yum: - name: rsync - state: present - when: ansible_os_family == "RedHat" - -- name: Install rsync when Ubuntu - apt: - name: rsync - state: present - when: ansible_os_family == "Debian" diff --git a/qtip/driver/playbook/ramspeed/clean.yaml b/qtip/driver/playbook/ramspeed/clean.yaml deleted file mode 100644 index f0188159..00000000 --- a/qtip/driver/playbook/ramspeed/clean.yaml +++ /dev/null @@ -1,23 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Cleaning ramspeed - file: - path: '{{ ansible_env.HOME }}/ramspeed' - state: absent - - - name: Cleaning qtip_result - file: - path: '{{ ansible_env.HOME }}/qtip_result' - state: absent diff --git a/qtip/driver/playbook/ramspeed/run.yaml b/qtip/driver/playbook/ramspeed/run.yaml deleted file mode 100644 index 496cd5db..00000000 --- a/qtip/driver/playbook/ramspeed/run.yaml +++ /dev/null @@ -1,40 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Make some directories needed - file: - path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/ramspeed/' - state: directory - - - include: ../inxi.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/ramspeed/' - - - include: ../top.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/ramspeed/' - - - name: Benchmarking IntMem Bandwidth and FloatMem Bandwidth - shell: '{{ item }}' - with_items: - - ~/ramspeed/ramsmp-3.5.0/ramsmp -b 3 -l 5 -p 1 >> Intmem - - ~/ramspeed/ramsmp-3.5.0/ramsmp -b 6 -l 5 -p 1 >> Floatmem - args: - chdir: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/ramspeed/' - - - name: Fetch result files to local manchine - synchronize: - mode: pull - src: '{{ ansible_env.HOME }}/qtip_result/' - dest: '{{ result_dir }}/' diff --git a/qtip/driver/playbook/ramspeed/setup.yaml b/qtip/driver/playbook/ramspeed/setup.yaml deleted file mode 100644 index 842bbda2..00000000 --- a/qtip/driver/playbook/ramspeed/setup.yaml +++ /dev/null @@ -1,70 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation 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 -############################################################################## - -- hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: Making ramspeed directory - file: - path: '{{ result_dir }}/' - state: directory - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Cleaning ramspeed directory - file: - path: '{{ ansible_env.HOME }}/ramspeed' - state: absent - - - name: Cleaning qtip_result directory - file: - path: '{{ ansible_env.HOME }}/qtip_result' - state: absent - - - include: ../prepare_env.yaml - - - name: Installing RAM_Speed dependencies if CentOS - yum: - name: '{{ item }}' - state: present - when: ansible_os_family == "RedHat" - with_items: - - gcc - - wget - - - name: Installing RAM_Speed dependencies if Ubuntu - apt: - name: '{{ item }}' - state: present - when: ansible_os_family == "Debian" - with_items: - - gcc - - wget - - - name: Making ramspeed temporary directory - file: - path: '{{ ansible_env.HOME }}/ramspeed' - state: directory - - - name: Fetch and untar ramspeed.tar.gz - unarchive: - # TODO: Need to upload this file to http://artifacts.opnfv.org/qtip/utilities - src: https://docs.google.com/uc?id=0B92Bp5LZTM7gRFctalZLMktTNDQ - dest: '{{ ansible_env.HOME }}/ramspeed/' - remote_src: True - - - name: Build ramsmp - shell: ./build.sh - args: - chdir: '{{ ansible_env.HOME }}/ramspeed/ramsmp-3.5.0' diff --git a/qtip/driver/playbook/unixbench/clean.yaml b/qtip/driver/playbook/unixbench/clean.yaml deleted file mode 100644 index a7cb2540..00000000 --- a/qtip/driver/playbook/unixbench/clean.yaml +++ /dev/null @@ -1,25 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. -# zhihui.wu1@zte.com.cn -# 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 -############################################################################## - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Cleaning tempT - file: - path: '{{ ansible_env.HOME }}/tempT' - state: absent - - - name: Cleaning qtip_result - file: - path: '{{ ansible_env.HOME }}/qtip_result' - state: absent - - diff --git a/qtip/driver/playbook/unixbench/dhrystone.yaml b/qtip/driver/playbook/unixbench/dhrystone.yaml deleted file mode 100644 index a0ee89a3..00000000 --- a/qtip/driver/playbook/unixbench/dhrystone.yaml +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. -# zhihui.wu1@zte.com.cn -# 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 -############################################################################## - -- name: Make dhrystone directories - file: - path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/dhrystone/' - state: directory - -- include: ../inxi.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/dhrystone/' - -- include: ../top.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/dhrystone/' - -- name: Run dhrystone - shell: ./Run -v dhrystone - args: - chdir: '{{ ansible_env.HOME }}/tempT/UnixBench/' - -- name: Copying result to qtip result directory - shell: '{{ item }}' - with_items: - - mv ~/tempT/UnixBench/results/*.log ./ - - mv ~/tempT/UnixBench/results/*.html ./ - - mv ~/tempT/UnixBench/results/* ./dhrystone - args: - chdir: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/dhrystone/' - -- name: Fetch dhrystone result files to local manchine - synchronize: - mode: pull - src: '{{ ansible_env.HOME }}/qtip_result/' - dest: '{{ result_dir }}/' diff --git a/qtip/driver/playbook/unixbench/run.yaml b/qtip/driver/playbook/unixbench/run.yaml deleted file mode 100644 index fbe4d4ad..00000000 --- a/qtip/driver/playbook/unixbench/run.yaml +++ /dev/null @@ -1,23 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. -# zhihui.wu1@zte.com.cn -# 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 -############################################################################## - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - set_fact: - is_dhrystone: "{{ dhrystone | default(False) }}" - is_whetstone: "{{ whetstone | default(False) }}" - - - include: ./dhrystone.yaml - when: "{{ is_dhrystone }}" - - - include: ./whetstone.yaml - when: "{{ is_whetstone }}"
\ No newline at end of file diff --git a/qtip/driver/playbook/unixbench/setup.yaml b/qtip/driver/playbook/unixbench/setup.yaml deleted file mode 100644 index 4dcdd2c4..00000000 --- a/qtip/driver/playbook/unixbench/setup.yaml +++ /dev/null @@ -1,65 +0,0 @@ -############################################################################# -# Copyright (c) 2017 ZTE Corporation and others. -# zhihui.wu1@zte.com.cn -# 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 -############################################################################# - -- hosts: localhost - connection: local - gather_facts: no - - tasks: - - name: Making dhrystone directory - file: - path: '{{ result_dir }}/' - state: directory - -- hosts: hosts - become: yes - remote_user: root - - tasks: - - name: Cleaning tempT directory - file: - path: '{{ ansible_env.HOME }}/tempT' - state: absent - - - name: Cleaning qtip_result directory - file: - path: '{{ ansible_env.HOME }}/qtip_result' - state: absent - - - include: ../prepare_env.yaml - - - name: Installing UnixBench dependencies if CentOS - yum: - name: '{{ item }}' - state: present - when: ansible_os_family == "RedHat" - with_items: - - git - - gcc - - patch - - perl-Time-HiRes - - - name: Installing UnixBench dependencies if Ubuntu - apt: - name: '{{ item }}' - state: present - when: ansible_os_family == "Debian" - with_items: - - git - - gcc - - patch - - perl - - - name: Clone UnixBench - git: - repo: https://github.com/kdlucas/byte-unixbench.git - dest: '{{ ansible_env.HOME }}/tempT/' - - - name: Make UnixBench1 - shell: make --directory $HOME/tempT/UnixBench/
\ No newline at end of file diff --git a/qtip/driver/playbook/unixbench/whetstone.yaml b/qtip/driver/playbook/unixbench/whetstone.yaml deleted file mode 100644 index c753779f..00000000 --- a/qtip/driver/playbook/unixbench/whetstone.yaml +++ /dev/null @@ -1,41 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE Corporation and others. -# zhihui.wu1@zte.com.cn -# 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 -############################################################################## - -- name: Make whetstone directories - file: - path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/whetstone/' - state: directory - -- include: ../inxi.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/whetstone/' - -- include: ../top.yaml - vars: - dest_path: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/whetstone/' - -- name: Run whetstone - shell: ./Run -v whetstone - args: - chdir: '{{ ansible_env.HOME }}/tempT/UnixBench/' - -- name: Copying result to qtip result directory - shell: '{{ item }}' - with_items: - - mv ~/tempT/UnixBench/results/*.log ./ - - mv ~/tempT/UnixBench/results/*.html ./ - - mv ~/tempT/UnixBench/results/* ./whetstone - args: - chdir: '{{ ansible_env.HOME }}/qtip_result/{{ ansible_hostname }}/whetstone/' - -- name: Fetch whetstone result files to local manchine - synchronize: - mode: pull - src: '{{ ansible_env.HOME }}/qtip_result/' - dest: '{{ result_dir }}/' diff --git a/qtip/runner/runner.py b/qtip/runner/runner.py deleted file mode 100644 index 9b09f0f8..00000000 --- a/qtip/runner/runner.py +++ /dev/null @@ -1,107 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE corp. 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 argparse -import json -import os -from os import path -import sys -import time - -from qtip.collector.parser import grep -from qtip.driver.ansible_driver import AnsibleDriver -from qtip.util.logger import QtipLogger - -logger = QtipLogger('runner').get - -ALL_BENCHMARKS = ['dpi', 'ramspeed', 'ssl', 'dhrystone', 'whetstone'] - - -def parse_args(args): - parser = argparse.ArgumentParser() - parser.add_argument('-d', '--dest', required=True, - help='the destination where results will be stored.') - parser.add_argument('-b', '--benchmark', required=True, action='append', - help='the benchmark you want to execute.') - return parser.parse_args(args) - - -def run_benchmark(result_dir, benchmarks): - if not path.isdir(result_dir): - os.makedirs(result_dir) - driver = AnsibleDriver({'args': {'result_dir': result_dir}}) - driver.pre_run() - result = driver.run(benchmarks) - driver.cleanup() - return result - - -def generate_report(result_dir, start_time, stop_time): - output = { - "plan_name": "compute_qpi", - "start_time": start_time, - "stop_time": stop_time, - "sut": [] - } - output.update(parse_result(result_dir)) - output.update({'stop_time': stop_time}) - with open('{0}/result.json'.format(result_dir), 'w+') as f: - json.dump(output, f, indent=4, sort_keys=True) - - -def parse_result(result_dir): - sut_template = {'sut': []} - nodes_list = os.listdir(result_dir) - for node in nodes_list: - node_output_template = { - 'name': node, - 'type': 'baremetal', - 'qpis': [] - } - qpi_result = {'name': 'compute_qpi', 'benchmarks': []} - for benchmark in os.listdir('{0}/{1}'.format(result_dir, node)): - benchmark_result = \ - grep.parse_benchmark_result( - '{0}/{1}/{2}'.format(result_dir, node, benchmark)) - qpi_result['benchmarks'].append(benchmark_result) - node_output_template['qpis'].append(qpi_result) - sut_template['sut'].append(node_output_template) - return sut_template - - -def main(args=sys.argv[1:]): - args = parse_args(args) - - if not path.isdir(str(args.dest)): - logger.error("The destination {0} you give doesn't exist. " - "Please check!".format(args.dest)) - sys.exit(1) - - if args.benchmark == ['all']: - args.benchmark = ALL_BENCHMARKS - elif len(set(args.benchmark).difference(ALL_BENCHMARKS)) != 0: - logger.error("Please check benchmarks name. The supported benchmarks are" - "{0}".format(ALL_BENCHMARKS)) - logger.info("Start to run benchmark test: {0}.".format(args.benchmark)) - - start_time = time.strftime("%Y-%m-%d-%H-%M") - logger.info("start_time: {0}".format(start_time)) - if not args.dest.endswith('/'): - args.dest += '/' - result_dir = args.dest + 'qtip-' + start_time - ansible_result = run_benchmark(result_dir, args.benchmark) - stop_time = time.strftime("%Y-%m-%d-%H-%M") - logger.info("stop_time: {0}".format(stop_time)) - if not ansible_result: - logger.error("Bechmarks run failed. Cann't generate any report.") - sys.exit(1) - generate_report(result_dir, start_time, stop_time) - - -if __name__ == "__main__": - main() diff --git a/qtip/scripts/cleanup_creds.sh b/qtip/scripts/cleanup_creds.sh deleted file mode 100755 index ad66ba95..00000000 --- a/qtip/scripts/cleanup_creds.sh +++ /dev/null @@ -1,20 +0,0 @@ -#! /bin/bash -############################################################################## -# Copyright (c) 2017 ZTE corp. 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 -############################################################################## - -DEST_IP=$1 -PRIVATE_KEY=$2 -PUBLIC_KEY=$3 -sshoptions="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" - -case "$INSTALLER_TYPE" in - fuel) - ssh $sshoptions -i $PRIVATE_KEY root@$DEST_IP "sed -i '/$PUBLIC_KEY/d' /root/.ssh/authorized_keys" - ;; -esac diff --git a/qtip/scripts/generate_host_file.sh b/qtip/scripts/generate_host_file.sh deleted file mode 100755 index ecc4d55f..00000000 --- a/qtip/scripts/generate_host_file.sh +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/bash -############################################################################## -#Copyright (c) 2016 Ericsson AB, ZTE and others. -#jose.lausuch@ericsson.com -#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 -############################################################################## - - -usage(){ - echo "usage: $0 -t <installer_type> -i <installer_ipaddr> -d <dest_hostfile>" >&2 -} - -info() { - logger -s -t "generate_host_file.info" "$*" -} - -error() { - logger -s -t "generate_host_file.error" "$*" - exit 1 -} - -verify_connectivity(){ - local ip=$1 - info "Verifying connectivity to $ip..." - for i in $(seq 0 10); do - if ping -c 1 -W 1 $ip > /dev/null; then - info "$ip is reachable!" - return 0 - fi - sleep 1 - done - error "Can not talk to $ip." -} - -:${DEPLOY_TYPE:=''} - -#Getoptions -while getopts ":t:i:d:" optchar; do - case "${optchar}" in - t) installer_type=${OPTARG} ;; - i) installer_ipaddr=${OPTARG} ;; - d) dest_hostfile=${OPTARG} ;; - *) echo "Non-option argument: '-${OPTARG}'" >&2 - usage - exit 2 - ;; - esac -done - -#set vars from env if not provided by user as options -installer_type=${installer_type:-$INSTALLER_TYPE} -installer_ipaddr=${installer_ipaddr:-$INSTALLER_IP} - -if [ -z $installer_type ] || [ -z $installer_ipaddr ]; then - usage - exit 2 -fi - -ssh_options="-oUserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" - -#Start fetching compute ip -if [ "$installer_type" == "fuel" ]; then - verify_connectivity $installer_ipaddr - - env=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ipaddr} \ - 'fuel env'|grep operational|head -1|awk '{print $1}') &> /dev/null - if [ -z $env ]; then - error "No operational environment detected in Fuel" - fi - env_id="${FUEL_ENV:-$env}" - - # Check if compute is alive (online='True') - IPS=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ipaddr} \ - "fuel node --env ${env_id} | grep compute | grep 'True\| 1' | awk -F\| '{print \$5}' " | \ - sed 's/ //g') &> /dev/null - - -elif [ "$installer_type" == "apex" ]; then - echo "not implement now" - exit 1 - -elif [ "$installer_type" == "compass" ]; then - # need test - verify_connectivity $installer_ipaddr - IPS=$(sshpass -p'root' ssh 2>/dev/null $ssh_options root@${installer_ipaddr} \ - 'mysql -ucompass -pcompass -Dcompass -e"select * from cluster;"' \ - | awk -F"," '{for(i=1;i<NF;i++)if($i~/\"host[4-5]\"/) {print $(i+1);}}' \ - | grep -oP "\d+.\d+.\d+.\d+") - -elif [ "$installer_type" == "joid" ]; then - echo "not implement now" - exit 1 - -elif [ "$installer_type" == "foreman" ]; then - echo "not implement now" - exit 1 - -else - error "Installer $installer is not supported by this script" -fi - -if [ -z "$IPS" ]; then - error "The compute node $IPS are not up. Please check that the POD is correctly deployed." -else - echo "-------- all compute node ips: --------" - rm $dest_hostfile - touch $dest_hostfile - echo "[hosts]" >> $dest_hostfile - echo "$IPS" >> $dest_hostfile - cat $dest_hostfile -fi - -exit 0 diff --git a/qtip/util/env.py b/qtip/util/env.py deleted file mode 100644 index 9299f8c0..00000000 --- a/qtip/util/env.py +++ /dev/null @@ -1,213 +0,0 @@ -############################################################################## -# Copyright (c) 2017 ZTE 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 collections import defaultdict -import os -from os import path -import re -import socket -import sys -import time - -import paramiko - -from qtip.util.logger import QtipLogger - -logger = QtipLogger('env').get - -SCRIPT_DIR = path.join(path.dirname(__file__), path.pardir, 'scripts') -KEYNAME = 'QtipKey' -PRIVATE_KEY = '{0}/qtip/{1}'.format(os.environ['HOME'], KEYNAME) -PUBLIC_KEY = PRIVATE_KEY + '.pub' -HOST_FILE = '{0}/qtip/hosts'.format(os.environ['HOME']) - - -def all_files_exist(*files): - if len(files) == 0: - return False - flag = True - for f_item in files: - flag &= path.isfile(f_item) - logger.info("Is {0} existed: {1}".format(f_item, flag)) - return flag - - -def clean_file(*files): - if len(files) == 0: - logger.info('Nothing to clean') - return False - - def clean(f): - try: - if all_files_exist(f): - os.remove(f) - logger.info("Removed: {0}".format(f)) - else: - logger.info("Not exists: {0}".format(f)) - return True - except OSError as error: - logger.error("Not able to Remove: {0}".format(f), error) - return False - - results = map(clean, files) - return len(results) == len(files) and False not in results - - -class AnsibleEnvSetup(object): - def __init__(self): - self.keypair = defaultdict(str) - self.hostfile = None - self.host_ip_list = [] - - def setup(self, config={}): - try: - if 'hostfile' in config: - self.check_hostfile(config['hostfile']) - else: - self.generate_default_hostfile() - self.fetch_host_ip_from_hostfile() - if 'keypair' in config: - self.check_keypair(config['keypair']) - else: - self.generate_default_keypair() - self.pass_keypair_to_remote() - self.check_hosts_ssh_connectivity() - except Exception as error: - logger.info(error) - sys.exit(1) - - def check_keypair(self, keypair): - self.keypair = defaultdict(str) - if all_files_exist(keypair, '{0}.pub'.format(keypair)): - self.keypair['private'] = keypair - self.keypair['public'] = '{0}.pub'.format(keypair) - else: - raise RuntimeError("The keypairs you in the configuration file" - " is invalid or not existed.") - - def generate_default_keypair(self): - if not all_files_exist(PRIVATE_KEY, PUBLIC_KEY): - logger.info("Generate default keypair {0} under " - "{1}".format(KEYNAME, os.environ['HOME'])) - cmd = '''ssh-keygen -t rsa -N "" -f {0} -q -b 2048 - -C qtip@insecure'''.format(PRIVATE_KEY) - os.system(cmd) - self.keypair['private'] = PRIVATE_KEY - self.keypair['public'] = PUBLIC_KEY - - def pass_keypair_to_remote(self): - results = map(lambda ip: self._pass_keypair(ip, self.keypair['private']), - self.host_ip_list) - - if not (len(results) == len(self.host_ip_list) and False not in results): - raise RuntimeError("Failed on passing keypair to remote.") - - @staticmethod - def _pass_keypair(ip, private_key): - try: - os.system('ssh-keyscan %s >> /root/.ssh/known_hosts' % ip) - time.sleep(2) - ssh_cmd = '%s/qtip_creds.sh %s %s' % (SCRIPT_DIR, ip, private_key) - os.system(ssh_cmd) - logger.info('Pass keypair to remote hosts {0} successfully'.format(ip)) - return True - except Exception as error: - logger.error(error) - return False - - def check_hostfile(self, hostfile): - if all_files_exist(hostfile): - self.hostfile = hostfile - else: - raise RuntimeError( - "The hostfile {0} is invalid or not existed.".format(hostfile)) - - def generate_default_hostfile(self): - try: - # check whether the file is already existed - self.check_hostfile(HOST_FILE) - except Exception: - logger.info("Generate default hostfile {0} under " - "{1}".format(HOST_FILE, os.environ['HOME'])) - self._generate_hostfile_via_installer() - - def _generate_hostfile_via_installer(self): - self.hostfile = None - - installer_type = str(os.environ['INSTALLER_TYPE'].lower()) - installer_ip = str(os.environ['INSTALLER_IP']) - - if installer_type not in ["fuel"]: - raise ValueError("{0} is not supported".format(installer_type)) - if not installer_ip: - raise ValueError( - "The value of environment variable INSTALLER_IP is empty.") - - cmd = "bash %s/generate_host_file.sh -t %s -i %s -d %s" % \ - (SCRIPT_DIR, installer_type, installer_ip, HOST_FILE) - os.system(cmd) - - self.hostfile = HOST_FILE - - def fetch_host_ip_from_hostfile(self): - self.host_ip_list = [] - logger.info('Fetch host ips from hostfile...') - with open(self.hostfile, 'r') as f: - self.host_ip_list = re.findall('\d+.\d+.\d+.\d+', f.read()) - if self.host_ip_list: - logger.info("The remote compute nodes: {0}".format(self.host_ip_list)) - else: - raise ValueError("The hostfile doesn't include host ip addresses.") - - def check_hosts_ssh_connectivity(self): - results = map(lambda ip: self._ssh_is_ok(ip, self.keypair['private']), - self.host_ip_list) - if not (len(results) == len(self.host_ip_list) and False not in results): - raise RuntimeError("Failed on checking hosts ssh connectivity.") - - @staticmethod - def _ssh_is_ok(ip, private_key, attempts=100): - logger.info('Check hosts {0} ssh connectivity...'.format(ip)) - ssh = paramiko.SSHClient() - ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) - ssh.connect(ip, key_filename=private_key) - - for attempt in range(attempts): - try: - stdin, stdout, stderr = ssh.exec_command('uname') - if not stderr.readlines(): - logger.info("{0}: SSH test successful.".format(ip)) - return True - except socket.error: - logger.debug("%s times ssh test......failed." % str(attempt + 1)) - if attempt == (attempts - 1): - return False - time.sleep(2) - return False - - def cleanup(self): - CI_DEBUG = os.getenv('CI_DEBUG') - - if CI_DEBUG is not None and CI_DEBUG.lower() == 'true': - logger.info("DEBUG Mode: please do cleanup by manual.") - else: - with open(self.keypair['public'], 'r') as f: - key = f.read().strip('\n').replace('/', '\/') - if key: - for ip in self.host_ip_list: - logger.info("Cleanup authorized_keys from {0}...".format(ip)) - cmd = '''bash {0}/cleanup_creds.sh {1} {2} "{3}"'''.format( - SCRIPT_DIR, ip, self.keypair['private'], key) - os.system(cmd) - else: - logger.error("Nothing in public key file.") - - logger.info("Cleanup hostfile and keypair.") - clean_file(self.hostfile, - self.keypair['private'], - self.keypair['public']) diff --git a/resources/QPI/compute.yaml b/resources/QPI/compute.yaml index bc4e8ab2..d27d769b 100644 --- a/resources/QPI/compute.yaml +++ b/resources/QPI/compute.yaml @@ -18,7 +18,6 @@ sections: # split based on different application formual: geometric mean workloads: - name: rsa_sign_512 - description: RSA signature 512 bits baseline: 14982.3 - name: rsa_verify_512 baseline: 180619.2 diff --git a/resources/ansible_roles/qtip/tasks/aggregate.yml b/resources/ansible_roles/qtip/tasks/aggregate.yml index 9ecdc700..904fc5d6 100644 --- a/resources/ansible_roles/qtip/tasks/aggregate.yml +++ b/resources/ansible_roles/qtip/tasks/aggregate.yml @@ -14,5 +14,10 @@ group: compute basepath: "{{ qtip_results }}/current" src: "compute.json" - dest: "{{ pod_name }}-qpi.json" + dest: "qpi.json" register: pod_result + +- name: generating HTML report + template: + src: "{{ qtip_resources }}/template/qpi.html.j2" + dest: "{{ qtip_results }}/current/index.html" diff --git a/resources/template/qpi.html.j2 b/resources/template/qpi.html.j2 new file mode 100644 index 00000000..3515676a --- /dev/null +++ b/resources/template/qpi.html.j2 @@ -0,0 +1,323 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<style> + + circle, + path { + cursor: pointer; + } + + circle { + fill: none; + pointer-events: all; + } + + #tooltip { + background-color: white; + padding: 3px 5px; + border: 1px solid black; + text-align: center; + } + + html { + font-family: sans-serif; + + } +</style> +<body> +<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js"></script> +<script> + + var margin = {top: 350, right: 480, bottom: 350, left: 480}, + radius = Math.min(margin.top, margin.right, margin.bottom, margin.left) - 10; + + function filter_min_arc_size_text(d, i) { + return (d.dx * d.depth * radius / 3) > 14 + }; + + var hue = d3.scale.category10(); + + var luminance = d3.scale.sqrt() + .domain([0, 1e6]) + .clamp(true) + .range([90, 20]); + + var svg = d3.select("body").append("svg") + .attr("width", margin.left + margin.right) + .attr("height", margin.top + margin.bottom) + .append("g") + .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); + + var partition = d3.layout.partition() + .sort(function (a, b) { + return d3.ascending(a.name, b.name); + }) + .size([2 * Math.PI, radius]); + + var arc = d3.svg.arc() + .startAngle(function (d) { + return d.x; + }) + .endAngle(function (d) { + return d.x + d.dx - .01 / (d.depth + .5); + }) + .innerRadius(function (d) { + return radius / 3 * d.depth; + }) + .outerRadius(function (d) { + return radius / 3 * (d.depth + 1) - 1; + }); + + //Tooltip description + var tooltip = d3.select("body") + .append("div") + .attr("id", "tooltip") + .style("position", "absolute") + .style("z-index", "10") + .style("opacity", 0); + + function format_number(x) { + return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + } + + + function format_description(d) { + var description = d.description; + return '<b>' + d.name + '</b></br>' + d.description + '<br> (' + format_number(d.value) + ')'; + } + + function computeTextRotation(d) { + var angle = (d.x + d.dx / 2) * 180 / Math.PI - 90 + + return angle; + } + + function mouseOverArc(d) { + d3.select(this).attr("stroke", "black") + + tooltip.html(format_description(d)); + return tooltip.transition() + .duration(50) + .style("opacity", 0.9); + } + + function mouseOutArc() { + d3.select(this).attr("stroke", "") + return tooltip.style("opacity", 0); + } + + function mouseMoveArc(d) { + return tooltip + .style("top", (d3.event.pageY - 10) + "px") + .style("left", (d3.event.pageX + 10) + "px"); + } + + var root_ = null; + d3.json("qpi.json", function (error, root) { + if (error) return console.warn(error); + // Compute the initial layout on the entire tree to sum sizes. + // Also compute the full name and fill color for each node, + // and stash the children so they can be restored as we descend. + + partition + .value(function (d) { + return d.score; + }) + .nodes(root) + .forEach(function (d) { + d._children = d.children; + d.sum = d.value; + d.key = key(d); + d.fill = fill(d); + }); + + // Now redefine the value function to use the previously-computed sum. + partition + .children(function (d, depth) { + return depth < 2 ? d._children : null; + }) + .value(function (d) { + return d.sum; + }); + + var center = svg.append("circle") + .attr("r", radius / 3) + .on("click", zoomOut); + + center.append("title") + .text("zoom out"); + + var partitioned_data = partition.nodes(root).slice(1) + + var path = svg.selectAll("path") + .data(partitioned_data) + .enter().append("path") + .attr("d", arc) + .style("fill", function (d) { + return d.fill; + }) + .each(function (d) { + this._current = updateArc(d); + }) + .on("click", zoomIn) + .on("mouseover", mouseOverArc) + .on("mousemove", mouseMoveArc) + .on("mouseout", mouseOutArc); + + + var texts = svg.selectAll("text") + .data(partitioned_data) + .enter().append("text") + .filter(filter_min_arc_size_text) + .attr("transform", function (d) { + return "rotate(" + computeTextRotation(d) + ")"; + }) + .attr("x", function (d) { + return radius / 3 * d.depth; + }) + .attr("dx", "6") // margin + .attr("dy", ".35em") // vertical-align + .text(function (d, i) { + return d.name + }) + + function zoomIn(p) { + if (p.depth > 1) p = p.parent; + if (!p.children) return; + zoom(p, p); + } + + function zoomOut(p) { + if (!p.parent) return; + zoom(p.parent, p); + } + + // Zoom to the specified new root. + function zoom(root, p) { + if (document.documentElement.__transition__) return; + + // Rescale outside angles to match the new layout. + var enterArc, + exitArc, + outsideAngle = d3.scale.linear().domain([0, 2 * Math.PI]); + + function insideArc(d) { + return p.key > d.key + ? {depth: d.depth - 1, x: 0, dx: 0} : p.key < d.key + ? {depth: d.depth - 1, x: 2 * Math.PI, dx: 0} + : {depth: 0, x: 0, dx: 2 * Math.PI}; + } + + function outsideArc(d) { + return {depth: d.depth + 1, x: outsideAngle(d.x), dx: outsideAngle(d.x + d.dx) - outsideAngle(d.x)}; + } + + center.datum(root); + + // When zooming in, arcs enter from the outside and exit to the inside. + // Entering outside arcs start from the old layout. + if (root === p) enterArc = outsideArc, exitArc = insideArc, outsideAngle.range([p.x, p.x + p.dx]); + + var new_data = partition.nodes(root).slice(1) + + path = path.data(new_data, function (d) { + return d.key; + }); + + // When zooming out, arcs enter from the inside and exit to the outside. + // Exiting outside arcs transition to the new layout. + if (root !== p) enterArc = insideArc, exitArc = outsideArc, outsideAngle.range([p.x, p.x + p.dx]); + + d3.transition().duration(d3.event.altKey ? 7500 : 750).each(function () { + path.exit().transition() + .style("fill-opacity", function (d) { + return d.depth === 1 + (root === p) ? 1 : 0; + }) + .attrTween("d", function (d) { + return arcTween.call(this, exitArc(d)); + }) + .remove(); + + path.enter().append("path") + .style("fill-opacity", function (d) { + return d.depth === 2 - (root === p) ? 1 : 0; + }) + .style("fill", function (d) { + return d.fill; + }) + .on("click", zoomIn) + .on("mouseover", mouseOverArc) + .on("mousemove", mouseMoveArc) + .on("mouseout", mouseOutArc) + .each(function (d) { + this._current = enterArc(d); + }); + + + path.transition() + .style("fill-opacity", 1) + .attrTween("d", function (d) { + return arcTween.call(this, updateArc(d)); + }); + + + }); + + + texts = texts.data(new_data, function (d) { + return d.key; + }) + + texts.exit() + .remove() + texts.enter() + .append("text") + + texts.style("opacity", 0) + .attr("transform", function (d) { + return "rotate(" + computeTextRotation(d) + ")"; + }) + .attr("x", function (d) { + return radius / 3 * d.depth; + }) + .attr("dx", "6") // margin + .attr("dy", ".35em") // vertical-align + .filter(filter_min_arc_size_text) + .text(function (d, i) { + return d.name + }) + .transition().delay(750).style("opacity", 1) + + + } + }); + + function key(d) { + var k = [], p = d; + while (p.depth) k.push(p.name), p = p.parent; + return k.reverse().join("."); + } + + function fill(d) { + var p = d; + while (p.depth > 1) p = p.parent; + var c = d3.lab(hue(p.name)); + c.l = luminance(d.sum); + return c; + } + + function arcTween(b) { + var i = d3.interpolate(this._current, b); + this._current = i(0); + return function (t) { + return arc(i(t)); + }; + } + + function updateArc(d) { + return {depth: d.depth, x: d.x, dx: d.dx}; + } + + d3.select(self.frameElement).style("height", margin.top + margin.bottom + "px"); + +</script>
\ No newline at end of file diff --git a/tests/data/results/expected.json b/tests/data/results/expected.json index a495d999..e77200d4 100644 --- a/tests/data/results/expected.json +++ b/tests/data/results/expected.json @@ -1,7 +1,15 @@ { "score": 150, - "host_results": [ - {"host": "host1", "result": {"score": 100}}, - {"host": "host2", "result": {"score": 200}} - ] + "children": [ + { + "name": "host1", + "score": 100 + }, + { + "name": "host2", + "score": 200 + } + ], + "description": "POD Compute QPI", + "name": "compute" } diff --git a/tests/unit/ansible_library/plugins/action/calculate_test.py b/tests/unit/ansible_library/plugins/action/calculate_test.py index 68a03e2a..31d72120 100644 --- a/tests/unit/ansible_library/plugins/action/calculate_test.py +++ b/tests/unit/ansible_library/plugins/action/calculate_test.py @@ -45,8 +45,8 @@ def section_spec(metric_spec): @pytest.fixture def qpi_spec(section_spec): return { - "description": "QTIP Performance Index of compute", "name": "compute", + "description": "QTIP Performance Index of compute", "sections": [section_spec] } @@ -54,23 +54,29 @@ def qpi_spec(section_spec): @pytest.fixture() def metric_result(): return {'score': 1.0, - 'workload_results': [ - {'name': 'rsa_sign', 'score': 1.0}, - {'name': 'rsa_verify', 'score': 1.0}]} + 'name': 'ssl_rsa', + 'description': 'metric', + 'children': [{'description': 'workload', 'name': 'rsa_sign', 'score': 1.0}, + {'description': 'workload', 'name': 'rsa_verify', 'score': 1.0}]} @pytest.fixture() def section_result(metric_result): return {'score': 1.0, - 'metric_results': [{'name': 'ssl_rsa', 'result': metric_result}]} + 'name': 'ssl', + 'description': 'cryptography and SSL/TLS performance', + 'children': [metric_result]} @pytest.fixture() def qpi_result(qpi_spec, section_result, metrics): return {'score': 2048, - 'spec': qpi_spec, - 'metrics': metrics, - 'section_results': [{'name': 'ssl', 'result': section_result}]} + 'name': 'compute', + 'description': 'QTIP Performance Index of compute', + 'children': [section_result], + 'details': { + 'spec': qpi_spec, + 'metrics': metrics}} def test_calc_metric(metric_spec, metrics, metric_result): diff --git a/tests/unit/runner/runner_test.py b/tests/unit/runner/runner_test.py deleted file mode 100644 index b7da1611..00000000 --- a/tests/unit/runner/runner_test.py +++ /dev/null @@ -1,16 +0,0 @@ -############################################################################## -# Copyright (c) 2016 ZTE Corp 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 qtip.runner.base import BaseRunner - - -def test_constructor(): - runner = BaseRunner() - assert isinstance(runner, BaseRunner) diff --git a/tests/unit/util/env_test.py b/tests/unit/util/env_test.py deleted file mode 100644 index 793d1e4e..00000000 --- a/tests/unit/util/env_test.py +++ /dev/null @@ -1,307 +0,0 @@ -############################################################### -# Copyright (c) 2017 ZTE Corporation -# -# 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 time - -import pytest -import mock -from collections import defaultdict -import socket - -from qtip.util import env -from qtip.util.env import AnsibleEnvSetup - - -@pytest.fixture(scope='session') -def ansible_envsetup(): - return AnsibleEnvSetup() - - -@pytest.fixture() -def hostfile(tmpdir): - fake_hostfile = tmpdir.join('hosts') - fake_hostfile.write("[hosts]\n") - fake_hostfile.write("10.20.0.3") - return fake_hostfile - - -@pytest.fixture() -def private_key(tmpdir): - fake_private_key = tmpdir.join('QtipKey') - fake_private_key.write("fake keypair") - return fake_private_key - - -@pytest.fixture() -def public_key(tmpdir): - fake_public_key = tmpdir.join('QtipKey.pub') - fake_public_key.write("fake public key") - return fake_public_key - - -def test_all_files_exist(tmpdir): - exist_file = tmpdir.mkdir('qtip').join('hello.txt') - exist_file.write("hello") - non_exist_file = tmpdir.strpath + '/tmp.txt' - assert env.all_files_exist() is False - assert env.all_files_exist(str(exist_file)) - assert env.all_files_exist(non_exist_file) is False - assert env.all_files_exist(str(exist_file), non_exist_file) is False - - -def test_clean_file(tmpdir): - exist_file = tmpdir.mkdir('qtip').join('hello.txt') - exist_file.write("hello") - non_exist_file = tmpdir.strpath + '/tmp.txt' - - assert env.clean_file() is False - assert env.clean_file(str(exist_file)) - assert env.clean_file(non_exist_file) - - -def test_init(ansible_envsetup): - assert 'AnsibleEnvSetup' in str(type(ansible_envsetup)) - assert ansible_envsetup.keypair == defaultdict(str) - assert ansible_envsetup.hostfile is None - assert ansible_envsetup.host_ip_list == [] - - -def test_setup_exception(mocker, ansible_envsetup, hostfile): - with mock.patch.object(AnsibleEnvSetup, 'check_hostfile', side_effect=RuntimeError()): - mock_os = mocker.patch('sys.exit') - ansible_envsetup.setup({'hostfile': str(hostfile)}) - assert mock_os.call_count == 1 - - -# TODO(zhihui_wu) Need find a smart way to write this pytest -def test_setup(mocker, ansible_envsetup): - mock_check_hostfile = \ - mocker.patch.object(AnsibleEnvSetup, 'check_hostfile') - mock_generate_default_hostfile = \ - mocker.patch.object(AnsibleEnvSetup, 'generate_default_hostfile') - mock_fetch_ip = \ - mocker.patch.object(AnsibleEnvSetup, 'fetch_host_ip_from_hostfile') - mock_check_keypair = \ - mocker.patch.object(AnsibleEnvSetup, 'check_keypair') - mock_generate_default_keypair = \ - mocker.patch.object(AnsibleEnvSetup, 'generate_default_keypair') - mock_pass_keypair = \ - mocker.patch.object(AnsibleEnvSetup, 'pass_keypair_to_remote') - mock_check_ssh = \ - mocker.patch.object(AnsibleEnvSetup, 'check_hosts_ssh_connectivity') - - ansible_envsetup.setup({'keypair': str(private_key), - 'hostfile': str(hostfile)}) - mock_check_hostfile.assert_called_with(str(hostfile)) - mock_fetch_ip.assert_called_with() - mock_check_keypair.assert_called_with(str(private_key)) - mock_pass_keypair.assert_called_with() - mock_check_ssh.assert_called_with() - - ansible_envsetup.setup({'keypair': str(private_key)}) - mock_generate_default_hostfile.assert_called_with() - mock_fetch_ip.assert_called_with() - mock_check_keypair.assert_called_with(str(private_key)) - mock_pass_keypair.assert_called_with() - mock_check_ssh.assert_called_with() - - ansible_envsetup.setup({'hostfile': str(hostfile)}) - mock_check_hostfile.assert_called_with(str(hostfile)) - mock_fetch_ip.assert_called_with() - mock_generate_default_keypair.assert_called_with() - mock_pass_keypair.assert_called_with() - mock_check_ssh.assert_called_with() - - ansible_envsetup.setup() - mock_generate_default_hostfile.assert_called_with() - mock_fetch_ip.assert_called_with() - mock_generate_default_keypair.assert_called_with() - mock_pass_keypair.assert_called_with() - mock_check_ssh.assert_called_with() - - -def test_check_keypair(mocker, ansible_envsetup, private_key, public_key): - with mocker.patch.object(env, 'all_files_exist', return_value=True): - ansible_envsetup.check_keypair(str(private_key)) - assert ansible_envsetup.keypair['private'] == str(private_key) - assert ansible_envsetup.keypair['public'] == str(public_key) - - -def test_check_keypair_failed(mocker, ansible_envsetup): - mocker.patch.object(env, 'all_files_exist', return_value=False) - with pytest.raises(RuntimeError) as excinfo: - ansible_envsetup.check_keypair(str(private_key)) - assert 'The keypairs you in the configuration file ' \ - 'is invalid or not existed.' == str(excinfo.value) - assert ansible_envsetup.keypair['private'] == '' - assert ansible_envsetup.keypair['public'] == '' - - -@pytest.mark.parametrize("file_existence, expected", [ - (True, 0), - (False, 1) -]) -def test_generate_default_keypair(mocker, ansible_envsetup, file_existence, expected): - mock_os = mocker.patch('os.system') - mocker.patch.object(env, 'all_files_exist', return_value=file_existence) - ansible_envsetup.generate_default_keypair() - assert mock_os.call_count == expected - assert ansible_envsetup.keypair['private'] == env.PRIVATE_KEY - assert ansible_envsetup.keypair['public'] == env.PUBLIC_KEY - - -@pytest.mark.parametrize("ips, expected", [ - (['10.20.0.3'], 1), - (['10.20.0.3', '10.20.0.4'], 2) -]) -def test_pass_keypair_to_remote_successful(mocker, ansible_envsetup, ips, expected): - ansible_envsetup.host_ip_list = ips - mock_pass_keypair = \ - mocker.patch.object(AnsibleEnvSetup, '_pass_keypair', return_value=True) - ansible_envsetup.pass_keypair_to_remote() - assert mock_pass_keypair.call_count == expected - - -def test_pass_keypair_to_remote_failed(mocker, ansible_envsetup): - ansible_envsetup.host_ip_list = ['10.20.0.3'] - mocker.patch.object(AnsibleEnvSetup, '_pass_keypair', return_value=False) - with pytest.raises(RuntimeError) as excinfo: - ansible_envsetup.pass_keypair_to_remote() - assert "Failed on passing keypair to remote." in str(excinfo.value) - - -def test_pass_keypair(monkeypatch, mocker, ansible_envsetup): - monkeypatch.setattr(time, 'sleep', lambda s: None) - mock_os = mocker.patch('os.system') - ansible_envsetup._pass_keypair('10.20.0.3', str(private_key)) - assert mock_os.call_count == 2 - - -def test_pass_keypair_exception(ansible_envsetup): - with mock.patch('os.system', side_effect=Exception()) as mock_os: - result = ansible_envsetup._pass_keypair('10.20.0.3', str(private_key)) - assert result is False - assert mock_os.call_count == 1 - - -def test_check_hostfile(mocker, ansible_envsetup, hostfile): - ansible_envsetup.check_hostfile(str(hostfile)) - assert ansible_envsetup.hostfile == str(hostfile) - - with pytest.raises(RuntimeError) as excinfo: - mocker.patch.object(env, 'all_files_exist', return_value=False) - ansible_envsetup.check_hostfile(str(hostfile)) - assert str(excinfo.value) == 'The hostfile {0} is invalid or not ' \ - 'existed.'.format(str(hostfile)) - - -def test_default_hostfile_non_existed(mocker, ansible_envsetup): - with mocker.patch.object(env, 'all_files_exist', return_value=False): - mock_generate_hostfile_via_installer = \ - mocker.patch.object(AnsibleEnvSetup, - '_generate_hostfile_via_installer') - ansible_envsetup.generate_default_hostfile() - mock_generate_hostfile_via_installer.assert_called_once_with() - - -def test_default_hostfile_existed(mocker, ansible_envsetup): - with mocker.patch.object(env, 'all_files_exist', return_value=True): - mock_generate_hostfile_via_installer = \ - mocker.patch.object(AnsibleEnvSetup, - '_generate_hostfile_via_installer') - ansible_envsetup.generate_default_hostfile() - mock_generate_hostfile_via_installer.assert_not_called() - - -@pytest.mark.parametrize("test_input, expected", [ - (({}, KeyError), 'INSTALLER_TYPE'), - (({'INSTALLER_TYPE': 'fuel'}, KeyError), 'INSTALLER_IP'), - (({'INSTALLER_TYPE': 'fuel_1', 'INSTALLER_IP': '10.20.0.2'}, ValueError), - 'fuel_1 is not supported'), - (({'INSTALLER_TYPE': 'fuel', 'INSTALLER_IP': ''}, ValueError), - 'The value of environment variable INSTALLER_IP is empty') -]) -def test_generate_hostfile_via_installer_exception(monkeypatch, ansible_envsetup, test_input, expected): - if test_input[0]: - for key in test_input[0]: - monkeypatch.setenv(key, test_input[0][key]) - - with pytest.raises(test_input[1]) as excinfo: - ansible_envsetup._generate_hostfile_via_installer() - assert expected in str(excinfo.value) - - -def test_generate_hostfile_via_installer(monkeypatch, mocker, ansible_envsetup): - monkeypatch.setenv('INSTALLER_TYPE', 'fuel') - monkeypatch.setenv('INSTALLER_IP', '10.20.0.2') - mock_os = mocker.patch('os.system') - ansible_envsetup._generate_hostfile_via_installer() - assert mock_os.call_count == 1 - assert ansible_envsetup.hostfile == env.HOST_FILE - - -def test_fetch_host_ip_from_hostfile(ansible_envsetup, hostfile): - ansible_envsetup.hostfile = str(hostfile) - ansible_envsetup.fetch_host_ip_from_hostfile() - assert ansible_envsetup.host_ip_list == ['10.20.0.3'] - - -def test_fetch_host_ip_from_empty_hostfile(ansible_envsetup, tmpdir): - empty_hostfile = tmpdir.join('empty_hostfile') - empty_hostfile.write("") - ansible_envsetup.hostfile = str(empty_hostfile) - with pytest.raises(ValueError) as excinfo: - ansible_envsetup.fetch_host_ip_from_hostfile() - assert str(excinfo.value) == "The hostfile doesn't include host ip addresses." - - -@pytest.mark.parametrize("ips, expected", [ - (['10.20.0.3'], 1), - (['10.20.0.3', '10.20.0.4'], 2) -]) -def test_check_hosts_ssh_connectivity(mocker, ansible_envsetup, ips, expected): - ansible_envsetup.host_ip_list = ips - mock_ssh_is_ok = \ - mocker.patch.object(AnsibleEnvSetup, '_ssh_is_ok', return_value=True) - ansible_envsetup.check_hosts_ssh_connectivity() - assert mock_ssh_is_ok.call_count == expected - - -def test_check_hosts_ssh_connectivity_failed(mocker, ansible_envsetup): - ansible_envsetup.host_ip_list = ['10.20.0.3'] - mocker.patch.object(AnsibleEnvSetup, '_ssh_is_ok', return_value=False) - with pytest.raises(RuntimeError) as excinfo: - ansible_envsetup.check_hosts_ssh_connectivity() - assert "Failed on checking hosts ssh connectivity." == str(excinfo.value) - - -@pytest.mark.parametrize("stderrinfo, expected", [ - ('', True), - ('sorry', False) -]) -def test_ssh_is_ok(mocker, ansible_envsetup, private_key, stderrinfo, expected): - stderr = mock.MagicMock() - stderr.readlines.return_value = stderrinfo - mock_sshclient = mocker.patch('paramiko.SSHClient') - test_ssh_client = mock_sshclient.return_value - test_ssh_client.exec_command.return_value = ('', '', stderr) - result = ansible_envsetup._ssh_is_ok('10.20.0.3', str(private_key)) - assert result == expected - test_ssh_client.connect.assert_called_once_with( - '10.20.0.3', key_filename=str(private_key)) - test_ssh_client.exec_command.assert_called_with('uname') - - -def test_ssh_exception(monkeypatch, mocker, ansible_envsetup): - monkeypatch.setattr(time, 'sleep', lambda s: None) - mock_sshclient = mocker.patch('paramiko.SSHClient') - test_ssh_client = mock_sshclient.return_value - test_ssh_client.exec_command.side_effect = socket.error() - result = ansible_envsetup._ssh_is_ok('10.20.0.3', str(private_key), attempts=1) - assert result is False |