aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etc/yardstick/nodes/fuel_baremetal/pod.yaml43
-rw-r--r--tests/ci/docker/yardstick-ci/Dockerfile11
-rwxr-xr-xtests/ci/prepare_env.sh35
-rwxr-xr-xtests/ci/yardstick-verify58
-rw-r--r--tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-ha_daily.yaml40
-rw-r--r--tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-noha_daily.yaml32
-rwxr-xr-xtools/ubuntu-server-cloudimg-modify.sh50
-rwxr-xr-xtools/yardstick-img-modify47
8 files changed, 232 insertions, 84 deletions
diff --git a/etc/yardstick/nodes/fuel_baremetal/pod.yaml b/etc/yardstick/nodes/fuel_baremetal/pod.yaml
new file mode 100644
index 000000000..7392ae1a4
--- /dev/null
+++ b/etc/yardstick/nodes/fuel_baremetal/pod.yaml
@@ -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
diff --git a/tests/ci/docker/yardstick-ci/Dockerfile b/tests/ci/docker/yardstick-ci/Dockerfile
index da755d11d..5387babff 100644
--- a/tests/ci/docker/yardstick-ci/Dockerfile
+++ b/tests/ci/docker/yardstick-ci/Dockerfile
@@ -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 \
diff --git a/tests/ci/prepare_env.sh b/tests/ci/prepare_env.sh
index d9f8257ae..bbd7b5553 100755
--- a/tests/ci/prepare_env.sh
+++ b/tests/ci/prepare_env.sh
@@ -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
diff --git a/tests/ci/yardstick-verify b/tests/ci/yardstick-verify
index 859c92c94..5ac0850df 100755
--- a/tests/ci/yardstick-verify
+++ b/tests/ci/yardstick-verify
@@ -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
diff --git a/tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-ha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-ha_daily.yaml
index 639e18e85..84d630cc1 100644
--- a/tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-ha_daily.yaml
+++ b/tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-ha_daily.yaml
@@ -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"}'
diff --git a/tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-noha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-noha_daily.yaml
index 372041fd6..a9e272aa6 100644
--- a/tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-noha_daily.yaml
+++ b/tests/opnfv/test_suites/opnfv_os-odl_l2-bgpvpn-noha_daily.yaml
@@ -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"}'
diff --git a/tools/ubuntu-server-cloudimg-modify.sh b/tools/ubuntu-server-cloudimg-modify.sh
index 2e8399a9b..3ef060847 100755
--- a/tools/ubuntu-server-cloudimg-modify.sh
+++ b/tools/ubuntu-server-cloudimg-modify.sh
@@ -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
diff --git a/tools/yardstick-img-modify b/tools/yardstick-img-modify
index 13d4360d9..b9ecbddd8 100755
--- a/tools/yardstick-img-modify
+++ b/tools/yardstick-img-modify
@@ -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