Merge "Bugfix: Add missing dashes"
authorliang gao <jean.gaoliang@huawei.com>
Fri, 2 Sep 2016 10:38:14 +0000 (10:38 +0000)
committerGerrit Code Review <gerrit@172.30.200.206>
Fri, 2 Sep 2016 10:38:14 +0000 (10:38 +0000)
etc/yardstick/nodes/fuel_baremetal/pod.yaml [new file with mode: 0644]
tests/ci/docker/yardstick-ci/Dockerfile
tests/ci/prepare_env.sh
tests/ci/yardstick-verify
tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-ha_daily.yaml
tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-noha_daily.yaml
tools/ubuntu-server-cloudimg-modify.sh
tools/yardstick-img-modify

diff --git a/etc/yardstick/nodes/fuel_baremetal/pod.yaml b/etc/yardstick/nodes/fuel_baremetal/pod.yaml
new file mode 100644 (file)
index 0000000..7392ae1
--- /dev/null
@@ -0,0 +1,43 @@
+---
+# sample config file about the POD information, including the
+# name/IP/user/ssh key of Bare Metal and Controllers/Computes
+#
+# The options of this config file include:
+# name: the name of this node
+# role: node's role, support role: Master/Controller/Comupte/BareMetal
+# ip: the node's IP address
+# user: the username for login
+# key_filename:the path of the private key file for login
+# ipX: the ips of the nodes will be fetched by prepare_env.sh and replaced here
+
+nodes:
+-
+    name: node1
+    role: Controller
+    ip: ip1
+    user: root
+    password: root
+-
+    name: node2
+    role: Controller
+    ip: ip2
+    user: root
+    password: root
+-
+    name: node3
+    role: Controller
+    ip: ip3
+    user: root
+    password: root
+-
+    name: node4
+    role: Compute
+    ip: ip4
+    user: root
+    password: root
+-
+    name: node5
+    role: Compute
+    ip: ip5
+    user: root
+    password: root
index da755d1..5387bab 100644 (file)
@@ -17,8 +17,19 @@ ENV REPOS_DIR /home/opnfv/repos
 # Yardstick repo
 ENV YARDSTICK_REPO_DIR ${REPOS_DIR}/yardstick
 ENV RELENG_REPO_DIR ${REPOS_DIR}/releng
+RUN sed -i -e 's/^deb /deb [arch=amd64] /g' /etc/apt/sources.list
+RUN sed -i -e 's/^deb-src /# deb-src /g' /etc/apt/sources.list
+RUN echo "\n\
+deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty main universe multiverse restricted \n\
+deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-updates main universe multiverse restricted \n\
+deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-security main universe multiverse restricted \n\
+deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ trusty-proposed main universe multiverse restricted" >> /etc/apt/sources.list
+RUN echo "vm.mmap_min_addr = 0" > /etc/sysctl.d/mmap_min_addr.conf
+RUN dpkg --add-architecture arm64
 
 RUN apt-get update && apt-get install -y \
+    qemu-user-static \
+    libc6:arm64 \
     wget \
     expect \
     curl \
index d9f8257..bbd7b55 100755 (executable)
@@ -83,5 +83,38 @@ if [ "$INSTALLER_TYPE" == "fuel" ]; then
     echo "Fetching id_rsa file from jump_server $INSTALLER_IP..."
     sshpass -p r00tme scp 2>/dev/null $ssh_options \
     root@${INSTALLER_IP}:~/.ssh/id_rsa /root/.ssh/id_rsa &> /dev/null
-fi
 
