#!/bin/bash

##
# Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U.
# This file is part of openvim
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# For those usages not covered by the Apache License, Version 2.0 please
# contact with: nfvlabs@tid.es
##

#
#author Alfonso Tierno
#
#script to test openvim with the creation of flavors and interfaces, openflow rules
#using images already inserted
#

function usage(){
    echo -e "usage: ${BASH_SOURCE[0]} [OPTIONS] \n  test openvim "
    echo -e "  OPTIONS:"
    echo -e "    -f --force       does not prompt for confirmation"
    echo -e "    -v --same-vlan   use this if the parameter 'of_controller_nets_with_same_vlan'"
    echo -e "                     is not false at openvimd.cfg to avoid test unrealizable openflow nets"
    echo -e "    -h --help        shows this help"
    echo -e "    -c --create      create management network and two images (valid for test mode)"
    echo
    echo    "This script test openvim, creating flavors, images, vms, de-attaching dataplane port"
    echo    "from one network to other and testing openflow generated rules."
    echo    "By default (unless -c option) uses and already created management network and two valid images."
    echo    "If -c option is set, it creates the network and images with fake content (only usefull for"
    echo    "openvim in 'test' mode) This is speccified in this shell variables:"
    echo    "     VIM_TEST_NETWORK_INTERNET name of the mamagement network to use"
    echo    "     VIM_TEST_IMAGE_PATH       path of a vm image to use, the image is created if not exist"
    echo    "     VIM_TEST_IMAGE_PATH_EXTRA path of another vm image to use, the image is created if not exist"
}

#detect if is called with a source to use the 'exit'/'return' command for exiting
[[ ${BASH_SOURCE[0]} != $0 ]] && echo "Do not execute this script as SOURCE" >&2 && return 1

#check correct arguments
force=n
same_vlan=n
create=n
for param in $*
do
   if [[ $param == -h ]] || [[ $param == --help ]]
   then
       usage
       exit 0
   elif [[ $param == -v ]] || [[ $param == --same-vlan ]]
   then
       same_vlan=y
   elif [[ $param == -f ]] || [[ $param == --force ]]
   then
       force=y
   elif [[ $param == -c ]] || [[ $param == --create ]]
   then
       create=y
   else
       echo "invalid argument '$param'?" &&  usage >&2 && exit 1
   fi
done

#detect if environment variables are set
fail=""
[[ $create == n ]] && [[ -z $VIM_TEST_NETWORK_INTERNET ]] && echo "VIM_TEST_NETWORK_INTERNET not defined" >&2 && fail=1
[[ $create == n ]] && [[ -z $VIM_TEST_IMAGE_PATH ]] && echo "VIM_TEST_IMAGE_PATH not defined" >&2 && fail=1
[[ $create == n ]] && [[ -z $VIM_TEST_IMAGE_PATH_EXTRA ]] && echo "VIM_TEST_IMAGE_PATH_EXTRA not defined" >&2 && fail=1
[[ -n $fail ]] && exit 1

[[ $create == y ]] && [[ -z $VIM_TEST_IMAGE_PATH ]] &&       VIM_TEST_IMAGE_PATH="/test/path/of/image1"
[[ $create == y ]] && [[ -z $VIM_TEST_IMAGE_PATH_EXTRA ]] && VIM_TEST_IMAGE_PATH_EXTRA="/test/path2/of/image2"
TODELETE=""
export _exit=delete_and_exit

