summaryrefslogtreecommitdiffstats
path: root/test/afb-test
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 /test/afb-test
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>
Diffstat (limited to 'test/afb-test')
-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
5 files changed, 198 insertions, 12 deletions
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()