+    ARCH_SCRIPT="test -f /etc/fuel_openstack_arch && grep -q arm64 /etc/fuel_openstack_arch"
+    YARD_IMG_ARCH=amd64
+    sshpass -p r00tme ssh $ssh_options -l root $INSTALLER_IP "${ARCH_SCRIPT}" && YARD_IMG_ARCH=arm64
+    export YARD_IMG_ARCH
+
+    if ! grep -q "Defaults env_keep += \"YARD_IMG_ARCH\"" "/etc/sudoers"; then
+        sudo echo "Defaults env_keep += \"YARD_IMG_ARCH YARDSTICK_REPO_DIR\"" >> /etc/sudoers
+    fi
+
+    sshpass -p r00tme ssh 2>/dev/null $ssh_options \
+        root@${INSTALLER_IP} fuel node>fuel_node
+
+    controller_ips=($(cat fuel_node|grep controller|awk '{print $10}'))
+    compute_ips=($(cat fuel_node|grep compute|awk '{print $10}'))
+
+    pod_yaml="./etc/yardstick/nodes/fuel_baremetal/pod.yaml"
+
+    if [[ ${controller_ips[0]} ]]; then
+        sed -i "s/ip1/${controller_ips[0]}/" $pod_yaml;
+    fi
+    if [[ ${controller_ips[1]} ]]; then
+        sed -i "s/ip2/${controller_ips[1]}/" $pod_yaml;
+    fi
+    if [[ ${controller_ips[2]} ]]; then
+        sed -i "s/ip3/${controller_ips[2]}/" $pod_yaml;
+    fi
+    if [[ ${compute_ips[0]} ]]; then
+        sed -i "s/ip4/${compute_ips[0]}/" $pod_yaml;
+    fi
+    if [[ ${compute_ips[1]} ]]; then
+        sed -i "s/ip5/${compute_ips[1]}/" $pod_yaml;
+    fi
+
+fi
index 859c92c..5ac0850 100755 (executable)
@@ -44,7 +44,13 @@ DISPATCHER_TYPE=file
 DISPATCHER_FILE_NAME="/tmp/yardstick.out"
 DISPATCHER_HTTP_TARGET="http://testresults.opnfv.org/test/api/v1/results"
 DISPATCHER_INFLUXDB_TARGET=
-
+UCA_HOST="cloud-images.ubuntu.com"
+if [ $YARD_IMG_ARCH = "arm64" ]; then
+    export VIVID_IMG_URL="http://${UCA_HOST}/vivid/current/vivid-server-cloudimg-arm64.tar.gz"
+    if ! grep -q "Defaults env_keep += \"VIVID_IMG_URL\"" "/etc/sudoers"; then
+        sudo echo "Defaults env_keep += \"VIVID_IMG_URL\"" >> /etc/sudoers
+    fi
+fi
 while getopts "r:i:h" OPTION; do
     case $OPTION in
         h)
@@ -80,7 +86,8 @@ cleanup()
         return
     fi
 
-    for image in $(glance image-list | grep -e cirros-0.3.3 -e yardstick-trusty-server -e Ubuntu-14.04 | awk '{print $2}'); do
+    for image in $(glance image-list | grep -e cirros-0.3.3 -e yardstick-trusty-server -e Ubuntu-14.04 \
+        -e yardstick-vivid-kernel | awk '{print $2}'); do
         echo "Deleting image $image..."
         glance image-delete $image || true
     done