function delete_and_exit(){
  echo
  [[ $force != y ]] && read -e -p "  Press enter to delete the deployed things " kk
  echo
  for f in $TODELETE
  do
      openvim ${f%%:*}-delete  ${f##*:} -f
  done
  exit $1
}


function is_valid_uuid(){
    echo "$1" | grep -q -E '^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$' && return 0
    return 1
}

function process_cmd(){
  # test the result of the previos command, if fails execute the $_exit command
  # params:
  #   uuid <variable> <result...>  : test that the first word of <result> is a valid uuid, stored it at <variable>. Print uuid
  #   fail <reason>   <result...>  : test that the previous command has failed. If not print the <reason> why it needs to fail
  #   ok   <result...>             : test that the previos command has not failed. Print OK
  cmd_result=$?
  if [[ $1 == uuid ]]
  then
    [[ $cmd_result == 0 ]] || ! shift 2 || ! echo "FAIL: $*" >&2 || $_exit 1
    is_valid_uuid $3 || ! shift 2 || ! echo "FAIL: $*" >&2 || $_exit 1
    eval $2=$3
    echo $3
  elif [[ $1 == fail ]]
  then
    [[ $cmd_result != "0" ]] || ! echo "NOT FAIL:  $2" >&2 || $_exit 1
    echo "fail OK" 
  elif  [[ $1 == ok ]]
  then
    [[ $cmd_result == 0 ]] || ! shift 1 || ! echo "FAIL: $*" >&2 || $_exit 1
    echo OK
  fi

}

function test_of_rules(){
  #test the number of rules of a network, wait until 10 seconds
  timeout_=10
  while true 
  do #it can take some seconds to get it ready
    result=`openvim openflow-net-list $1`
    nb_rules=`echo $result | grep actions -o | wc -l`
    [[ $nb_rules == $2 ]] && echo "OK" && break
    [[ $timeout_ == 0 ]] && echo "FAIL $result" >&2 && $_exit 1  
    sleep 1
    timeout_=$((timeout_ - 1))
  done
}

echo " Test VIM with 3 VM deployments. It delete the created items at the end"
echo " "
[[ $force != y ]] && read -e -p "Press enter to continue, CTRL+C to abort " kk


printf "%-50s" "1   get ${VIM_TEST_IMAGE_PATH##*/} image: "
image1=`openvim image-list -F"path=${VIM_TEST_IMAGE_PATH}" | gawk '{print $1}'`
if is_valid_uuid $image1 
then
    echo $image1
else
    #create the image
    echo not found
    printf "%-50s" " b  create ${VIM_TEST_IMAGE_PATH##*/} image: "
    result=`openvim image-create --name=test-image1 --path=${VIM_TEST_IMAGE_PATH} --description=for-test`
    process_cmd uuid image1 $result
    TODELETE="image:$image1 $TODELETE"
fi
    
printf "%-50s" "2   get ${VIM_TEST_IMAGE_PATH_EXTRA##*/} image: "
image2=`openvim image-list -F"path=${VIM_TEST_IMAGE_PATH_EXTRA}" | gawk '{print $1}'`
if is_valid_uuid $image2 
then
    echo $image2
else
    #create the image
    echo not found
    printf "%-50s" " b  create ${VIM_TEST_IMAGE_PATH_EXTRA##*/} image: "
    result=`openvim image-create --name=test-image1 --path=${VIM_TEST_IMAGE_PATH_EXTRA} --description=for-test`
    process_cmd uuid image2 $result
    TODELETE="image:$image2 $TODELETE"
fi
    
if [[ $create == y ]]
then
    printf "%-50s" "3   create management network: "
    result=`openvim net-create "name: test_mgmt_net
type: bridge_man"`
    process_cmd uuid network_eth0 $result
    TODELETE="net:$network_eth0 $TODELETE"
else
    printf "%-50s" "3   get ${VIM_TEST_NETWORK_INTERNET} network: "
    result=`openvim net-list -F"name=$VIM_TEST_NETWORK_INTERNET"`
    process_cmd uuid network_eth0 $result
fi

printf "%-50s" "4   insert flavor1: "
result=`openvim flavor-create '
---
flavor:
  name: flavor1
  description: flavor to test openvim
  extended: 
    processor_ranking: 205
    numas:
    -  memory: 8
       paired-threads: 5
       interfaces:
       - name: xe0
         dedicated: "yes"
         bandwidth: "10 Gbps"
         vpci: "0000:00:10.0"
         #mac_address: "10:10:10:10:10:12"
       - name: xe1
         dedicated: "no"
         bandwidth: "10 Gbps"
         vpci: "0000:00:11.0"
         mac_address: "10:10:10:10:10:13"
'`
process_cmd uuid flavor1 $result 
TODELETE="flavor:$flavor1 $TODELETE"

printf "%-50s" "5   insert net_ptp: "
result=`openvim net-create '
---
network:
  name: test_net_ptp
  type: ptp
'`
process_cmd uuid net_ptp  $result
TODELETE="net:$net_ptp $TODELETE"

printf "%-50s" " b  insert net_data: "
result=`openvim net-create '
---
network:
  name: test_net_data
  type: data
'`
process_cmd uuid net_data $result
TODELETE="net:$net_data $TODELETE"

printf "%-50s" "6   insert net_bind network bound to net_data: "
result=`openvim net-create 'name: test_net_binded
type: data
bind_net: test_net_data'`
process_cmd uuid net_bind $result
TODELETE="net:$net_bind $TODELETE"

printf "%-50s" "7   insert bridge network net2: "
result=`openvim net-create '
---
network:
  name: test_bridge_net2
  type: bridge_data'`
process_cmd uuid network2 $result
TODELETE="net:$network2 $TODELETE"

printf "%-50s" "8   add VM1 dataplane not connected: "
result=`openvim vm-create "
---
server:
  name: test_VM1
  descrition: US or server with 1 SRIOV 1 PASSTHROUGH
  imageRef: '$image1'
  flavorRef: '$flavor1'
  networks:
  - name: mgmt0
    vpci: '0000:00:0a.0'
    uuid: ${network_eth0}
    mac_address: '10:10:10:10:10:10'
  - name: eth0
    vpci: '0000:00:0b.0'
    uuid: '$network2'
    mac_address: '10:10:10:10:10:11'
"`
process_cmd uuid  server1 $result
TODELETE="vm:$server1 $TODELETE"

printf "%-50s" "9   add VM2 oversubscribe flavor: "
result=`openvim vm-create "
---
server:
  name: test_VM2
  descrition: US or server with direct network attach
  imageRef: '$image1'
  flavorRef: '$flavor1'
  networks:
  - name: mgmt0
    vpci: '0000:00:0a.0'
    uuid: ${network_eth0}
    mac_address: '10:10:10:10:11:10'
  - name: eth0
    vpci: '0000:00:0b.0'
    uuid: '$network2'
    mac_address: '10:10:10:10:11:11'
  extended:
    processor_ranking: 205
    numas:
    -  memory: 8
       threads: 10
       interfaces:
       - name: xe0
         dedicated: 'yes:sriov'
         bandwidth: '10 Gbps'
         vpci: '0000:00:11.0'
         mac_address: '10:10:10:10:11:12'
         uuid: '$net_ptp'
    devices:
    - type: disk
      imageRef: '$image2'
"`
process_cmd uuid  server2 $result
TODELETE="vm:$server2 $TODELETE"

printf "%-50s" "10  test VM with repeated vpci: "
result=`openvim vm-create "
---
server:
  name: test_VMfail
  descrition: repeated mac address
  imageRef: '$image1'
  flavorRef: '$flavor1'
  networks:
  - name: mgmt0
    vpci: '0000:00:10.0'
    uuid: ${network_eth0}
"`
process_cmd fail "Duplicate vpci 0000:00:10.0" $result

printf "%-50s" " b  test VM with repeated mac address: "
result=`openvim vm-create "
---
server:
  name: test_VMfail
  descrition: repeated mac address
  imageRef: '$image1'
  flavorRef: '$flavor1'
  networks:
  - name: mgmt0
    vpci: '0000:00:0a.0'
    uuid: ${network_eth0}
    mac_address: '10:10:10:10:10:10'
"`
process_cmd fail "Duplicate mac 10:10:10:10:10:10" $result


printf "%-50s" " c  test VM with wrong iface name at networks: "
result=`openvim vm-create "
---
server:
  name: test_VMfail
  descrition: repeated mac address
  imageRef: '$image1'
  flavorRef: '$flavor1'
  networks:
  - name: missing
    type: PF
    uuid: '$net_ptp'
"`
process_cmd fail "wrong iface name at networks" $result


printf "%-50s" " d  test VM with wrong iface type at networks: "
result=`openvim vm-create "
---
server:
  name: test_VMfail
  descrition: repeated mac address
  imageRef: '$image1'
  flavorRef: '$flavor1'
  networks:
  - name: xe0
    type: VF
    uuid: '$net_ptp'
"`
process_cmd fail "wrong iface type at networks" $result


printf "%-50s" "11  add VM3 dataplane connected: "
result=`openvim vm-create "
---
server:
  name: test_VM3
  descrition: US or server with 2 dataplane connected
  imageRef: '$image1'
  flavorRef: '$flavor1'
  networks:
  - name: mgmt0
    vpci: '0000:00:0a.0'
    uuid: ${network_eth0}
    mac_address: '10:10:10:10:12:10'
  - name: eth0
    vpci: '0000:00:0b.0'
    uuid: '$network2'
    type: virtual
    mac_address: '10:10:10:10:12:11'
  - name: xe0
    type: PF
    uuid: '$net_data'
  - name: xe1
    type: VF
    uuid: '$net_ptp'
    mac_address: '10:10:10:10:12:13'
"`
process_cmd uuid server3 $result
TODELETE="vm:$server3 $TODELETE"

printf "%-50s" "12  check 2 openflow rules for net_ptp: "
test_of_rules $net_ptp 2

printf "%-50s" "13  check net-down  net_ptp: "
result=`openvim net-down -f ${net_ptp}`
process_cmd ok $result

printf "%-50s" " b  check 0 openflow rules for net_ptp: "
test_of_rules $net_ptp 0

printf "%-50s" " c  check net-up  net_ptp: "
result=`openvim net-up -f ${net_ptp}`
process_cmd ok $result

printf "%-50s" " d  check 2 openflow rules for net_ptp: "
test_of_rules $net_ptp 2

printf "%-50s" "14  check 0 openflow rules for net_data: "
test_of_rules $net_data 0

[[ $force != y ]] && read -e -p "  Test control plane, and server2:xe0 to server3:xe1 connectivity. Press enter to continue " kk

printf "%-50s" "15  get xe0 iface uuid from server1: "
result=`openvim port-list -F"device_id=${server1}&name=xe0"`
process_cmd uuid server1_xe0 $result

printf "%-50s" " b  get xe1 iface uuid from server1: "
result=`openvim port-list -F"device_id=${server1}&name=xe1"`
process_cmd uuid server1_xe1 $result

printf "%-50s" " c  get xe0 iface uuid from server3: "
result=`openvim port-list -F"device_id=${server3}&name=xe0"`
process_cmd uuid server3_xe0 $result

printf "%-50s" " d  get xe1 iface uuid from server3: "
result=`openvim port-list -F"device_id=${server3}&name=xe1"`
process_cmd uuid server3_xe1 $result

printf "%-50s" " e  get xe0 iface uuid from server3: "
result=`openvim port-list -F"device_id=${server2}&name=xe0"`
process_cmd uuid server2_xe0 $result

printf "%-50s" "16  test ptp 3connex server1:xe0 -> net_ptp: "
result=`openvim port-edit $server1_xe0 "network_id: $net_ptp" -f`
process_cmd fail "Can not connect 3 interfaces to ptp network"

printf "%-50s" "17  attach server1:xe0 to net_data: "
result=`openvim port-edit $server1_xe0 "network_id: $net_data" -f`
process_cmd ok $result

printf "%-50s" "18  check 2 openflow rules for net_data: "
test_of_rules $net_data 2

[[ $force != y ]] && read -e -p "  Test server1:xe0 to server3:xe0 connectivity. Press enter to continue " kk

if [[ $same_vlan == n ]]
then

  printf "%-50s" "19  attach server1:xe1 to net-data: "
  result=`openvim port-edit $server1_xe1 "network_id: $net_data" -f`
  process_cmd ok $result

  printf "%-50s" " b  check 9 openflow rules for net_data: "
  test_of_rules $net_data 9

  [[ $force != y ]] && read -e -p "  Test server1:xe0,server1:xe1,server3:xe0 connectivity. Press enter to continue " kk

  printf "%-50s" " c  re-attach server3:xe1 to net-data: "
  result=`openvim port-edit $server3_xe1 "network_id: $net_data" -f`
  process_cmd ok $result

  printf "%-50s" " d  check 16 openflow rules for net_data: "
  test_of_rules $net_data 16

  printf "%-50s" " e  check 0 openflow rules for net_ptp: "
  test_of_rules $net_ptp 0

  [[ $force != y ]] && read -e -p "  Test server1:xe0,server1:xe1,server3:xe0,server3:xe1 connectivity. Press enter to continue " kk

  printf "%-50s" " f  detach server1:xe1 from net-data: "
  result=`openvim port-edit $server1_xe1 "network_id: null" -f `
  process_cmd ok $result

  printf "%-50s" " g  detach server3:xe1 to net-data: "
  result=`openvim port-edit $server3_xe1 "network_id: null" -f`
  process_cmd ok $result

  printf "%-50s" " h  check 2 openflow rules for net_data: "
  test_of_rules $net_data 2

else
  echo "19  skipping unrealizable test because --same_vlan option "
fi

printf "%-50s" "20  check 2 openflow rules for net_data: "
test_of_rules $net_data 2

printf "%-50s" " a  attach server2:xe0 to net_bind: "
result=`openvim port-edit $server2_xe0 "network_id: $net_bind" -f`
process_cmd ok $result

printf "%-50s" " b  check 6 openflow rules for net_data: "
   #type      src_net	   src_port    => dst_port       dst_net
   #unicast   net_data     server1:xe0 => server3:xe0    net_data
   #unicast   net_data     server3:xe0 => server1:xe0    net_data
   #unicast   net_data     server1:xe0 => server2:xe0    net_bind
   #unicast   net_data     server3:xe0 => server2:xe0    net_bind
   #broadcast net_data     server1:xe0 => server3:xe0,server2:xe0    net_data,net_bind
   #broadcast net_data     server3:xe0 => server1:xe0,server2:xe0    net_data,net_bind
test_of_rules $net_data 6


printf "%-50s" " c  check 3 openflow rules for net_bind: "
   #type      src_net	   src_port    => dst_port       dst_net
   #unicast   net_bind     server2:xe0 => server1:xe0    net_data
   #unicast   net_bind     server2:xe0 => server3:xe0    net_data
   #broadcast net_bind     server2:xe0 => server1:xe0,server3:xe0    net_data,net_data
test_of_rules $net_bind 3

printf "%-50s" " d  attach server1:xe1 to net_bind: "
result=`openvim port-edit $server1_xe1 "network_id: $net_bind" -f`
process_cmd ok $result

printf "%-50s" " e  check 8 openflow rules for net_data: "
   #type      src_net      src_port    => dst_port       dst_net
   #unicast   net_data     server1:xe0 => server3:xe0    net_data
   #unicast   net_data     server3:xe0 => server1:xe0    net_data
   #unicast   net_data     server1:xe0 => server2:xe0    net_bind
   #unicast   net_data     server1:xe0 => server1:xe1    net_bind
   #unicast   net_data     server3:xe0 => server2:xe0    net_bind
   #unicast   net_data     server3:xe0 => server1:xe1    net_bind
   #broadcast net_data     server1:xe0 => server3:xe0,server2:xe0,server1:xe1    net_data,net_bind,net_bind
   #broadcast net_data     server3:xe0 => server1:xe0,server2:xe0,server1:xe1    net_data,net_bind,net_bind
test_of_rules $net_data 8


printf "%-50s" " f  check 8 openflow rules for net_bind: "
test_of_rules $net_bind 8

printf "%-50s" " d  put net_data down: "
result=`openvim net-down $net_data -f`
process_cmd ok $result

printf "%-50s" " e  check 0 openflow rules for net_data: "
test_of_rules $net_data 0

printf "%-50s" " e  check 2 openflow rules for net_bind: "
test_of_rules $net_bind 2



echo 
echo DONE

$_exit 0

