aboutsummaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorwu.zhihui <wu.zhihui1@zte.com.cn>2016-10-12 15:32:52 +0800
committerwu.zhihui <wu.zhihui1@zte.com.cn>2016-10-14 17:16:00 +0800
commiteddc35b497362c0c01e612d66ed19c4d5c9dd328 (patch)
tree9a9c792a002fce40782158b9d645e597d3606f1b /scripts
parent975e241de4d4bf3839c788ad743d0cc077e23bd4 (diff)
Adjust directory structure
qtip ! +---- scripts ! ! ! +----ref_result # python scripts to generate results report ! +----fetch_compute_ips.sh ! +----fetch_os_creds.sh ! +----file_permission.sh ! +----get_env_info.sh ! +----qtip_creds.sh ! +----ssh_exch.exp ! +---- config ! ! ! +---- Qtip_key ! +---- Qtip_key.pub ! +---- SampleHeat.yaml ! +---- utils ! ! ! +---- logger_utils.py ! +---- report # generate pdf report file Change-Id: Ia908ff31494369c1a13fb88b1ff9b0e5681f8e29 Signed-off-by: wu.zhihui <wu.zhihui1@zte.com.cn>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/fetch_compute_ips.sh117
-rwxr-xr-xscripts/fetch_os_creds.sh188
-rwxr-xr-xscripts/file_permission.sh3
-rwxr-xr-xscripts/get_env_info.sh37
-rwxr-xr-xscripts/qtip_creds.sh30
-rw-r--r--scripts/ref_results/__init__.py0
-rw-r--r--scripts/ref_results/compute_benchmarks_indices.py161
-rw-r--r--scripts/ref_results/generator_ref_json.py81
-rw-r--r--scripts/ref_results/index_calculation.py41
-rw-r--r--scripts/ref_results/network_benchmarks_indices.py20
-rw-r--r--scripts/ref_results/reference.json97
-rw-r--r--scripts/ref_results/result_accum.py31
-rw-r--r--scripts/ref_results/storage_benchmarks_indices.py29
-rw-r--r--scripts/ref_results/suite_result.py55
-rw-r--r--scripts/ssh_exch.exp9
15 files changed, 899 insertions, 0 deletions
diff --git a/scripts/fetch_compute_ips.sh b/scripts/fetch_compute_ips.sh
new file mode 100755
index 00000000..ebe817a6
--- /dev/null
+++ b/scripts/fetch_compute_ips.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+##############################################################################
+#Copyright (c) 2016 Ericsson AB, ZTE and others.
+#jose.lausuch@ericsson.com
+#wu.zhihui1@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
+##############################################################################
+
+
+usage(){
+ echo "usage: $0 [-v] -i <installer_type> -a <installer_ip>" >&2
+ echo "[-v] Virtualized deployment" >&2
+}
+
+info() {
+ logger -s -t "fetch_compute_info.info" "$*"
+}
+
+
+error() {
+ logger -s -t "fetch_compute_info.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 ":i:a:h:v" optchar; do
+ case "${optchar}" in
+ i) installer_type=${OPTARG} ;;
+ a) installer_ip=${OPTARG} ;;
+ v) DEPLOY_TYPE="virt" ;;
+ *) 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_ip=${installer_ip:-$INSTALLER_IP}
+
+if [ -z $installer_type ] || [ -z $installer_ip ]; 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_ip
+
+ env=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+ '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_ip} \
+ "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_ip
+ IPS=$(sshpass -p'root' ssh 2>/dev/null $ssh_options root@${installer_ip} \
+ '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: --------"
+ touch $HOME/ips.log
+ echo "$IPS" > $HOME/ips.log
+ echo $IPS
+fi
+
+exit 0
diff --git a/scripts/fetch_os_creds.sh b/scripts/fetch_os_creds.sh
new file mode 100755
index 00000000..3b493e14
--- /dev/null
+++ b/scripts/fetch_os_creds.sh
@@ -0,0 +1,188 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2015 Ericsson AB 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 -d <destination> -i <installer_type> -a <installer_ip>" >&2
+}
+
+info () {
+ logger -s -t "fetch_os_creds.info" "$*"
+}
+
+
+error () {
+ logger -s -t "fetch_os_creds.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."
+}
+
+
+
+#Get options
+while getopts ":d:i:a:h:" optchar; do
+ case "${optchar}" in
+ d) dest_path=${OPTARG} ;;
+ i) installer_type=${OPTARG} ;;
+ a) installer_ip=${OPTARG} ;;
+ *) echo "Non-option argument: '-${OPTARG}'" >&2
+ usage
+ exit 2
+ ;;
+ esac
+done
+
+# set vars from env if not provided by user as options
+dest_path=${dest_path:-$HOME/opnfv-openrc.sh}
+installer_type=${installer_type:-$INSTALLER_TYPE}
+installer_ip=${installer_ip:-$INSTALLER_IP}
+
+if [ -z $dest_path ] || [ -z $installer_type ] || [ -z $installer_ip ]; then
+ usage
+ exit 2
+fi
+
+# Checking if destination path is valid
+if [ -d $dest_path ]; then
+ error "Please provide the full destination path for the credentials file including the filename"
+else
+ # Check if we can create the file (e.g. path is correct)
+ touch $dest_path || error "Cannot create the file specified. Check that the path is correct and run the script again."
+fi
+
+
+ssh_options="-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+
+# Start fetching the files
+if [ "$installer_type" == "fuel" ]; then
+ #ip_fuel="10.20.0.2"
+ verify_connectivity $installer_ip
+
+ # Check if controller is alive (online='True')
+ controller_ip=$(sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+ 'fuel node | grep controller | grep True | awk "{print \$10}" | tail -1') &> /dev/null
+
+ if [ -z $controller_ip ]; then
+ error "The controller $controller_ip is not up. Please check that the POD is correctly deployed."
+ fi
+
+ info "Fetching rc file from controller $controller_ip..."
+ sshpass -p r00tme ssh 2>/dev/null $ssh_options root@${installer_ip} \
+ "scp $ssh_options ${controller_ip}:/root/openrc ." &> /dev/null
+ sshpass -p r00tme scp 2>/dev/null $ssh_options root@${installer_ip}:~/openrc $dest_path &> /dev/null
+
+ #This file contains the mgmt keystone API, we need the public one for our rc file
+ admin_ip=$(cat $dest_path | grep "OS_AUTH_URL" | sed 's/^.*\=//' | sed "s/^\([\"']\)\(.*\)\1\$/\2/g" | sed s'/\/$//')
+ public_ip=$(sshpass -p r00tme ssh $ssh_options root@${installer_ip} \
+ "ssh ${controller_ip} 'source openrc; keystone endpoint-list'" \
+ | grep $admin_ip | sed 's/ /\n/g' | grep ^http | head -1) &> /dev/null
+ #| grep http | head -1 | cut -d '|' -f 4 | sed 's/v1\/.*/v1\//' | sed 's/ //g') &> /dev/null
+ #NOTE: this is super ugly sed 's/v1\/.*/v1\//'OS_AUTH_URL
+ # but sometimes the output of endpoint-list is like this: http://172.30.9.70:8004/v1/%(tenant_id)s
+
+elif [ "$installer_type" == "apex" ]; then
+ verify_connectivity $installer_ip
+
+ # The credentials file is located in the Instack VM (192.0.2.1)
+ # NOTE: This might change for bare metal deployments
+ info "Fetching rc file from Instack VM $installer_ip..."
+ if [ -f /root/.ssh/id_rsa ]; then
+ chmod 600 /root/.ssh/id_rsa
+ fi
+ sudo scp $ssh_options root@$installer_ip:/home/stack/overcloudrc $dest_path
+
+elif [ "$installer_type" == "compass" ]; then
+ verify_connectivity $installer_ip
+ controller_ip=$(sshpass -p'root' ssh 2>/dev/null $ssh_options root@${installer_ip} \
+ 'mysql -ucompass -pcompass -Dcompass -e"select * from cluster;"' \
+ | awk -F"," '{for(i=1;i<NF;i++)if($i~/\"host1\"/) {print $(i+1);break;}}' \
+ | grep -oP "\d+.\d+.\d+.\d+")
+
+ if [ -z $controller_ip ]; then
+ error "The controller $controller_ip is not up. Please check that the POD is correctly deployed."
+ fi
+
+ info "Fetching rc file from controller $controller_ip..."
+ sshpass -p root ssh 2>/dev/null $ssh_options root@${installer_ip} \
+ "scp $ssh_options ${controller_ip}:/opt/admin-openrc.sh ." &> /dev/null
+ sshpass -p root scp 2>/dev/null $ssh_options root@${installer_ip}:~/admin-openrc.sh $dest_path &> /dev/null
+ echo 'export OS_REGION_NAME=regionOne' >> $dest_path
+
+ info "This file contains the mgmt keystone API, we need the public one for our rc file"
+ admin_ip=$(cat $dest_path | grep "OS_AUTH_URL" | sed 's/^.*\=//' | sed "s/^\([\"']\)\(.*\)\1\$/\2/g" | sed s'/\/$//')
+ info "admin_ip: $admin_ip"
+ public_ip=$(sshpass -p root ssh $ssh_options root@${installer_ip} \
+ "ssh ${controller_ip} 'source /opt/admin-openrc.sh; keystone endpoint-list'" \
+ | grep $admin_ip | sed 's/ /\n/g' | grep ^http | head -1)
+ info "public_ip: $public_ip"
+
+
+elif [ "$installer_type" == "joid" ]; then
+ # do nothing...for the moment
+ # we can either do a scp from the jumphost or use the -v option to transmit the param to the docker file
+ echo "Do nothing, creds will be provided through volume option at docker creation for joid"
+
+elif [ "$installer_type" == "foreman" ]; then
+ #ip_foreman="172.30.10.73"
+ controller="oscontroller1.opnfv.com"
+ verify_connectivity $installer_ip
+
+ # Check if controller is alive (here is more difficult to get the ip from a command like "fuel node")
+ sshpass -p vagrant ssh $ssh_options root@${installer_ip} \
+ "sshpass -p Op3nStack ssh $ssh_options root@${controller} 'ls'" &> /dev/null
+ if [ $? -ne 0 ]; then
+ error "The controller ${controller} is not up. Please check that the POD is correctly deployed."
+ fi
+
+ info "Fetching openrc from a Foreman Controller '${controller}'..."
+ sshpass -p vagrant ssh $ssh_options root@${installer_ip} \
+ "sshpass -p Op3nStack scp $ssh_options root@${controller}:~/keystonerc_admin ." &> /dev/null
+ sshpass -p vagrant scp $ssh_options root@${installer_ip}:~/keystonerc_admin $dest_path &> /dev/null
+
+ #This file contains the mgmt keystone API, we need the public one for our rc file
+ admin_ip=$(cat $dest_path | grep "OS_AUTH_URL" | sed 's/^.*\=//' | sed "s/^\([\"']\)\(.*\)\1\$/\2/g" | sed s'/\/$//')
+ public_ip=$(sshpass -p vagrant ssh $ssh_options root@${installer_ip} \
+ "sshpass -p Op3nStack ssh $ssh_options root@${controller} \
+ 'source keystonerc_admin;keystone endpoint-list'" \
+ | grep $admin_ip | sed 's/ /\n/g' | grep ^http | head -1) &> /dev/null
+
+else
+ error "Installer $installer is not supported by this script"
+fi
+
+
+if [ ! -f $dest_path ]; then
+ error "There has been an error retrieving the credentials"
+fi
+
+if [ "$public_ip" != "" ]; then
+ info "Exchanging keystone public IP in rc file to $public_ip"
+ sed -i "/OS_AUTH_URL/c\export OS_AUTH_URL=\'$public_ip'" $dest_path
+fi
+
+
+
+echo "-------- Credentials: --------"
+cat $dest_path
+
+exit 0
diff --git a/scripts/file_permission.sh b/scripts/file_permission.sh
new file mode 100755
index 00000000..01a77d50
--- /dev/null
+++ b/scripts/file_permission.sh
@@ -0,0 +1,3 @@
+#! /bin/bash
+chmod 0600 data/QtipKey
+chmod 0600 data/QtipKey.pub
diff --git a/scripts/get_env_info.sh b/scripts/get_env_info.sh
new file mode 100755
index 00000000..4b362fac
--- /dev/null
+++ b/scripts/get_env_info.sh
@@ -0,0 +1,37 @@
+#! /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
+
+
+./scripts/fetch_os_creds.sh -d ./opnfv-creds.sh
diff --git a/scripts/qtip_creds.sh b/scripts/qtip_creds.sh
new file mode 100755
index 00000000..beb4659f
--- /dev/null
+++ b/scripts/qtip_creds.sh
@@ -0,0 +1,30 @@
+#! /bin/bash
+
+DEST_IP=$1
+echo $INSTALLER_TYPE
+echo $INSTALLER_IP
+sshoptions="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
+case "$INSTALLER_TYPE" in
+ apex)
+ scp $sshoptions -i $APEX_KEY ./data/QtipKey.pub stack@$INSTALLER_IP:/home/stack
+ scp $sshoptions -i $APEX_KEY ./data/QtipKey stack@$INSTALLER_IP:/home/stack
+ ssh $sshoptions -i $APEX_KEY stack@$INSTALLER_IP "ssh-copy-id $sshoptions -i /home/stack/QtipKey.pub heat-admin@$DEST_IP && rm -rf /home/stack/QtipKey && rm -rf /home/stack/QtipKey.pub"
+ ;;
+ fuel)
+ PSWD="r00tme"
+ sshpass -p $PSWD scp $sshoptions ./data/QtipKey.pub root@$INSTALLER_IP:/root
+ sshpass -p $PSWD scp $sshoptions ./data/QtipKey root@$INSTALLER_IP:/root
+ sshpass -p $PSWD ssh $sshoptions root@$INSTALLER_IP "grep -q '\-F /dev/null ' /usr/bin/ssh-copy-id || sed -i 's/\(ssh -i.*$\)/\1\n -F \/dev\/null \\\/g' `which ssh-copy-id`"
+ sshpass -p $PSWD ssh $sshoptions root@$INSTALLER_IP "ssh-copy-id $sshoptions -i /root/QtipKey root@$DEST_IP && rm -rf /root/QtipKey && rm -rf /root/QtipKey.pub"
+ ;;
+ compass)
+ PSWD="root"
+ sshpass -p $PSWD scp $sshoptions ./data/QtipKey.pub root@$INSTALLER_IP:/root
+ sshpass -p $PSWD scp $sshoptions ./data/QtipKey root@$INSTALLER_IP:/root
+ sshpass -p $PSWD ssh $sshoptions root@$INSTALLER_IP "ssh-copy-id $sshoptions -i /root/QtipKey.pub root@$DEST_IP && rm -rf /root/QtipKey && rm -rf /root/QtipKey.pub"
+ ;;
+ joid)
+ PSWD="joid";;
+ *)
+ echo "Unkown installer $INSTALLER_TYPE specified";;
+esac
diff --git a/scripts/ref_results/__init__.py b/scripts/ref_results/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/scripts/ref_results/__init__.py
diff --git a/scripts/ref_results/compute_benchmarks_indices.py b/scripts/ref_results/compute_benchmarks_indices.py
new file mode 100644
index 00000000..9012cefc
--- /dev/null
+++ b/scripts/ref_results/compute_benchmarks_indices.py
@@ -0,0 +1,161 @@
+from index_calculation import generic_index as get_index
+from index_calculation import get_reference
+from result_accum import result_concat as concat
+
+
+def dpi_index():
+ dpi_dict = concat('results/dpi/')
+ dpi_bm_ref = get_reference('compute', 'dpi_bm')
+ dpi_bm_index = get_index(dpi_dict, 'dpi_bm', dpi_bm_ref, 'details', 'bps')
+
+ dpi_vm_ref = get_reference('compute', 'dpi_vm')
+ dpi_vm_index = get_index(dpi_dict, 'dpi_vm', dpi_vm_ref, 'details', 'bps')
+
+ dpi_index = (dpi_bm_index + dpi_vm_index) / 2
+ dpi_dict_i = {}
+ dpi_dict_i['index'] = dpi_index
+ dpi_dict_i['results'] = dpi_dict
+ return dpi_dict_i
+
+
+def dhrystone_index():
+
+ dhrystone_dict = concat('results/dhrystone/')
+ dhrystone_single_bm_ref = get_reference('compute', 'dhrystone_bm', 'single_cpu')
+ dhrystone_single_bm_index = get_index(dhrystone_dict, 'dhrystone_bm', dhrystone_single_bm_ref, 'details', 'single', 'score')
+
+ dhrystone_multi_bm_ref = get_reference('compute', 'dhrystone_bm', 'multi_cpu')
+ dhrystone_multi_bm_index = get_index(dhrystone_dict, 'dhrystone_bm', dhrystone_multi_bm_ref, 'details', 'multi', 'score')
+
+ dhrystone_bm_index = (dhrystone_single_bm_index + dhrystone_multi_bm_index) / 2
+
+ dhrystone_single_vm_ref = get_reference('compute', 'dhrystone_vm', 'single_cpu')
+ dhrystone_single_vm_index = get_index(dhrystone_dict, 'dhrystone_vm', dhrystone_single_vm_ref, 'details', 'single', 'score')
+
+ dhrystone_multi_vm_ref = get_reference('compute', 'dhrystone_vm', 'multi_cpu')
+ dhrystone_multi_vm_index = get_index(dhrystone_dict, 'dhrystone_vm', dhrystone_multi_vm_ref, 'details', 'multi', 'score')
+
+ dhrystone_vm_index = (dhrystone_single_vm_index + dhrystone_multi_vm_index) / 2
+
+ dhrystone_index = (dhrystone_bm_index + dhrystone_vm_index) / 2
+ dhrystone_dict_i = {}
+ dhrystone_dict_i['index'] = dhrystone_index
+ dhrystone_dict_i['results'] = dhrystone_dict
+ return dhrystone_dict_i
+
+
+def whetstone_index():
+
+ whetstone_dict = concat('results/whetstone/')
+ whetstone_single_bm_ref = get_reference('compute', 'whetstone_bm', 'single_cpu')
+ whetstone_single_bm_index = get_index(whetstone_dict, 'whetstone_bm', whetstone_single_bm_ref, 'details', 'single', 'score')
+
+ whetstone_multi_bm_ref = get_reference('compute', 'whetstone_bm', 'multi_cpu')
+ whetstone_multi_bm_index = get_index(whetstone_dict, 'whetstone_bm', whetstone_multi_bm_ref, 'details', 'multi', 'score')
+
+ whetstone_bm_index = (whetstone_single_bm_index + whetstone_multi_bm_index) / 2
+
+ whetstone_single_vm_ref = get_reference('compute', 'whetstone_vm', 'single_cpu')
+ whetstone_single_vm_index = get_index(whetstone_dict, 'whetstone_vm', whetstone_single_vm_ref, 'details', 'single', 'score')
+
+ whetstone_multi_vm_ref = get_reference('compute', 'whetstone_vm', 'multi_cpu')
+ whetstone_multi_vm_index = get_index(whetstone_dict, 'whetstone_vm', whetstone_multi_vm_ref, 'details', 'multi', 'score')
+
+ whetstone_vm_index = (whetstone_single_vm_index + whetstone_multi_vm_index) / 2
+
+ whetstone_index = (whetstone_bm_index + whetstone_vm_index) / 2
+ whetstone_dict_i = {}
+ whetstone_dict_i['index'] = whetstone_index
+ whetstone_dict_i['results'] = whetstone_dict
+ return whetstone_dict_i
+
+
+def ramspeed_index():
+
+ ramspeed_dict = concat('results/ramspeed/')
+ ramspeed_int_bm_ref = get_reference('compute', 'ramspeed_bm', 'INTmem', 'Average (MB/s)')
+ ramspeed_int_bm_index = get_index(ramspeed_dict, 'ramspeed_bm', ramspeed_int_bm_ref, 'details', 'int_bandwidth', 'average')
+
+ ramspeed_float_bm_ref = get_reference('compute', 'ramspeed_bm', 'FLOATmem', 'Average (MB/s)')
+ ramspeed_float_bm_index = get_index(ramspeed_dict, 'ramspeed_bm', ramspeed_float_bm_ref, 'details', 'float_bandwidth', 'average')
+
+ ramspeed_bm_index = (ramspeed_int_bm_index + ramspeed_float_bm_index) / 2
+
+ ramspeed_int_vm_ref = get_reference('compute', 'ramspeed_vm', 'INTmem', 'Average (MB/s)')
+ ramspeed_int_vm_index = get_index(ramspeed_dict, 'ramspeed_vm', ramspeed_int_vm_ref, 'details', 'int_bandwidth', 'average')
+
+ ramspeed_float_vm_ref = get_reference('compute', 'ramspeed_vm', 'FLOATmem', 'Average (MB/s)')
+ ramspeed_float_vm_index = get_index(ramspeed_dict, 'ramspeed_vm', ramspeed_float_vm_ref, 'details', 'float_bandwidth', 'average')
+
+ ramspeed_vm_index = (ramspeed_int_vm_index + ramspeed_float_vm_index) / 2
+
+ ramspeed_index = (ramspeed_vm_index + ramspeed_bm_index) / 2
+
+ ramspeed_dict_i = {}
+ ramspeed_dict_i['index'] = ramspeed_index
+ ramspeed_dict_i['results'] = ramspeed_dict
+ return ramspeed_dict_i
+
+
+def ssl_index():
+
+ ssl_dict = concat('results/ssl/')
+
+ ssl_RSA512b_bm_ref = get_reference('compute', 'ssl_bm', 'RSA', '512b')
+ ssl_RSA1024b_bm_ref = get_reference('compute', 'ssl_bm', 'RSA', '1024b')
+ ssl_RSA2048b_bm_ref = get_reference('compute', 'ssl_bm', 'RSA', '2048b')
+ ssl_RSA4096b_bm_ref = get_reference('compute', 'ssl_bm', 'RSA', '4096b')
+
+ ssl_AES16B_bm_ref = get_reference('compute', 'ssl_bm', 'AES', '16B')
+ ssl_AES64B_bm_ref = get_reference('compute', 'ssl_bm', 'AES', '64B')
+ ssl_AES256B_bm_ref = get_reference('compute', 'ssl_bm', 'AES', '256B')
+ ssl_AES1024B_bm_ref = get_reference('compute', 'ssl_bm', 'AES', '1024B')
+ ssl_AES8192B_bm_ref = get_reference('compute', 'ssl_bm', 'AES', '8192B')
+
+ ssl_RSA512b_bm_index = get_index(ssl_dict, "ssl_bm", ssl_RSA512b_bm_ref, 'details', 'rsa_sig', '512_bits')
+ ssl_RSA1024b_bm_index = get_index(ssl_dict, "ssl_bm", ssl_RSA1024b_bm_ref, 'details', 'rsa_sig', '1024_bits')
+ ssl_RSA2048b_bm_index = get_index(ssl_dict, "ssl_bm", ssl_RSA2048b_bm_ref, 'details', 'rsa_sig', '2048_bits')
+ ssl_RSA4096b_bm_index = get_index(ssl_dict, "ssl_bm", ssl_RSA4096b_bm_ref, 'details', 'rsa_sig', '4096_bits')
+ ssl_RSA_bm_index = (ssl_RSA512b_bm_index + ssl_RSA1024b_bm_index + ssl_RSA2048b_bm_index + ssl_RSA4096b_bm_index) / 4
+
+ ssl_AES16B_bm_index = get_index(ssl_dict, "ssl_bm", ssl_AES16B_bm_ref, 'details', 'aes_128_cbc', '16_block')
+ ssl_AES64B_bm_index = get_index(ssl_dict, "ssl_bm", ssl_AES64B_bm_ref, 'details', 'aes_128_cbc', '64_block')
+ ssl_AES256B_bm_index = get_index(ssl_dict, "ssl_bm", ssl_AES256B_bm_ref, 'details', 'aes_128_cbc', '256_block')
+ ssl_AES1024B_bm_index = get_index(ssl_dict, "ssl_bm", ssl_AES1024B_bm_ref, 'details', 'aes_128_cbc', '1024_block')
+ ssl_AES8192B_bm_index = get_index(ssl_dict, "ssl_bm", ssl_AES8192B_bm_ref, 'details', 'aes_128_cbc', '8192_block')
+ ssl_AES_bm_index = (ssl_AES16B_bm_index + ssl_AES64B_bm_index + ssl_AES256B_bm_index + ssl_AES1024B_bm_index + ssl_AES8192B_bm_index) / 5
+
+ ssl_bm_index = (ssl_RSA_bm_index + ssl_AES_bm_index) / 2
+
+ ssl_RSA512b_vm_ref = get_reference('compute', 'ssl_vm', 'RSA', '512b')
+ ssl_RSA1024b_vm_ref = get_reference('compute', 'ssl_vm', 'RSA', '1024b')
+ ssl_RSA2048b_vm_ref = get_reference('compute', 'ssl_vm', 'RSA', '2048b')
+ ssl_RSA4096b_vm_ref = get_reference('compute', 'ssl_vm', 'RSA', '4096b')
+
+ ssl_AES16B_vm_ref = get_reference('compute', 'ssl_vm', 'AES', '16B')
+ ssl_AES64B_vm_ref = get_reference('compute', 'ssl_vm', 'AES', '64B')
+ ssl_AES256B_vm_ref = get_reference('compute', 'ssl_vm', 'AES', '256B')
+ ssl_AES1024B_vm_ref = get_reference('compute', 'ssl_vm', 'AES', '1024B')
+ ssl_AES8192B_vm_ref = get_reference('compute', 'ssl_vm', 'AES', '8192B')
+
+ ssl_RSA512b_vm_index = get_index(ssl_dict, "ssl_vm", ssl_RSA512b_vm_ref, 'details', 'rsa_sig', '512_bits')
+ ssl_RSA1024b_vm_index = get_index(ssl_dict, "ssl_vm", ssl_RSA1024b_vm_ref, 'details', 'rsa_sig', '1024_bits')
+ ssl_RSA2048b_vm_index = get_index(ssl_dict, "ssl_vm", ssl_RSA2048b_vm_ref, 'details', 'rsa_sig', '2048_bits')
+ ssl_RSA4096b_vm_index = get_index(ssl_dict, "ssl_vm", ssl_RSA4096b_vm_ref, 'details', 'rsa_sig', '4096_bits')
+ ssl_RSA_vm_index = (ssl_RSA512b_vm_index + ssl_RSA1024b_vm_index + ssl_RSA2048b_vm_index + ssl_RSA4096b_vm_index) / 4
+
+ ssl_AES16B_vm_index = get_index(ssl_dict, "ssl_vm", ssl_AES16B_vm_ref, 'details', 'aes_128_cbc', '16_block')
+ ssl_AES64B_vm_index = get_index(ssl_dict, "ssl_vm", ssl_AES64B_vm_ref, 'details', 'aes_128_cbc', '64_block')
+ ssl_AES256B_vm_index = get_index(ssl_dict, "ssl_vm", ssl_AES256B_vm_ref, 'details', 'aes_128_cbc', '256_block')
+ ssl_AES1024B_vm_index = get_index(ssl_dict, "ssl_vm", ssl_AES1024B_vm_ref, 'details', 'aes_128_cbc', '1024_block')
+ ssl_AES8192B_vm_index = get_index(ssl_dict, "ssl_vm", ssl_AES8192B_vm_ref, 'details', 'aes_128_cbc', '8192_block')
+ ssl_AES_vm_index = (ssl_AES16B_vm_index + ssl_AES64B_vm_index + ssl_AES256B_vm_index + ssl_AES1024B_vm_index + ssl_AES8192B_vm_index) / 5
+
+ ssl_vm_index = (ssl_RSA_vm_index + ssl_AES_vm_index) / 2
+
+ ssl_index = (ssl_bm_index + ssl_vm_index) / 2
+
+ ssl_dict_i = {}
+ ssl_dict_i['index'] = ssl_index
+ ssl_dict_i['results'] = ssl_dict
+ return ssl_dict_i
diff --git a/scripts/ref_results/generator_ref_json.py b/scripts/ref_results/generator_ref_json.py
new file mode 100644
index 00000000..6b2d813c
--- /dev/null
+++ b/scripts/ref_results/generator_ref_json.py
@@ -0,0 +1,81 @@
+import json
+
+dict_ref = {}
+dict_ref['compute'] = {}
+dict_ref['compute']['dpi_bm'] = 8.12
+dict_ref['compute']['dpi_vm'] = 22.12
+
+dict_ref['compute']['whetstone_bm'] = {}
+dict_ref['compute']['whetstone_vm'] = {}
+dict_ref['compute']['whetstone_bm']['single_cpu'] = 806.1
+dict_ref['compute']['whetstone_bm']['multi_cpu'] = 41483.3
+dict_ref['compute']['whetstone_vm']['single_cpu'] = 789.0
+dict_ref['compute']['whetstone_vm']['multi_cpu'] = 2950.6
+
+dict_ref['compute']['dhrystone_bm'] = {}
+dict_ref['compute']['dhrystone_vm'] = {}
+dict_ref['compute']['dhrystone_bm']['single_cpu'] = 3231.7
+dict_ref['compute']['dhrystone_bm']['multi_cpu'] = 103362.1
+dict_ref['compute']['dhrystone_vm']['single_cpu'] = 2953.6
+dict_ref['compute']['dhrystone_vm']['multi_cpu'] = 10585.8
+
+dict_ref['compute']['ssl_bm'] = {}
+dict_ref['compute']['ssl_bm']['RSA'] = {}
+dict_ref['compute']['ssl_bm']['AES'] = {}
+dict_ref['compute']['ssl_bm']['RSA']['512b'] = 22148.9
+dict_ref['compute']['ssl_bm']['RSA']['1024b'] = 7931.44
+dict_ref['compute']['ssl_bm']['RSA']['2048b'] = 1544.3
+dict_ref['compute']['ssl_bm']['RSA']['4096b'] = 161.92
+dict_ref['compute']['ssl_bm']['AES']['16B'] = 735490250
+dict_ref['compute']['ssl_bm']['AES']['64B'] = 788429210
+dict_ref['compute']['ssl_bm']['AES']['256B'] = 803323650
+dict_ref['compute']['ssl_bm']['AES']['1024B'] = 808861020
+dict_ref['compute']['ssl_bm']['AES']['8192B'] = 807701160
+
+dict_ref['compute']['ssl_vm'] = {}
+dict_ref['compute']['ssl_vm']['RSA'] = {}
+dict_ref['compute']['ssl_vm']['AES'] = {}
+dict_ref['compute']['ssl_vm']['RSA']['512b'] = 22148.9
+dict_ref['compute']['ssl_vm']['RSA']['1024b'] = 7931.44
+dict_ref['compute']['ssl_vm']['RSA']['2048b'] = 1544.3
+dict_ref['compute']['ssl_vm']['RSA']['4096b'] = 161.92
+dict_ref['compute']['ssl_vm']['AES']['16B'] = 735490250
+dict_ref['compute']['ssl_vm']['AES']['64B'] = 788429210
+dict_ref['compute']['ssl_vm']['AES']['256B'] = 803323650
+dict_ref['compute']['ssl_vm']['AES']['1024B'] = 808861020
+dict_ref['compute']['ssl_vm']['AES']['8192B'] = 807701160
+
+dict_ref['compute']['ramspeed_bm'] = {}
+dict_ref['compute']['ramspeed_bm']['INTmem'] = {}
+dict_ref['compute']['ramspeed_bm']['FLOATmem'] = {}
+dict_ref['compute']['ramspeed_bm']['INTmem']['Average (MB/s)'] = 12268.38
+dict_ref['compute']['ramspeed_bm']['FLOATmem']['Average (MB/s)'] = 9758.79
+
+dict_ref['compute']['ramspeed_vm'] = {}
+dict_ref['compute']['ramspeed_vm']['INTmem'] = {}
+dict_ref['compute']['ramspeed_vm']['FLOATmem'] = {}
+dict_ref['compute']['ramspeed_vm']['INTmem']['Average (MB/s)'] = 12147.59
+dict_ref['compute']['ramspeed_vm']['FLOATmem']['Average (MB/s)'] = 9064.09
+
+dict_ref['storage'] = {}
+dict_ref['storage']['fio_bm'] = {}
+dict_ref['storage']['fio_bm']['read'] = {}
+dict_ref['storage']['fio_bm']['write'] = {}
+dict_ref['storage']['fio_bm']['read']['IOPS'] = 6693
+dict_ref['storage']['fio_bm']['write']['IOPS'] = 6688
+
+dict_ref['storage']['fio_vm'] = {}
+dict_ref['storage']['fio_vm']['read'] = {}
+dict_ref['storage']['fio_vm']['write'] = {}
+dict_ref['storage']['fio_vm']['read']['IOPS'] = 2239
+dict_ref['storage']['fio_vm']['write']['IOPS'] = 2237
+
+dict_ref['network'] = {}
+dict_ref['network']['iperf_bm'] = {}
+dict_ref['network']['iperf_vm'] = {}
+dict_ref['network']['iperf_vm_2'] = {}
+dict_ref['network']['iperf_bm']['throughput received(b/s)'] = 944473000.0
+dict_ref['network']['iperf_vm']['throughput received(b/s)'] = 14416700000.0
+dict_ref['network']['iperf_vm_2']['throughput received(b/s)'] = 2461530000.0
+with open('reference.json', 'w+') as result_json:
+ json.dump(dict_ref, result_json, indent=4, sort_keys=True)
diff --git a/scripts/ref_results/index_calculation.py b/scripts/ref_results/index_calculation.py
new file mode 100644
index 00000000..5ca4a46e
--- /dev/null
+++ b/scripts/ref_results/index_calculation.py
@@ -0,0 +1,41 @@
+import json
+
+
+def compute_index(total_measured, ref_result, count):
+ try:
+ average = float(total_measured / count)
+
+ except ZeroDivisionError:
+ average = 0
+ index = average / ref_result
+ return index
+
+
+def get_reference(*args):
+
+ with open('data/ref_results/reference.json') as reference_file:
+ reference_djson = json.load(reference_file)
+ for arg in args:
+ ref_n = reference_djson.get(str(arg))
+ reference_djson = reference_djson.get(str(arg))
+ return ref_n
+
+
+def generic_index(dict_gen, testcase, reference_num, *args):
+ c = len(args)
+ count = 0
+ total = 0
+ result = 0
+ for k, v in dict_gen.iteritems():
+ dict_temp = dict_gen[k]
+ if dict_gen[k]['name'] == str(testcase):
+ count = count + 1
+ for arg in args:
+ if arg == args[c - 1]:
+ try:
+ result = float(dict_temp.get(str(arg)))
+ except ValueError:
+ result = float(dict_temp.get(str(arg))[:-1]) * 1000
+ dict_temp = dict_temp.get(str(arg))
+ total = total + result
+ return compute_index(total, reference_num, count)
diff --git a/scripts/ref_results/network_benchmarks_indices.py b/scripts/ref_results/network_benchmarks_indices.py
new file mode 100644
index 00000000..c19d18eb
--- /dev/null
+++ b/scripts/ref_results/network_benchmarks_indices.py
@@ -0,0 +1,20 @@
+from index_calculation import generic_index as get_index
+from index_calculation import get_reference
+from result_accum import result_concat as concat
+
+
+def iperf_index():
+ iperf_dict = concat('results/iperf/')
+ iperf_bm_ref = get_reference('network', 'iperf_bm', 'throughput received(b/s)')
+ iperf_bm_index = get_index(iperf_dict, 'iperf_bm', iperf_bm_ref, 'details', 'bandwidth', 'received_throughput')
+ iperf_vm_ref = get_reference('network', 'iperf_vm', 'throughput received(b/s)')
+ iperf_vm_index = get_index(iperf_dict, 'iperf_vm', iperf_vm_ref, 'details', 'bandwidth', 'received_throughput')
+
+ iperf_vm_2_ref = get_reference('network', 'iperf_vm_2', 'throughput received(b/s)')
+ iperf_vm_2_index = get_index(iperf_dict, 'iperf_vm_2', iperf_vm_2_ref, 'details', 'bandwidth', 'received_throughput')
+ iperf_index = float(iperf_bm_index + iperf_vm_index + iperf_vm_2_index) / 3
+ print iperf_index
+ iperf_dict_i = {}
+ iperf_dict_i['index'] = iperf_index
+ iperf_dict_i['results'] = iperf_dict
+ return iperf_dict_i
diff --git a/scripts/ref_results/reference.json b/scripts/ref_results/reference.json
new file mode 100644
index 00000000..cfcbfc3b
--- /dev/null
+++ b/scripts/ref_results/reference.json
@@ -0,0 +1,97 @@
+{
+ "compute": {
+ "dhrystone_bm": {
+ "multi_cpu": 103362.1,
+ "single_cpu": 3231.7
+ },
+ "dhrystone_vm": {
+ "multi_cpu": 10585.8,
+ "single_cpu": 2953.6
+ },
+ "dpi_bm": 8.12,
+ "dpi_vm": 22.12,
+ "ramspeed_bm": {
+ "FLOATmem": {
+ "Average (MB/s)": 9758.79
+ },
+ "INTmem": {
+ "Average (MB/s)": 12268.38
+ }
+ },
+ "ramspeed_vm": {
+ "FLOATmem": {
+ "Average (MB/s)": 9064.09
+ },
+ "INTmem": {
+ "Average (MB/s)": 12147.59
+ }
+ },
+ "ssl_bm": {
+ "AES": {
+ "1024B": 808861020,
+ "16B": 735490250,
+ "256B": 803323650,
+ "64B": 788429210,
+ "8192B": 807701160
+ },
+ "RSA": {
+ "1024b": 7931.44,
+ "2048b": 1544.3,
+ "4096b": 161.92,
+ "512b": 22148.9
+ }
+ },
+ "ssl_vm": {
+ "AES": {
+ "1024B": 808861020,
+ "16B": 735490250,
+ "256B": 803323650,
+ "64B": 788429210,
+ "8192B": 807701160
+ },
+ "RSA": {
+ "1024b": 7931.44,
+ "2048b": 1544.3,
+ "4096b": 161.92,
+ "512b": 22148.9
+ }
+ },
+ "whetstone_bm": {
+ "multi_cpu": 41483.3,
+ "single_cpu": 806.1
+ },
+ "whetstone_vm": {
+ "multi_cpu": 2950.6,
+ "single_cpu": 789.0
+ }
+ },
+ "network": {
+ "iperf_bm": {
+ "throughput received(b/s)": 944473000.0
+ },
+ "iperf_vm": {
+ "throughput received(b/s)": 14416700000.0
+ },
+ "iperf_vm_2": {
+ "throughput received(b/s)": 2461530000.0
+ }
+ },
+ "storage": {
+ "fio_bm": {
+ "read": {
+ "IOPS": 6693
+ },
+ "write": {
+ "IOPS": 6688
+ }
+ },
+ "fio_vm": {
+ "read": {
+ "IOPS": 2239
+ },
+ "write": {
+ "IOPS": 2237
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/scripts/ref_results/result_accum.py b/scripts/ref_results/result_accum.py
new file mode 100644
index 00000000..6cd55886
--- /dev/null
+++ b/scripts/ref_results/result_accum.py
@@ -0,0 +1,31 @@
+import os
+import json
+
+
+def result_concat(targ_dir):
+ list_vm = []
+ list_bm = []
+ diction = {}
+
+ for file in os.listdir(targ_dir):
+ if file.endswith(".json"):
+ if file.startswith("instance"):
+ print str(file)
+ list_vm.append(file)
+ else:
+ list_bm.append(file)
+ l = len(list_bm)
+ k = len(list_vm)
+
+ for x in range(0, l):
+ file_t = list_bm[x]
+ with open(targ_dir + file_t) as result_file:
+ result_djson = json.load(result_file)
+ diction['Baremetal' + str(int(x + 1))] = result_djson
+
+ for x in range(0, k):
+ file_t = list_vm[x]
+ with open(targ_dir + file_t) as result_file:
+ result_djson = json.load(result_file)
+ diction['Virtual Machine ' + str(x + 1)] = result_djson
+ return diction
diff --git a/scripts/ref_results/storage_benchmarks_indices.py b/scripts/ref_results/storage_benchmarks_indices.py
new file mode 100644
index 00000000..a5aef638
--- /dev/null
+++ b/scripts/ref_results/storage_benchmarks_indices.py
@@ -0,0 +1,29 @@
+from index_calculation import generic_index as get_index
+from index_calculation import get_reference
+from result_accum import result_concat as concat
+
+
+def fio_index():
+ fio_dict = concat('results/fio/')
+ fio_r_bm_ref = get_reference('storage', 'fio_bm', 'read', 'IOPS')
+ fio_r_bm_index = get_index(fio_dict, 'fio_bm', fio_r_bm_ref, 'details', 'job_0', 'read', 'io_ps')
+ fio_w_bm_ref = get_reference('storage', 'fio_bm', 'write', 'IOPS')
+ fio_w_bm_index = get_index(fio_dict, 'fio_bm', fio_w_bm_ref, 'details', 'job_0', 'write', 'io_ps')
+
+ fio_bm_index = (fio_r_bm_index + fio_w_bm_index) / 2
+
+ fio_r_vm_ref = get_reference('storage', 'fio_vm', 'read', 'IOPS')
+ fio_r_vm_index = get_index(fio_dict, 'fio_vm', fio_r_vm_ref, 'details', 'job_0', 'read', 'io_ps')
+
+ fio_w_vm_ref = get_reference('storage', 'fio_vm', 'write', 'IOPS')
+ fio_w_vm_index = get_index(fio_dict, 'fio_vm', fio_w_vm_ref, 'details', 'job_0', 'write', 'io_ps')
+
+ fio_vm_index = (fio_r_vm_index + fio_w_vm_index) / 2
+
+ fio_index = (fio_bm_index + fio_vm_index) / 2
+ print fio_index
+
+ fio_dict_i = {}
+ fio_dict_i['index'] = fio_index
+ fio_dict_i['results'] = fio_dict
+ return fio_dict_i
diff --git a/scripts/ref_results/suite_result.py b/scripts/ref_results/suite_result.py
new file mode 100644
index 00000000..d0b4647f
--- /dev/null
+++ b/scripts/ref_results/suite_result.py
@@ -0,0 +1,55 @@
+##############################################################################
+# 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 json
+import importlib
+import sys
+from utils import logger_utils
+
+logger = logger_utils.QtipLogger('suite_result').get
+
+
+def get_benchmark_result(benchmark_name, suite_name):
+ benchmark_indices = importlib.import_module('{0}_benchmarks_indices'.format(suite_name))
+ methodToCall = getattr(benchmark_indices, '{0}_index'.format(benchmark_name))
+ return methodToCall()
+
+
+def get_suite_result(suite_name):
+ suite_dict = {}
+ suite_bench_list = {'compute': ['DPI', 'Dhrystone', 'Whetstone', 'SSL', 'RamSpeed'],
+ 'storage': ['FIO'],
+ 'network': ['IPERF']}
+ temp = 0
+ l = len(suite_bench_list[suite_name])
+ for benchmark in suite_bench_list[suite_name]:
+ try:
+ suite_dict[benchmark] = get_benchmark_result(benchmark.lower(), suite_name)
+ temp = temp + float(suite_dict[benchmark]['index'])
+ except OSError:
+ l = l - 1
+ pass
+
+ if l == 0:
+ logger.info("No {0} suite results found".format(suite_name))
+ return False
+ else:
+ suite_index = temp / l
+ suite_dict_f = {'index': suite_index,
+ 'suite_results': suite_dict}
+ with open('results/{0}_result.json'.format(suite_name), 'w+') as result_json:
+ json.dump(suite_dict_f, result_json, indent=4, sort_keys=True)
+ return True
+
+
+def main():
+ get_suite_result(sys.argv[1])
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/ssh_exch.exp b/scripts/ssh_exch.exp
new file mode 100644
index 00000000..c52140b7
--- /dev/null
+++ b/scripts/ssh_exch.exp
@@ -0,0 +1,9 @@
+#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