From 6382c254170a77c51a593eb6e0e09e30b31b5d08 Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Mon, 11 Feb 2019 02:38:35 +0300 Subject: [PATCH] builder: add some tests for validating built image --- .travis.yml | 2 +- builder/image-build.sh | 1 + builder/image-validate.sh | 22 +++++++++++++++++++ builder/test/tests.py | 27 +++++++++++++++++++++++ builder/test/tests.sh | 46 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 97 insertions(+), 1 deletion(-) create mode 100755 builder/image-validate.sh create mode 100755 builder/test/tests.py create mode 100755 builder/test/tests.sh diff --git a/.travis.yml b/.travis.yml index a4d29c46..59e56bb0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ services: - docker env: global: - - DOCKER="sfalexrog/img-tool:builder-mod" + - DOCKER="okalachev/img-tool:latest" - TARGET_REPO="https://github.com/${TRAVIS_REPO_SLUG}.git" - if [[ -z ${TRAVIS_TAG} ]]; then IMAGE_VERSION="${TRAVIS_COMMIT}}"; else IMAGE_VERSION="${TRAVIS_TAG}"; fi - IMAGE_NAME="$(basename -s '.git' ${TARGET_REPO})_${IMAGE_VERSION}.img" diff --git a/builder/image-build.sh b/builder/image-build.sh index 5644c67a..76f6787e 100755 --- a/builder/image-build.sh +++ b/builder/image-build.sh @@ -100,5 +100,6 @@ ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/roscore ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/kinetic-rosdep-clever.yaml' '/etc/ros/rosdep/' # ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} copy ${SCRIPTS_DIR}'/assets/kinetic-ros-clever.rosinstall' '/home/pi/ros_catkin_ws/' ${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-ros.sh' ${REPO_URL} ${IMAGE_VERSION} false false ${NUMBER_THREADS} +${BUILDER_DIR}/image-chroot.sh ${IMAGE_PATH} exec ${SCRIPTS_DIR}'/image-validate.sh' ${BUILDER_DIR}/image-resize.sh ${IMAGE_PATH} diff --git a/builder/image-validate.sh b/builder/image-validate.sh new file mode 100755 index 00000000..af718af7 --- /dev/null +++ b/builder/image-validate.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +# +# Validate built image using tests +# +# Copyright (C) 2018 Copter Express Technologies +# +# Author: Oleg Kalachev +# + +set -ex + +echo "Run image tests" + +export ROS_DISTRO='kinetic' +export ROS_IP='127.0.0.1' +source /opt/ros/kinetic/setup.bash +source /home/pi/catkin_ws/devel/setup.bash + +cd /home/pi/catkin_ws/src/clever/builder/test/ +./tests.sh +./tests.py diff --git a/builder/test/tests.py b/builder/test/tests.py new file mode 100755 index 00000000..bcb0a2f1 --- /dev/null +++ b/builder/test/tests.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python + +# validate all required modules installed + +import rospy +from geometry_msgs.msg import PoseStamped + +#import cv2 # TODO - fix "NEON - NOT AVAILABLE" error +#import cv2.aruco + +import numpy +import mavros +from mavros_msgs.msg import State, StatusText, ExtendedState +from mavros_msgs.srv import CommandBool, CommandLong, SetMode + +from std_srvs.srv import Trigger +from clever.srv import GetTelemetry, Navigate, NavigateGlobal, SetPosition, SetVelocity, \ + SetAttitude, SetRates + +import tf2_ros +import tf2_geometry_msgs + +import VL53L1X +import pymavlink +from pymavlink import mavutil +import rpi_ws281x +import pigpio diff --git a/builder/test/tests.sh b/builder/test/tests.sh new file mode 100755 index 00000000..22ea6b58 --- /dev/null +++ b/builder/test/tests.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +set -ex + +# TODO: validate versions + +# validate required software is installed + +python --version +python2 --version +python3 --version +ipython --version +ipython3 --version + +node -v +npm -v + +byobu --version +nmap --version +lsof -v +git --version +vim --version +pip --version +pip2 --version +pip3 --version +tcpdump --version +monkey --version +pigpiod -v +i2cdetect -V +butterfly -h + +# ros stuff + +roscore -h +rosversion clever +rosversion aruco_pose +rosversion vl53l1x +#rosversion opencv3 # TODO +rosversion mavros +rosversion mavros_extras +rosversion dynamic_reconfigure +rosversion tf2_web_republisher +rosversion compressed_image_transport +rosversion rosbridge_suite +rosversion rosserial +rosversion usb_cam