diff --git a/gitlab-ci/functional-test.sh b/gitlab-ci/functional-test.sh new file mode 100755 index 0000000000000000000000000000000000000000..4bb011ff5f0d2395b81a3adb1a2096e72a843d16 --- /dev/null +++ b/gitlab-ci/functional-test.sh @@ -0,0 +1,81 @@ +#!/bin/bash +set -e +. /usr/share/libubox/jshn.sh +. /usr/bin/tap.sh + +cntlrlog="/tmp/cntlr.test.log" +agentlog="/tmp/agent.test.log" + +echo "preparation script" +pwd + +echo "Cleaning..." +make clean +make -C test/cmocka clean + +make -C src + +supervisorctl status all +supervisorctl update +supervisorctl restart ubusd wifimngr ieee1905d +sleep 2 +supervisorctl status all + +echo "Running the unit test cases, pwd ${LIB_DIR}" +#ret=$? + +tap_validate_md5sum() { + sha1=$(md5sum "$1" | cut -d' ' -f1) + sha2=$(md5sum "$2" | cut -d' ' -f1) + + tap_is_str "$sha1" "$sha2" "ubus call $3 $4 $5" +} + +ubus_invoke() { + object=$1 + method=$2 + args=$3 + + ubus call $object $method $args + echo "$?" +} + +json_load "$(cat test/api/json/mapagent.validation.json)" +json_dump +json_get_var object object +json_get_keys methods methods +json_select methods + +for i in $methods; do + json_select "$i" + json_get_var method method + json_get_var args args + + rv=$(ubus_invoke $object $method $args) + if [ "$rv" != 0 ]; then + tap_is_str "return code: 0" "return code: $rv" "ubus call $object $method $args" + continue + fi + sleep 1 + tap_validate_md5sum "$agentlog" "$cntlrlog" "$object" "$method" "$args" + + echo "" > "$cntlrlog" + echo "" > "$agentlog" + json_select .. +done + +tap_done_testing +tap_finish + +supervisorctl stop ubusd ieee1905d wifimngr +supervisorctl status all + + +#report part +#GitLab-CI output +gcovr -r . +# Artefact +gcovr -r . --xml -o ./unit-test-coverage.xml +date +%s > timestamp.log + +#echo "$0 Return status ${ret}" diff --git a/gitlab-ci/install-dependencies.sh b/gitlab-ci/install-dependencies.sh new file mode 100755 index 0000000000000000000000000000000000000000..cdba2ecc9833ee82037f11a41beeb7dd7620892b --- /dev/null +++ b/gitlab-ci/install-dependencies.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +echo "install dependencies" + +home=$(pwd) + +function exec_cmd() +{ + echo "executing $@" + $@ >/dev/null 2>&1 + local ret=$? + + if [ "${ret}" -ne 0 ]; then + echo "Failed to execute $@ ret (${ret})" + exit 1 + fi +} + +exec_cmd apt update +exec_cmd apt install -y iproute2 + +# libwifi-6.so + libeasy.so +cd /opt/dev +rm -fr easy-soc-libs +mkdir -p /usr/include/easy +exec_cmd git clone -b devel https://dev.iopsys.eu/iopsys/easy-soc-libs.git +cd easy-soc-libs/libeasy +exec_cmd make CFLAGS+="-I/usr/include/libnl3" +exec_cmd cp -a libeasy*.so* /usr/lib +exec_cmd cp -a easy.h event.h utils.h if_utils.h debug.h hlist.h /usr/include/easy/ +cd ../libwifi +exec_cmd make PLATFORM="test" +exec_cmd cp wifi.h /usr/include/ +exec_md cp -a libwifi-6*.so* /usr/lib + +# wifimngr +cd /opt/dev +rm -fr wifimngr +exec_cmd git clone -b devel https://dev.iopsys.eu/iopsys/wifimngr.git +cd wifimngr +exec_cmd ./gitlab-ci/install-dependencies.sh +exec_cmd ./gitlab-ci/setup.sh +exec_cmd make +exec_cmd cp wifimngr /usr/sbin/ + +# ieee1905 + map.so +cd /opt/dev +export CFLAGS="${CFLAGS} -g -Wall -g -O0" +rm -fr ieee1905 +exec_cmd git clone --depth 1 -b devel https://dev.iopsys.eu/iopsys/ieee1905.git +cd ieee1905 +exec_cmd ./gitlab-ci/install-dependencies.sh +exec_cmd ./gitlab-ci/setup.sh +exec_cmd make +mkdir -p /usr/include /usr/lib/ieee1905 +exec_cmd cp -a cmdu.h /usr/include/ +exec_cmd cp -a cmdu_ackq.h /usr/include/ +exec_cmd cp -a 1905_tlvs.h /usr/include/ +exec_cmd cp -a i1905_wsc.h /usr/include/ +exec_cmd cp -a bufutil.h /usr/include/ +exec_cmd cp -a timer_impl.h /usr/include/ +exec_cmd cp -a libmidgen.so /usr/lib +exec_cmd cp -a libieee1905.so /usr/lib +exec_cmd cp -a ieee1905d /usr/sbin/ +exec_cmd cp -a extensions/map/libmaputil.so /usr/lib +exec_cmd cp -a extensions/map/map.so /usr/lib + +ldconfig + +# mapagent +cd /opt/dev +rm -fr map-agent +exec_cmd git clone -b devel https://dev.iopsys.eu/iopsys/map-agent.git +cd map-agent/src +exec_cmd make +exec_cmd cp mapagent /usr/sbin/ + +# tap.sh library +cd /opt/dev +rm -fr tap +exec_cmd git clone https://github.com/andrewgregory/tap.sh.git tap +cd tap +exec_cmd cp tap.sh /usr/bin/ + +# default mapagent config +cat <<'EOF' > /etc/config/mapagent +config agent 'agent' + option enabled '1' + option debug '0' + option profile '2' + option brcm_setup '1' + option al_bridge 'br-lan' + #option netdev 'wl' + option discovery_proto 'static' + +config controller_select + option local '1' + option id 'auto' + option probe_int '20' + option retry_int '3' + option autostart '0' + +config wifi-radio + option device 'test5' + option band '5' + option steer_policy '2' + option util_threshold '200' + option rcpi_threshold '30' + option report_rcpi_threshold '0' + option rcpi_hysteresis_margin '0' + option report_util_threshold '0' + option include_sta_stats '0' + option include_sta_metric '0' + +config wifi-radio + option device 'test2' + option band '2' + option steer_policy '2' + option util_threshold '200' + option rcpi_threshold '30' + option report_rcpi_threshold '0' + option rcpi_hysteresis_margin '0' + option report_util_threshold '0' + option include_sta_stats '0' + option include_sta_metric '0' +EOF diff --git a/gitlab-ci/iopsys-supervisord.conf b/gitlab-ci/iopsys-supervisord.conf new file mode 100644 index 0000000000000000000000000000000000000000..7e9508b9191b5c22d97353ad8e5b72f04ad00bac --- /dev/null +++ b/gitlab-ci/iopsys-supervisord.conf @@ -0,0 +1,26 @@ +[program:ubusd] +priority=1 +autorestart=false +startretries=0 +command=/bin/bash -c "/usr/sbin/ubusd" + +[program:wifimngr] +priority=2 +autorestart=false +startretries=0 +command=/bin/bash -c "/usr/sbin/wifimngr" + +[program:ieee1905d] +priority=3 +autorestart=false +startretries=0 +command=/bin/bash -c "/usr/sbin/ieee1905d" + +[program:mapagent] +priority=4 +autorestart=false +startretries=0 +command=/bin/bash -c "/usr/bin/valgrind --xml=yes --xml-file=memory-report.xml \ + --leak-check=full --show-reachable=yes --show-leak-kinds=all \ + --errors-for-leak-kinds=all --error-exitcode=1 --track-origins=yes \ + /builds/iopsys/map-agent/src/mapagent -vvvvvv -d" diff --git a/gitlab-ci/setup.sh b/gitlab-ci/setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..3fd902b17d80dc571e6a8b25811d849fd528b0c5 --- /dev/null +++ b/gitlab-ci/setup.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +echo "preparation script" + +pwd + +cp -r ./test/files/etc/* /etc/ +cp -r ./schemas/ubus/* /usr/share/rpcd/schemas +cp ./gitlab-ci/iopsys-supervisord.conf /etc/supervisor/conf.d/ + +ls /etc/config/ +ls /usr/share/rpcd/schemas/ +ls /etc/supervisor/conf.d/