@@ -232,12 +239,43 @@ load_yardstick_image()
 {
     echo
     echo "========== Loading yardstick cloud image =========="
+    EXTRA_PARAMS=""
+    if [ $YARD_IMG_ARCH = "arm64" ]; then
+        VIVID_IMAGE="/tmp/vivid-server-cloudimg-arm64.tar.gz"
+        VIVID_KERNEL="/tmp/vivid-server-cloudimg-arm64-vmlinuz-generic"
+        cd /tmp
+        if [ ! -f $VIVID_IMAGE ]; then
+            wget $VIVID_IMG_URL
+        fi
+        if [ ! -f $VIVID_KERNEL ]; then
+            tar zxf $VIVID_IMAGE $(basename $VIVID_KERNEL)
+        fi
+        create_vivid_kernel=$(glance --os-image-api-version 1 image-create \
+                --name yardstick-vivid-kernel \
+                --is-public true --disk-format qcow2 \
+                --container-format bare \
+                --file $VIVID_KERNEL)
+
+        GLANCE_KERNEL_ID=$(echo "$create_vivid_kernel" | grep " id " | awk '{print $(NF-1)}')
+        if [ -z "$GLANCE_KERNEL_ID" ]; then
+            echo 'Failed uploading kernel to cloud'.
+            exit 1
+        fi
+
+        command_line="root=/dev/vdb1 console=tty0 console=ttyS0 console=ttyAMA0 rw"
 
-    output=$(glance --os-image-api-version 1 image-create \
+        EXTRA_PARAMS="--property kernel_id=$GLANCE_KERNEL_ID --property os_command_line=\"$command_line\""
+
+        rm -f $VIVID_KERNEL $VIVID_IMAGE
+        cd $YARDSTICK_REPO_DIR
+    fi
+    output=$(eval glance --os-image-api-version 1 image-create \
         --name yardstick-trusty-server \
         --is-public true --disk-format qcow2 \
         --container-format bare \
+        $EXTRA_PARAMS \
         --file $QCOW_IMAGE)
+
     echo "$output"
 
     GLANCE_IMAGE_ID=$(echo "$output" | grep " id " | awk '{print $(NF-1)}')
@@ -436,10 +474,18 @@ main()
 
     build_yardstick_image
     load_yardstick_image
-    load_cirros_image
-    load_ubuntu_image
+    if [ $YARD_IMG_ARCH = "arm64" ]; then
+        sed -i 's/image: cirros-0.3.3/image: TestVM/g' tests/opnfv/test_cases/opnfv_yardstick_tc002.yaml \
+        samples/ping.yaml
+        #We have overlapping IP with the real network
+        for filename in tests/opnfv/test_cases/*; do
+            sed -i "s/cidr: '10.0.1.0\/24'/cidr: '10.3.1.0\/24'/g" $filename
+        done
+    else
+        load_cirros_image
+        load_ubuntu_image
+    fi
     create_nova_flavor
-
     install_storperf
     run_test
     remove_storperf
index 639e18e..84d630c 100644 (file)
@@ -7,40 +7,10 @@ name: "os-odl_l2-bgpvpn-ha"
 test_cases_dir: "tests/opnfv/test_cases/"
 test_cases:
 -
-  file_name: opnfv_yardstick_tc002.yaml
--
-  file_name: opnfv_yardstick_tc005.yaml
--
-  file_name: opnfv_yardstick_tc010.yaml
--
-  file_name: opnfv_yardstick_tc011.yaml
--
-  file_name: opnfv_yardstick_tc012.yaml
--
-  file_name: opnfv_yardstick_tc014.yaml
--
-  file_name: opnfv_yardstick_tc037.yaml
--
-  file_name: opnfv_yardstick_tc055.yaml
-  constraint:
-      installer: compass
-      pod: huawei-pod1
-  task_args:
-      huawei-pod1: '{"pod_info": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
-      "host": "node5.yardstick-TC055"}'
--
-  file_name: opnfv_yardstick_tc063.yaml
-  constraint:
-      installer: compass
-      pod: huawei-pod1
-  task_args:
-      huawei-pod1: '{"pod_info": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
-      "host": "node5.yardstick-TC063"}'
--
-  file_name: opnfv_yardstick_tc075.yaml
+  file_name: opnfv_yardstick_tc043.yaml
   constraint:
-      installer: compass
-      pod: huawei-pod1
+      installer: fuel
+      pod: ericsson-pod2
   task_args:
-      huawei-pod1: '{"pod_info": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
-      "host": "node1.LF"}'
+      ericsson-pod2: '{"pod_info": "etc/yardstick/nodes/fuel_baremetal/pod.yaml",
+      "host": "node1.LF","target": "node2.LF"}'
index 372041f..a9e272a 100644 (file)
@@ -7,32 +7,10 @@ name: "os-odl_l2-bgpvpn-noha"
 test_cases_dir: "tests/opnfv/test_cases/"
 test_cases:
 -
-  file_name: opnfv_yardstick_tc002.yaml
--
-  file_name: opnfv_yardstick_tc005.yaml
--
-  file_name: opnfv_yardstick_tc010.yaml
--
-  file_name: opnfv_yardstick_tc011.yaml
--
-  file_name: opnfv_yardstick_tc012.yaml
--
-  file_name: opnfv_yardstick_tc014.yaml
--
-  file_name: opnfv_yardstick_tc037.yaml
--
-  file_name: opnfv_yardstick_tc055.yaml
-  constraint:
-      installer: compass
-      pod: huawei-pod1
-  task_args:
-      huawei-pod1: '{"pod_info": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
-      "host": "node5.yardstick-TC055"}'
--
-  file_name: opnfv_yardstick_tc063.yaml
+  file_name: opnfv_yardstick_tc043.yaml
   constraint:
-      installer: compass
-      pod: huawei-pod1
+      installer: fuel
+      pod: ericsson-pod2
   task_args:
-      huawei-pod1: '{"pod_info": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
-      "host": "node5.yardstick-TC063"}'
+      ericsson-pod2: '{"pod_info": "etc/yardstick/nodes/fuel_baremetal/pod.yaml",
+      "host": "node1.LF","target": "node2.LF"}'
index 2e8399a..3ef0608 100755 (executable)
@@ -24,9 +24,13 @@ if [ $# -eq 1 ]; then
 fi
 
 # iperf3 only available for trusty in backports
-grep trusty /etc/apt/sources.list && \
-    echo "deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
-
+if [grep -q trusty /etc/apt/sources.list ]; then
+    if [ $YARD_IMG_ARCH = "arm64" ]; then
+        echo "deb [arch=arm64] http://ports.ubuntu.com/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
+    else
+        echo "deb http://archive.ubuntu.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
+    fi
+fi
 # Workaround for building on CentOS (apt-get is not working with http sources)
 # sed -i 's/http/ftp/' /etc/apt/sources.list
 
@@ -41,8 +45,18 @@ password: RANDOM
 chpasswd: { expire: False }
 ssh_pwauth: True
 EOF
-
 apt-get update
+if [ $YARD_IMG_ARCH = "arm64" ]; then
+apt-get install -y \
+    linux-headers-$(echo $VIVID_KERNEL_VERSION | cut -d'-' -f3,4,5) \
+    unzip
+#resize root parition (/dev/vdb1) It is supposed to be default but the image is booted differently for arm64
+cat <<EOF >/etc/cloud/cloud.cfg.d/15_growpart.cfg
+#cloud-config
+bootcmd:
+ - [growpart, /dev/vdb, 1]
+EOF
+fi
 apt-get install -y \
     fio \
     git \
@@ -59,15 +73,37 @@ apt-get install -y \
     stress \
     sysstat
 
-git clone https://github.com/kdlucas/byte-unixbench.git /opt/tempT
+if [ $YARD_IMG_ARCH = "arm64" ]; then
+    wget https://github.com/kdlucas/byte-unixbench/archive/master.zip
+    unzip master.zip && rm master.zip
+    mkdir /opt/tempT
+    mv byte-unixbench-master/UnixBench /opt/tempT
+    sed -i -e 's/OPTON += -march=native -mtune=native/OPTON += -march=armv8-a -mtune=generic/g' \
+    -e 's/OPTON += -march=native/OPTON += -march=armv8-a/g' /opt/tempT/UnixBench/Makefile
+else
+    git clone https://github.com/kdlucas/byte-unixbench.git /opt/tempT
+fi
 make --directory /opt/tempT/UnixBench/
 
-git clone https://github.com/beefyamoeba5/ramspeed.git /opt/tempT/RAMspeed
+if [ $YARD_IMG_ARCH = "arm64" ]; then
+    wget https://github.com/beefyamoeba5/ramspeed/archive/master.zip
+    unzip master.zip && rm master.zip
+    mkdir /opt/tempT/RAMspeed
+    mv ramspeed-master/* /opt/tempT/RAMspeed/
+else
+    git clone https://github.com/beefyamoeba5/ramspeed.git /opt/tempT/RAMspeed
+fi
 cd /opt/tempT/RAMspeed/ramspeed-2.6.0
 mkdir temp
 bash build.sh
 
-git clone https://github.com/beefyamoeba5/cachestat.git /opt/tempT/Cachestat
+if [ $YARD_IMG_ARCH = "arm64" ]; then
+    wget https://github.com/beefyamoeba5/cachestat/archive/master.zip
+    unzip master.zip && rm master.zip
+    mv cachestat-master/cachestat /opt/tempT
+else
+    git clone https://github.com/beefyamoeba5/cachestat.git /opt/tempT/Cachestat
+fi
 
 # restore symlink
 ln -sf /run/resolvconf/resolv.conf /etc/resolv.conf
index 13d4360..b9ecbdd 100755 (executable)
@@ -38,11 +38,10 @@ test $(id -u) -eq 0 || die "should invoke using sudo"
 cmd=$1
 test -x $cmd
 mountdir="/mnt/yardstick"
-
 workspace=${WORKSPACE:-"/tmp/workspace/yardstick"}
 host=${HOST:-"cloud-images.ubuntu.com"}
 release=${RELEASE:-"trusty"}
-image_path="${release}/current/${release}-server-cloudimg-amd64-disk1.img"
+image_path="${release}/current/${release}-server-cloudimg-${YARD_IMG_ARCH}-disk1.img"
 image_url=${IMAGE_URL:-"https://${host}/${image_path}"}
 md5sums_path="${release}/current/MD5SUMS"
 md5sums_url=${MD5SUMS_URL:-"https://${host}/${md5sums_path}"}
@@ -64,30 +63,61 @@ download() {
         wget -nc --progress=dot:giga $image_url
         grep $filename MD5SUMS | md5sum -c
     fi
+
+    for i in $(seq 0 9); do
+        [ -a /dev/loop$i ] || mknod -m 660 /dev/loop$i b 7 $i
+    done
+
+    if [ $YARD_IMG_ARCH = "arm64" ]; then
+        cd /tmp
+        if [ ! -f /tmp/vivid-server-cloudimg-arm64-kernel-info.txt ]; then
+            wget http://cloud-images.ubuntu.com/vivid/current/vivid-server-cloudimg-arm64-kernel-info.txt
+        fi
+        export VIVID_KERNEL_VERSION=$(cut -d$'\t' -f4 vivid-server-cloudimg-arm64-kernel-info.txt)
+        mkdir -p /tmp/vivid-modules
+        if [ ! -f "/tmp/vivid-server-cloudimg-arm64.tar.gz" ]; then
+            wget $VIVID_IMG_URL
+        fi
+        if [ ! -f "/tmp/vivid-server-cloudimg-arm64.img" ]; then
+            tar zxvf vivid-server-cloudimg-arm64.tar.gz vivid-server-cloudimg-arm64.img
+        fi
+        mkdir -p /mnt/vivid
+        mount /tmp/vivid-server-cloudimg-arm64.img /mnt/vivid
+        cp -r /mnt/vivid/lib/modules/$(echo $VIVID_KERNEL_VERSION | cut -d'-' -f3,4,5) /tmp/vivid-modules
+        umount /mnt/vivid
+        rm /tmp/vivid-server-cloudimg-arm64.img
+        cd $workspace
+    fi
     qemu-img convert $filename $raw_imgfile
     cd -
 }
 
 # mount image
 setup() {
+    # qemu-img resize $raw_imgfile +5GB
+    if [ $YARD_IMG_ARCH = "arm64" ]; then
+        echo -e "d\nn\np\n1\n\n\nw" | fdisk $raw_imgfile
+    fi
     mkdir -p $mountdir
 
-    for i in $(seq 0 9); do
-        [ -a /dev/loop$i ] || mknod -m 660 /dev/loop$i b 7 $i
-    done
-
     loopdevice=$(kpartx -l $raw_imgfile | head -1 | cut -f1 -d ' ')
 
     kpartx -av $raw_imgfile
-
+    if [ $YARD_IMG_ARCH = "arm64" ]; then
+        e2fsck -f /dev/mapper/$loopdevice
+        resize2fs /dev/mapper/$loopdevice
+    fi
     # for trouble shooting
     sleep 2
     dmsetup ls
     fdisk -l /dev/${loopdevice:0:5} || true
-
     mount /dev/mapper/$loopdevice $mountdir
     mount -t proc none $mountdir/proc
 
+    if [ $YARD_IMG_ARCH = "arm64" ]; then
+        cp -r /tmp/vivid-modules/$(echo $VIVID_KERNEL_VERSION | cut -d'-' -f3,4,5) "$mountdir/lib/modules"
+        cp $(which "qemu-aarch64-static") "$mountdir/usr/bin"
+    fi
     cp $cmd $mountdir/$(basename $cmd)
 }
 
@@ -120,6 +150,7 @@ cleanup() {
     # designed to be idempotent
     mount | grep $mountdir/proc && umount $mountdir/proc
     mount | grep $mountdir && umount $mountdir
+    mount | grep "/mnt/vivid" && umount "/mnt/vivid"
     if [ -f $raw_imgfile ]; then
         kpartx -dv $raw_imgfile || true
     fi