From cfd292fcd7b27d82307383c1e2ccd9fb65eec9e6 Mon Sep 17 00:00:00 2001 From: Clément Malléjac Date: Fri, 27 Jul 2018 17:05:53 +0200 Subject: Setup the project for afb-test framework MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wrote a couple of basic API tests Change-Id: I606752e7b46cb2afdc10f3319a24ef15675faa3b Signed-off-by: Clément Malléjac --- test/CMakeLists.txt | 27 ++++++++++++++++ test/afb-test/CMakeLists.txt | 22 +++++++++++++ test/afb-test/afb-test.sh | 34 ++++++++++++++++++++ test/afb-test/etc/CMakeLists.txt | 31 ++++++++++++++++++ test/afb-test/etc/aft-signal-composer_config.json | 22 +++++++++++++ test/afb-test/tests/CMakeLists.txt | 31 ++++++++++++++++++ .../tests/signal-composer_BasicAPITest.lua | 37 ++++++++++++++++++++++ 7 files changed, 204 insertions(+) create mode 100644 test/CMakeLists.txt create mode 100644 test/afb-test/CMakeLists.txt create mode 100755 test/afb-test/afb-test.sh create mode 100644 test/afb-test/etc/CMakeLists.txt create mode 100644 test/afb-test/etc/aft-signal-composer_config.json create mode 100644 test/afb-test/tests/CMakeLists.txt create mode 100644 test/afb-test/tests/signal-composer_BasicAPITest.lua diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..cd0328b --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,27 @@ +########################################################################### +# Copyright 2015 - 2018 IoT.bzh +# +# author: Clément MAlléjac +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + + +# Include any directory not starting with _ +# ----------------------------------------------------- +PROJECT_SUBDIRS_ADD(${PROJECT_SRC_DIR_PATTERN}) + +ADD_TEST(NAME AGL_SERVICE_SIGNAL_COMPOSER_TESTS + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND afb-test.sh ${CMAKE_BINARY_DIR} +) diff --git a/test/afb-test/CMakeLists.txt b/test/afb-test/CMakeLists.txt new file mode 100644 index 0000000..feb8a05 --- /dev/null +++ b/test/afb-test/CMakeLists.txt @@ -0,0 +1,22 @@ +########################################################################### +# Copyright 2018 IoT.bzh +# +# author: Clément Malléjac +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + + +# Include any directory not starting with _ +# ----------------------------------------------------- +PROJECT_SUBDIRS_ADD(${PROJECT_SRC_DIR_PATTERN}) diff --git a/test/afb-test/afb-test.sh b/test/afb-test/afb-test.sh new file mode 100755 index 0000000..aa96bb1 --- /dev/null +++ b/test/afb-test/afb-test.sh @@ -0,0 +1,34 @@ +#!/bin/sh -x + +BINDER=$(command -v afb-daemon) +CLIENT=$(command -v afb-client-demo) +AFBTEST="$(pkg-config --variable libdir afb-test)/aft.so" +PROCNAME="aft-signal-composer" +PORT=1234 +TOKEN= +LOGPIPE="test.log" +[ "$1" ] && BUILDDIR="$1" || exit 1 + +[ ! -p $LOGPIPE ] && mkfifo $LOGPIPE + +pkill $PROCNAME + +${BINDER} --name="${PROCNAME}" \ +--port="${PORT}" \ +--roothttp=. \ +--tracereq=common \ +--token=${TOKEN} \ +--workdir="${BUILDDIR}/package" \ +--binding='/home/cmall/git/txc-demo/binding/build/afb-txc-binding.so' \ +--binding="lib/afb-signal-composer.so" \ +--binding="$AFBTEST" \ +--call="testSignal-composer/launch_all_tests:{}" \ +-vvv > ${LOGPIPE} 2>&1 & + +while read -r line +do + [ "$(echo "${line}" | grep 'NOTICE: Browser URL=')" ] && break +done < ${LOGPIPE} + +${CLIENT} ws://localhost:${PORT}/api?token=${TOKEN} testSignal-composer exit +rm -f ${LOGPIPE} \ No newline at end of file diff --git a/test/afb-test/etc/CMakeLists.txt b/test/afb-test/etc/CMakeLists.txt new file mode 100644 index 0000000..a0e1109 --- /dev/null +++ b/test/afb-test/etc/CMakeLists.txt @@ -0,0 +1,31 @@ +########################################################################### +# Copyright 2018 IoT.bzh +# +# author: Clément Malléjac +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + +################################################## +# Signal-Composer test configuration files +################################################## +PROJECT_TARGET_ADD(afb-test-config) + + file(GLOB CONF_FILES "*.json") + + add_input_files("${CONF_FILES}") + + SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES + LABELS "BINDING-CONFIG" + OUTPUT_NAME ${TARGET_NAME} + ) diff --git a/test/afb-test/etc/aft-signal-composer_config.json b/test/afb-test/etc/aft-signal-composer_config.json new file mode 100644 index 0000000..4a6ba6b --- /dev/null +++ b/test/afb-test/etc/aft-signal-composer_config.json @@ -0,0 +1,22 @@ +{ + "id": "http://iot.bzh/download/public/schema/json/ctl-schema.json#", + "$schema": "http://iot.bzh/download/public/schema/json/ctl-schema.json#", + "metadata": { + "uid": "Test", + "version": "1.0", + "api": "testSignal-composer", + "info": "AFB-test binding configuration file to test signal-composer api.", + "require": [ + "signal-composer" + ] + }, + "testVerb": { + "uid": "launch_all_tests", + "info": "Launch all the tests", + "action": "lua://AFT#_launch_test", + "args": { + "trace": "signal-composer", + "files": ["signal-composer_BasicAPITest.lua"] + } + } +} \ No newline at end of file diff --git a/test/afb-test/tests/CMakeLists.txt b/test/afb-test/tests/CMakeLists.txt new file mode 100644 index 0000000..a7739de --- /dev/null +++ b/test/afb-test/tests/CMakeLists.txt @@ -0,0 +1,31 @@ +########################################################################### +# Copyright 2018 IoT.bzh +# +# author: Clément Malléjac +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + + +################################################## +# Signal-Composer Lua Scripts +################################################## +PROJECT_TARGET_ADD(test-files) + + file(GLOB LUA_FILES "*.lua" "*.sh") + add_input_files("${LUA_FILES}") + + SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES + LABELS "DATA" + OUTPUT_NAME ${TARGET_NAME} + ) diff --git a/test/afb-test/tests/signal-composer_BasicAPITest.lua b/test/afb-test/tests/signal-composer_BasicAPITest.lua new file mode 100644 index 0000000..c1d3855 --- /dev/null +++ b/test/afb-test/tests/signal-composer_BasicAPITest.lua @@ -0,0 +1,37 @@ + --[[ + Copyright (C) 2018 "IoT.bzh" + Author Clément Malléjac + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + NOTE: strict mode: every global variables should be prefixed by '_' +--]] + +_AFT.testVerb("signal_composer_BasicAPITest_subscribe","signal-composer","subscribe",{ event = "longitude"},nil, + function() + _AFT.callVerb("signal-composer","unsubscribe",{ event = "longitude"}) + end); +_AFT.testVerb("signal_composer_BasicAPITest_unsubscribe","signal-composer","unsubscribe",{ event = "heading"},nil, + function() + _AFT.callVerb("signal-composer","subscribe",{ event = "heading"}) + end); + +_AFT.testVerb("signal_composer_BasicAPITest_getNoFilter","signal-composer","get",{signal= "fuel_level"}); +_AFT.testVerb("signal_composer_BasicAPITest_getFilterAvg","signal-composer","get",{signal= "odometer", options= {average= 10}}); +_AFT.testVerb("signal_composer_BasicAPITest_getFilterMin","signal-composer","get",{signal= "latitude", options= {minimum= 10}}); +_AFT.testVerb("signal_composer_BasicAPITest_getFilterMax","signal-composer","get",{signal= "vehicle_speed", options= {maximum= 10}}); + +_AFT.testVerb("signal_composer_BasicAPITest_list","signal-composer","list"); + +_AFT.exitAtEnd(); \ No newline at end of file -- cgit 1.2.3-korg