diff options
author | Paul Vaduva <Paul.Vaduva@enea.com> | 2016-08-25 13:18:22 +0200 |
---|---|---|
committer | liang gao <jean.gaoliang@huawei.com> | 2016-09-13 11:57:18 +0000 |
commit | 719ff66679f1d1a0d109893b92a095cb8fc80cd0 (patch) | |
tree | fbf74dd81705a18bd2eeacc828457bf391d59891 /tests | |
parent | 5472aa7ab03601b87cc45fdb068040f65d77bba3 (diff) |
ARM64: Add support for aarch64 architecture
Added support for arm64 architecture so that yardstick framework
can be ran on arm-pod1 the armband CI pod. The modifications include
testing for presence of arm64 architecture nodes in the pod and running
arm64 specific code (building yardstick server image on arm64 version of
ubuntu cloud.
Openstack doesn't boot 3.13 kernel(arm64) so it was replaced with 3.19
kernel(also arm64), available for vivid cloud image of ubuntu.
The Dockerfile for building the ci image was also mofied to add necessary
tools for cross-building an arm64 image on amd64 host (the jumpserver)
The jira case for this commit is ARMBAND-40.
Change-Id: I906d4adbcf2ec2c0f1d695d9916ede42f4151080
Signed-off-by: Paul Vaduva <Paul.Vaduva@enea.com>
(cherry picked from commit 3790f7bb070078da4b101ad8d33a176c9096e3ba)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/ci/docker/yardstick-ci/Dockerfile | 11 | ||||
-rwxr-xr-x | tests/ci/prepare_env.sh | 9 | ||||
-rwxr-xr-x | tests/ci/yardstick-verify | 58 |
3 files changed, 72 insertions, 6 deletions
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 5529a6f73..bbd7b5553 100755 --- a/tests/ci/prepare_env.sh +++ b/tests/ci/prepare_env.sh @@ -84,6 +84,15 @@ if [ "$INSTALLER_TYPE" == "fuel" ]; then sshpass -p r00tme scp 2>/dev/null $ssh_options \ root@${INSTALLER_IP}:~/.ssh/id_rsa /root/.ssh/id_rsa &> /dev/null + 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 diff --git a/tests/ci/yardstick-verify b/tests/ci/yardstick-verify index 7484755ef..3e9aa53cf 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)}') @@ -444,10 +482,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 |