diff --git a/test/packages/.gitignore b/test/packages/.gitignore new file mode 100644 index 000000000..c188bcee9 --- /dev/null +++ b/test/packages/.gitignore @@ -0,0 +1 @@ +test_result.txt \ No newline at end of file diff --git a/test/packages/README.md b/test/packages/README.md new file mode 100644 index 000000000..1ebc093f3 --- /dev/null +++ b/test/packages/README.md @@ -0,0 +1,20 @@ +Package Tests +======== +This directory contains all Tests for packages. They use dockers to test + +# Install python docker api + +```sh +$ pip install docker +``` + +# Run Tests + +```sh +$ python run_test.py test_list.yml +``` +in test_list.yml you can able or disable tests + +# Edit Dockerfile + +Follow [this link](https://docker-py.readthedocs.io/en/stable/) for more information diff --git a/test/packages/cameraview/Dockerfile b/test/packages/cameraview/Dockerfile new file mode 100644 index 000000000..9b7492515 --- /dev/null +++ b/test/packages/cameraview/Dockerfile @@ -0,0 +1,45 @@ +FROM jderobot/jderobot + + +LABEL manteiner Aitor Martínez Fernández+aitor.martinez.fernandez@gmail.com + +RUN apt-get update && apt-get -y install \ + wget \ + && rm -rf /var/lib/apt/lists/* + +########## setup Repositories ############## +## ROS ## +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 +RUN echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list + +## ZeroC ## +RUN sh -c 'echo deb http://zeroc.com/download/apt/ubuntu16.04 stable main > /etc/apt/sources.list.d/zeroc.list' +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv 5E6DA83306132997 + +## Gazebo ## +RUN echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main" > /etc/apt/sources.list.d/gazebo-stable.list +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-key 67170598AF249743 + + +## JdeRobot Test ## +RUN sh -c 'echo "deb http://jderobot.org/aptest xenial main" > /etc/apt/sources.list.d/jderobot.list' +RUN wget -qO - www.jderobot.org/aptest/aptest.key | apt-key add - + + +## JdeRobot ## +#RUN sh -c 'echo "deb http://jderobot.org/apt xenial main" > /etc/apt/sources.list.d/jderobot.list' +#RUN apt-key adv --keyserver keyserver.ubuntu.com --recv B0E7F58E82C8091DF945A0453DA08892EE69A25C + +########## Install JdeRobot ############## +RUN apt-get update && apt-get -y install --only-upgrade\ + jderobot-cameraview \ + && rm -rf /var/lib/apt/lists/* + +COPY ./search_files.sh / +COPY ./files.txt / + +RUN ./search_files.sh files.txt + + + + diff --git a/test/packages/cameraview/files.txt b/test/packages/cameraview/files.txt new file mode 100644 index 000000000..bb03102ec --- /dev/null +++ b/test/packages/cameraview/files.txt @@ -0,0 +1,3 @@ +/opt/jderobot/share/jderobot/glade/cameraview.glade +/opt/jderobot/share/jderobot/conf/cameraview.yml +/opt/jderobot/bin/cameraview \ No newline at end of file diff --git a/test/packages/cameraview/search_files.sh b/test/packages/cameraview/search_files.sh new file mode 100755 index 000000000..b08688c40 --- /dev/null +++ b/test/packages/cameraview/search_files.sh @@ -0,0 +1,13 @@ +#!/bin/bash + + +FILE_NOT_FONUD=64 + +while IFS='' read -r line || [[ -n "$line" ]]; do + if [ ! -f "$line" ]; then + echo "File Not Found!" 1>&2 + exit $FILE_NOT_FONUD + fi +done < "$1" + + diff --git a/test/packages/install_test/Dockerfile b/test/packages/install_test/Dockerfile new file mode 100644 index 000000000..e1497a90e --- /dev/null +++ b/test/packages/install_test/Dockerfile @@ -0,0 +1,39 @@ +FROM ubuntu:xenial + + +LABEL manteiner Aitor Martínez Fernández+aitor.martinez.fernandez@gmail.com + +RUN apt-get update && apt-get -y install \ + wget \ + && rm -rf /var/lib/apt/lists/* + + +########## setup Repositories ############## + +## ROS ## +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 +RUN echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list + +## ZeroC ## +RUN sh -c 'echo deb http://zeroc.com/download/apt/ubuntu16.04 stable main > /etc/apt/sources.list.d/zeroc.list' +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv 5E6DA83306132997 + +## Gazebo ## +RUN echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main" > /etc/apt/sources.list.d/gazebo-stable.list +RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-key 67170598AF249743 + + +## JdeRobot ## +RUN sh -c 'echo "deb http://jderobot.org/aptest xenial main" > /etc/apt/sources.list.d/jderobot.list' +RUN wget -qO - www.jderobot.org/aptest/aptest.key | apt-key add - + +########## Install JdeRobot ############## +RUN apt-get update && apt-get -y install\ + jderobot \ + && rm -rf /var/lib/apt/lists/* + + +########## Install JdeRobot ############## +RUN apt-get update && apt-get -y purge\ + jderobot \ + && rm -rf /var/lib/apt/lists/* diff --git a/test/packages/run_test.py b/test/packages/run_test.py new file mode 100644 index 000000000..c34450c96 --- /dev/null +++ b/test/packages/run_test.py @@ -0,0 +1,60 @@ +import docker +import yaml +import sys + + + + +yamlFile = sys.argv[1] +client = docker.from_env() +images={} + +result = open('test_result.txt', 'w') + + +## Build Image ## +def build_image(ipath, itag): + try: + print "Building " + image + client.images.build(pull=True, path=ipath, tag=itag, rm=True, stream=True) + except docker.errors.BuildError as exc: + return "ERROR " + exc.__str__() + except docker.errors.APIError as exc: + return "ERROR " + exc.__str__() + + return "OK" + + +## remove Image ## +def remove_image(itag): + try: + print "Removing " + image + client.images.remove(image=itag, force=True) + except docker.errors.BuildError as exc: + pass + except docker.errors.APIError as exc: + print (exc) + + + +## Open File ## +with open(yamlFile, 'r') as stream: + try: + images=yaml.load(stream) + except yaml.YAMLError as exc: + print(exc) + + +for image in images: + if images[image]["run"]: + + sol = build_image(images[image]["path"], image) + remove_image(image) + + result.write(image + ": " + sol + "\n") + +result.close() + + + + diff --git a/test/packages/test_list.yml b/test/packages/test_list.yml new file mode 100644 index 000000000..cdb3fc48b --- /dev/null +++ b/test/packages/test_list.yml @@ -0,0 +1,11 @@ +install_test: + path: install_test + run: True + +update_test: + path: update_test + run: True + +cameraview: + path: cameraview + run: True diff --git a/test/packages/update_test/Dockerfile b/test/packages/update_test/Dockerfile new file mode 100644 index 000000000..5011ae553 --- /dev/null +++ b/test/packages/update_test/Dockerfile @@ -0,0 +1,22 @@ +FROM jderobot/jderobot + + +LABEL manteiner Aitor Martínez Fernández+aitor.martinez.fernandez@gmail.com + +RUN apt-get update && apt-get -y install \ + wget \ + && rm -rf /var/lib/apt/lists/* + +########## setup Repositories ############## +## JdeRobot Test## +RUN sh -c 'echo "deb http://jderobot.org/aptest xenial main" > /etc/apt/sources.list.d/jderobot.list' +RUN wget -qO - www.jderobot.org/aptest/aptest.key | apt-key add - + +########## Upgrade JdeRobot ############## +RUN apt-get update && apt-get -y install --only-upgrade \ + jderobot \ + && rm -rf /var/lib/apt/lists/* + + + +