diff options
-rw-r--r-- | README.md | 17 | ||||
-rw-r--r-- | conf.d/cmake/config.cmake | 3 | ||||
-rwxr-xr-x | test/afb-test.sh | 4 | ||||
-rw-r--r-- | test/afb-test/etc/aft-agl-service-iiodevices-test.json (renamed from test/afb-test/etc/aft-iiodevices_config.json) | 4 | ||||
-rw-r--r-- | test/afb-test/fixtures/CMakeLists.txt | 11 | ||||
-rwxr-xr-x | test/afb-test/fixtures/beforeAll.sh | 65 | ||||
-rw-r--r-- | test/afb-test/tests/iiodevices_BasicAPITest-devices.lua | 57 | ||||
-rw-r--r-- | test/afb-test/tests/iiodevices_BasicAPITest.lua | 73 |
8 files changed, 218 insertions, 16 deletions
@@ -81,3 +81,20 @@ iiodevices unsubscribe { "event": "acceleration" } M3ULCB Kingfisher is equipped with a 9 axis sensor device (LSM9DS0) and the R-Car Starter Kit can read sensor values via I2C interface and iiodevices are provided for these sensors. + +## Tests dependencies + +### Kernel modules + +To use industrial I/O dummy device we need to load kernel modules : + +* industrialio +* industrialio-configfs +* industrialio-sw-device +* industrialio-sw-trigger +* iio-trig-hrtimer +* iio_dummy + +[documentation](https://github.com/analogdevicesinc/libiio/blob/master/examples/dummy-iiostream.c) + +[recipe](https://gerrit.automotivelinux.org/gerrit/gitweb?p=AGL/meta-agl.git;a=blob_plain;f=meta-agl-bsp/recipes-kernel/linux/linux-agl.inc)
\ No newline at end of file diff --git a/conf.d/cmake/config.cmake b/conf.d/cmake/config.cmake index 8d2433f..9be9ab0 100644 --- a/conf.d/cmake/config.cmake +++ b/conf.d/cmake/config.cmake @@ -27,6 +27,7 @@ set(PROJECT_AUTHOR "Clément Bénier") set(PROJECT_AUTHOR_MAIL "clement.benier@iot.bzh") set(PROJECT_LICENSE "APL2.0") set(PROJECT_LANGUAGES,"C") +set(API_NAME "iiodevices") # Where are stored default templates files from submodule or subtree app-templates in your project tree # relative to the root project directory @@ -44,7 +45,7 @@ set(PROJECT_APP_TEMPLATES_DIR "conf.d/app-templates") # Compilation Mode (DEBUG, RELEASE) # ---------------------------------- -set(CMAKE_BUILD_TYPE "DEBUG") +set(BUILD_TYPE "DEBUG") # Kernel selection if needed. You can choose between a # mandatory version to impose a minimal version. diff --git a/test/afb-test.sh b/test/afb-test.sh index f11e4ea..fa4f821 100755 --- a/test/afb-test.sh +++ b/test/afb-test.sh @@ -14,7 +14,7 @@ export AFT_PLUGIN_PATH="${TESTPACKAGEDIR}/var:${TESTPACKAGEDIR}/lib/plugins" pkill $PROCNAME -timeout -s 9 10 ${BINDER} --name="${PROCNAME}" \ +timeout -s 9 10 "${BINDER}" --name="${PROCNAME}" \ --port="${PORT}" \ --roothttp=. \ --tracereq=common \ @@ -27,5 +27,3 @@ timeout -s 9 10 ${BINDER} --name="${PROCNAME}" \ -vvv > "${LOGFILE}" 2>&1 find "${BUILDDIR}" -name test_results.log -exec cat {} \; - - diff --git a/test/afb-test/etc/aft-iiodevices_config.json b/test/afb-test/etc/aft-agl-service-iiodevices-test.json index 33bd7f7..84698b6 100644 --- a/test/afb-test/etc/aft-iiodevices_config.json +++ b/test/afb-test/etc/aft-agl-service-iiodevices-test.json @@ -16,7 +16,7 @@ "action": "lua://AFT#_launch_test", "args": { "trace": "iiodevices", - "files": ["iiodevices_BasicAPITest.lua"] + "files": ["iiodevices_BasicAPITest-devices.lua", "iiodevices_BasicAPITest.lua"] } } -} +}
\ No newline at end of file diff --git a/test/afb-test/fixtures/CMakeLists.txt b/test/afb-test/fixtures/CMakeLists.txt index c737f9b..aafef80 100644 --- a/test/afb-test/fixtures/CMakeLists.txt +++ b/test/afb-test/fixtures/CMakeLists.txt @@ -19,13 +19,12 @@ ################################################## # Iiodevices test configuration files ################################################## -PROJECT_TARGET_ADD(afb-test-config) +PROJECT_TARGET_ADD(data-files) - file(GLOB CONF_FILES "*.json") - - add_input_files("${CONF_FILES}") + file(GLOB DATA_FILES "*.json" "*.sh") + add_input_files("${DATA_FILES}") SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES - LABELS "TEST-CONFIG" + LABELS "TEST-DATA" OUTPUT_NAME ${TARGET_NAME} - )
\ No newline at end of file + ) diff --git a/test/afb-test/fixtures/beforeAll.sh b/test/afb-test/fixtures/beforeAll.sh new file mode 100755 index 0000000..1a72b80 --- /dev/null +++ b/test/afb-test/fixtures/beforeAll.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +set -e + +########################################################################### +# Copyright 2018 IoT.bzh +# +# author:Frédéric Marec <frederic.marec@iot.bzh> +# +# 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. +########################################################################### + +# Init list + +list="acceleration gyroscope compass" + +# Configure iio_dummy +modprobe industrialio +modprobe industrialio-configfs + +if ! test -d "/sys/kernel/config" +then + mount -t configfs none /sys/kernel/config +fi + +modprobe industrialio-sw-device +modprobe industrialio-sw-trigger +modprobe iio-trig-hrtimer +modprobe iio_dummy + + +# create one iio_dummy +for device in $list +do + if ! test -d "/sys/kernel/config/iio/triggers/hrtimer/instance_$device" + then + mkdir -p "/sys/kernel/config/iio/triggers/hrtimer/instance_$device" + else + echo "instance_$device was already created" + fi + + if ! test -d "/sys/kernel/config/iio/devices/dummy/16-001d" + then + mkdir -p "/sys/kernel/config/iio/devices/dummy/16-001d" + else + echo "$device was already created" + fi + + if ! test -d "/sys/kernel/config/iio/devices/dummy/16-006b" + then + mkdir -p "/sys/kernel/config/iio/devices/dummy/16-006b" + else + echo "$device was already created" + fi +done
\ No newline at end of file diff --git a/test/afb-test/tests/iiodevices_BasicAPITest-devices.lua b/test/afb-test/tests/iiodevices_BasicAPITest-devices.lua new file mode 100644 index 0000000..e46428a --- /dev/null +++ b/test/afb-test/tests/iiodevices_BasicAPITest-devices.lua @@ -0,0 +1,57 @@ +--[[ + Copyright (C) 2018 "IoT.bzh" + Author Frédéric Marec <frederic.marec@iot.bzh> + + 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 '_' +--]] + +local testPrefix ="iiodevices_BasicAPITest_without_devices_" + +-- This tests the 'subscribe' verb of the iiodevices API without any devices +_AFT.testVerbStatusError(testPrefix.."subscribe-acceleration","iiodevices","subscribe", {event = "acceleration", args = "xy"}) +_AFT.testVerbStatusError(testPrefix.."subscribe-compass","iiodevices","subscribe", {event = "compass", args = "xy"}) +_AFT.testVerbStatusError(testPrefix.."subscribe-gyroscope","iiodevices","subscribe", {event = "gyroscope", args = "xy"}) + +_AFT.testVerbStatusError(testPrefix.."subscribe-acceleration-with-wrong-argument","iiodevices","subscribe", {event = "acceleration", aaaaaaaaaaaaaaaaaaaaa = "xy"}) +_AFT.testVerbStatusError(testPrefix.."subscribe-compass-with-wrong-argument","iiodevices","subscribe", {event = "compass", bbbbbbbbbbbbbbbb = "xy"}) +_AFT.testVerbStatusError(testPrefix.."subscribe-gyroscope-with-wrong-argument","iiodevices","subscribe", {event = "gyroscope", cccccccccccccccccc = "xy"}) + +_AFT.testVerbStatusError(testPrefix.."subscribe-acceleration-replace-argument","iiodevices","subscribe", {event = "acceleration", args = "xy", wrongarg = "test"}) +_AFT.testVerbStatusError(testPrefix.."subscribe-compass-replace-argument","iiodevices","subscribe", {event = "compass", args = "xy", wrongarg = "test"}) +_AFT.testVerbStatusError(testPrefix.."subscribe-gyroscope-replace-argument","iiodevices","subscribe", {event = "gyroscope", args = "xy", wrongarg = "test"}) + +_AFT.testVerbStatusError(testPrefix.."subscribe-acceleration-edge-effect","iiodevices","subscribe", {event = "acceleration", args = "xy"}) +_AFT.testVerbStatusError(testPrefix.."subscribe-compass-edge-effect","iiodevices","subscribe", {event = "compass", args = "xy"}) +_AFT.testVerbStatusError(testPrefix.."subscribe-gyroscope-edge-effect","iiodevices","subscribe", {event = "gyroscope", args = "xy"}) + +-- This tests the 'unsubscribe' verb of the iiodevices API without any devices +_AFT.testVerbStatusError(testPrefix.."unsubscribe-acceleration","iiodevices","unsubscribe", {event = "acceleration"}) +_AFT.testVerbStatusError(testPrefix.."unsubscribe-compass","iiodevices","unsubscribe", {event = "compass"}) +_AFT.testVerbStatusError(testPrefix.."unsubscribe-gyroscope","iiodevices","unsubscribe", {event = "gyroscope"}) + +_AFT.testVerbStatusError(testPrefix.."unsubscribe-acceleration-with-wrong-argument","iiodevices","unsubscribe", {event = "acceleration", aaaaaaaaaaaaaaaaaaaaa = "xy"}) +_AFT.testVerbStatusError(testPrefix.."unsubscribe-compass-with-wrong-argument","iiodevices","unsubscribe", {event = "compass", bbbbbbbbbbbbbbbb = "xy"}) +_AFT.testVerbStatusError(testPrefix.."unsubscribe-gyroscope-with-wrong-argument","iiodevices","unsubscribe", {event = "gyroscope", cccccccccccccccccc = "xy"}) + +_AFT.testVerbStatusError(testPrefix.."unsubscribe-acceleration-with-too-many-argument","iiodevices","unsubscribe", {event = "acceleration", args = "xy", wrongarg = "test"}) +_AFT.testVerbStatusError(testPrefix.."unsubscribe-compass-with-too-many-argument","iiodevices","unsubscribe", {event = "compass", args = "xy", wrongarg = "test"}) +_AFT.testVerbStatusError(testPrefix.."unsubscribe-gyroscope-with-too-many-argument","iiodevices","unsubscribe", {event = "gyroscope", args = "xy", wrongarg = "test"}) + +_AFT.testVerbStatusError(testPrefix.."unsubscribe-acceleration-edge-effect","iiodevices","unsubscribe", {event = "acceleration"}) +_AFT.testVerbStatusError(testPrefix.."unsubscribe-compass-edge-effect","iiodevices","unsubscribe", {event = "compass"}) +_AFT.testVerbStatusError(testPrefix.."unsubscribe-gyroscope-edge-effect","iiodevices","unsubscribe", {event = "gyroscope"}) + +_AFT.exitAtEnd() diff --git a/test/afb-test/tests/iiodevices_BasicAPITest.lua b/test/afb-test/tests/iiodevices_BasicAPITest.lua index 27afa9f..4bce13a 100644 --- a/test/afb-test/tests/iiodevices_BasicAPITest.lua +++ b/test/afb-test/tests/iiodevices_BasicAPITest.lua @@ -18,9 +18,74 @@ NOTE: strict mode: every global variables should be prefixed by '_' --]] -local testPrefix ="iiodevices_BasicAPITest_"; +-- Init ddevices --- This tests the 'list' verb of the iiodevices API -_AFT.testVerbStatusSuccess(testPrefix.."list","iiodevices","list", {}); +local device = {"acceleration", "gyroscope", "compass"} -_AFT.exitAtEnd(); +_AFT.setBeforeAll(function() + if not os.execute("/bin/bash ".._AFT.bindingRootDir.."/var/beforeAll.sh") then + print("Fail to create iio_dummy_device") + return -1 + else + return 0 + end +end) + +local testPrefix ="iiodevices_BasicAPITest_" + +for i = 1, 3 +do + + -- This tests the 'subscribe' verb of the iiodevices API without frequency + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-without-frequency_"..device[i],"iiodevices","subscribe", {event = device[i], args = "xy"}, nil, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) + end) + + -- This tests the 'subscribe' verb of the iiodevices API with null frequency + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-with-null-frequency_"..device[i],"iiodevices","subscribe", {event = device[i], args = "xy", frequency = 0 }, nil, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) + end) + + -- This tests the 'subscribe' verb of the iiodevices API with high frequency + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-with-100000000000-frequency_"..device[i],"iiodevices","subscribe", {event = device[i], args = "xy", frequency = 100000000000 }, nil, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) + end) + + -- This tests the 'subscribe' verb of the iiodevices API with negative frequency + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-with-negative-frequency_"..device[i],"iiodevices","subscribe", {event = device[i], args = "xy", frequency = -1 }, nil, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) + end) + + -- This tests the 'subscribe' verb of the iiodevices API with floating frequency + _AFT.testVerbStatusError(testPrefix.."subscribe-with-floating-frequency_"..device[i],"iiodevices","subscribe", {event = device[i], args = "xy", frequency = -3.141592654 }, nil, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) + end) + + -- This tests the 'subscribe' verb of the iiodevices API + _AFT.testVerbStatusSuccess(testPrefix.."subscribe_"..device[i],"iiodevices","subscribe",{event = device[i], args = "xy", frequency = 10 }, nil, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event = device[i]}) + end) + + -- This tests the 'unsubscribe' verb of the iiodevices API + _AFT.testVerbStatusSuccess(testPrefix.."unsubscribe_"..device[i],"iiodevices","unsubscribe",{event = device[i]}, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event = device[i], args = "xy"}) + end, nil) + + -- This tests the 'unsubscribe' verb of the iiodevices API when we are not actually subscribed to a device + _AFT.testVerbStatusSuccess(testPrefix.."doubleUnsubscribe_"..device[i],"iiodevices","unsubscribe",{event = device[i]}, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event = device[i]}) + end,nil) + + -- This tests the 'unsubscribe' verb of the iiodevices API when unsubscribing from a non-existing device + _AFT.testVerbStatusSuccess(testPrefix.."unsubscribeNonExistingdevice_"..device[i],"iiodevices","unsubscribe",{event = device[i]}) +end + +_AFT.exitAtEnd() |