aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Marec <frederic.marec@iot.bzh>2018-08-28 17:01:48 +0200
committerFrédéric Marec <frederic.marec@iot.bzh>2018-10-04 12:37:01 +0000
commitc729e902dff501c8c3e441d49c6d0fe1ad28eede (patch)
treed4678a3e7115149a17ce796752e32dc403c52c52
parent0648db82e6a5694befcf9e2fff25f4392e6814e1 (diff)
Add tests for iiodevice binding
Add test for accelerometer, compass and gyroscope Add script beforeAll.sh to initiate iio dummy devices Add Readme.md to describe how to use test Fix BUILD_TYPE in cmake.config Change-Id: I39edfce6a43b519c0ff6bc0a7d2f1d2477098cff Signed-off-by: Frederic Marec <frederic.marec@iot.bzh>
-rw-r--r--README.md17
-rw-r--r--conf.d/cmake/config.cmake3
-rwxr-xr-xtest/afb-test.sh4
-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.txt11
-rwxr-xr-xtest/afb-test/fixtures/beforeAll.sh65
-rw-r--r--test/afb-test/tests/iiodevices_BasicAPITest-devices.lua57
-rw-r--r--test/afb-test/tests/iiodevices_BasicAPITest.lua73
8 files changed, 218 insertions, 16 deletions
diff --git a/README.md b/README.md
index 852069c..cc30b85 100644
--- a/README.md
+++ b/README.md
@@ -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()