From 1594db372602c5859484b5f75ab6fb89f6c55550 Mon Sep 17 00:00:00 2001 From: Frederic Marec Date: Wed, 24 Oct 2018 16:12:37 +0200 Subject: Improve iiodevices test ADD $SUDO variable to be able to run test natively and on target ADD afterall script to remove dummy devices ADD new tests Remove test/afb-test.sh following new afm-test process Change-Id: Ib04e21f23518e8836c7bec00999f15f5d8212ae9 Signed-off-by: Frederic Marec --- test/afb-test.sh | 29 ------- test/afb-test/fixtures/afterAll.sh | 39 +++++++++ test/afb-test/fixtures/beforeAll.sh | 27 +++--- .../tests/iiodevices_BasicAPITest-devices.lua | 44 ++++------ test/afb-test/tests/iiodevices_BasicAPITest.lua | 95 +++++++++++++++------- 5 files changed, 137 insertions(+), 97 deletions(-) delete mode 100755 test/afb-test.sh create mode 100755 test/afb-test/fixtures/afterAll.sh diff --git a/test/afb-test.sh b/test/afb-test.sh deleted file mode 100755 index fa4f821..0000000 --- a/test/afb-test.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh - -BINDER=$(command -v afb-daemon) -AFBTEST="$(pkg-config --variable libdir afb-test)/aft.so" -PROCNAME="aft-iiodevices" -PORT=1234 -TOKEN= -LOGFILE="test.log" -[ "$1" ] && BUILDDIR="$1" || exit 1 - -TESTPACKAGEDIR="${BUILDDIR}/package-test" -export AFT_CONFIG_PATH="${TESTPACKAGEDIR}/etc" -export AFT_PLUGIN_PATH="${TESTPACKAGEDIR}/var:${TESTPACKAGEDIR}/lib/plugins" - -pkill $PROCNAME - -timeout -s 9 10 "${BINDER}" --name="${PROCNAME}" \ - --port="${PORT}" \ - --roothttp=. \ - --tracereq=common \ - --token=${TOKEN} \ - --workdir="${TESTPACKAGEDIR}" \ - --binding="../package/lib/afb-iiodevices.so" \ - --binding="$AFBTEST" \ - --call="aft-iiodevices/launch_all_tests:{}" \ - --call="aft-iiodevices/exit:{}" \ - -vvv > "${LOGFILE}" 2>&1 - -find "${BUILDDIR}" -name test_results.log -exec cat {} \; diff --git a/test/afb-test/fixtures/afterAll.sh b/test/afb-test/fixtures/afterAll.sh new file mode 100755 index 0000000..67d4607 --- /dev/null +++ b/test/afb-test/fixtures/afterAll.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +set -e + +########################################################################### +# Copyright 2018 IoT.bzh +# +# author:Frédéric Marec +# +# 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. +########################################################################### + +#set SUDO variable +SUDO=$(command -v sudo) + +# delete dummy devices +if test -d "/sys/kernel/config/iio/devices/dummy/16-001d" +then + "${SUDO}" rm -rf "/sys/kernel/config/iio/devices/dummy/16-001d" +else + echo "devices 16-001d didn't exist" +fi + +if test -d "/sys/kernel/config/iio/devices/dummy/16-006b" +then + "${SUDO}" rm -rf "/sys/kernel/config/iio/devices/dummy/16-006b" +else + echo "devices 16-006b didn't exist" +fi \ No newline at end of file diff --git a/test/afb-test/fixtures/beforeAll.sh b/test/afb-test/fixtures/beforeAll.sh index 1a72b80..65a99f3 100755 --- a/test/afb-test/fixtures/beforeAll.sh +++ b/test/afb-test/fixtures/beforeAll.sh @@ -20,45 +20,48 @@ set -e # limitations under the License. ########################################################################### +#set SUDO variable +SUDO=$(command -v sudo) + # Init list list="acceleration gyroscope compass" # Configure iio_dummy -modprobe industrialio -modprobe industrialio-configfs +"${SUDO}" modprobe industrialio +"${SUDO}" 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 +"${SUDO}" modprobe industrialio-sw-device +"${SUDO}" modprobe industrialio-sw-trigger +"${SUDO}" modprobe iio-trig-hrtimer +"${SUDO}" modprobe iio_dummy # create one iio_dummy -for device in $list +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 + then + "${SUDO}" 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" + "${SUDO}" 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" + "${SUDO}" mkdir -p "/sys/kernel/config/iio/devices/dummy/16-006b" else echo "$device was already created" fi diff --git a/test/afb-test/tests/iiodevices_BasicAPITest-devices.lua b/test/afb-test/tests/iiodevices_BasicAPITest-devices.lua index f2e9cc4..4bc4435 100644 --- a/test/afb-test/tests/iiodevices_BasicAPITest-devices.lua +++ b/test/afb-test/tests/iiodevices_BasicAPITest-devices.lua @@ -18,41 +18,31 @@ NOTE: strict mode: every global variables should be prefixed by '_' --]] +local devices = {"acceleration", "gyroscope", "compass"} local testPrefix ="iiodevices_BasicAPITest_without_devices_" --- This tests the 'subscribe' verb of the iiodevices API without any devices -_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","iiodevices","subscribe", {event = "acceleration", args = "abc"}) +for _, device in pairs(devices) +do + -- This tests the 'subscribe' verb of the iiodevices API without any devices + _AFT.testVerbStatusError(testPrefix.."subscribe-"..device,"iiodevices","subscribe", {event = device, args = "xy"}) -_AFT.testVerbStatusError(testPrefix.."subscribe-acceleration-with-wrong-argument","iiodevices","subscribe", {event = "acceleration", args = "abc"}) -_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-"..device.."-with-tree-axes","iiodevices","subscribe", {event = device, args = "abc"}) -_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-"..device.."-with-wrong-argument","iiodevices","subscribe", {event = device, aaaaaaaaaaaaaaaaaaaaa = "xy"}) -_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"}) + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-"..device.."-replace-argument","iiodevices","subscribe", {event = device, args = "xy", wrongarg = "test"}) --- 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.."subscribe-"..device.."-edge-effect","iiodevices","subscribe", {event = device, args = "xy"}) -_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"}) + -- This tests the 'unsubscribe' verb of the iiodevices API without any devices + _AFT.testVerbStatusError(testPrefix.."unsubscribe-"..device.."","iiodevices","unsubscribe", {event = device}) -_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.testVerbStatusError(testPrefix.."unsubscribe-"..device.."-with-wrong-argument","iiodevices","unsubscribe", {event = device, aaaaaaaaaaaaaaaaaaaaa = "xy"}) + + _AFT.testVerbStatusError(testPrefix.."unsubscribe-"..device.."-with-too-many-argument","iiodevices","unsubscribe", {event = device, args = "xy", wrongarg = "test"}) + + _AFT.testVerbStatusError(testPrefix.."unsubscribe-"..device.."-edge-effect","iiodevices","unsubscribe", {event = device}) +end _AFT.exitAtEnd() diff --git a/test/afb-test/tests/iiodevices_BasicAPITest.lua b/test/afb-test/tests/iiodevices_BasicAPITest.lua index 4bce13a..1f43bb4 100644 --- a/test/afb-test/tests/iiodevices_BasicAPITest.lua +++ b/test/afb-test/tests/iiodevices_BasicAPITest.lua @@ -20,7 +20,7 @@ -- Init ddevices -local device = {"acceleration", "gyroscope", "compass"} +local devices = {"acceleration", "gyroscope", "compass"} _AFT.setBeforeAll(function() if not os.execute("/bin/bash ".._AFT.bindingRootDir.."/var/beforeAll.sh") then @@ -31,61 +31,98 @@ _AFT.setBeforeAll(function() end end) +_AFT.setAfterAll(function() + if not os.execute("/bin/bash ".._AFT.bindingRootDir.."/var/afterAll.sh") then + print("Fail to remove dummy devices") + return -1 + else + return 0 + end +end) + local testPrefix ="iiodevices_BasicAPITest_" -for i = 1, 3 +for _, device in pairs(devices) do + _AFT.describe(testPrefix.."receive-subscribe event", function() + local timeout = 2000000 + local evt = "iiodevices/"..device.."0" + _AFT.callVerb("iiodevices","subscribe",{event= device}) + _AFT.addEventToMonitor(evt) + _AFT.assertEvtReceived(evt, timeout) + _AFT.callVerb("iiodevices","unsubscribe",{event= device}) + end + ,nil, nil) + + -- This tests the 'subscribe' verb of the iiodevices API without frequency + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-without-frequency_"..device,"iiodevices","subscribe", {event = device, args = "xy"}, nil, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event= device}) + end) -- 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, + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-with-3-axes_"..device,"iiodevices","subscribe", {event = device, args = "xyz"}, nil, function() - _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) - end) + _AFT.callVerb("iiodevices","unsubscribe",{event= device}) + 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, + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-with-null-frequency_"..device,"iiodevices","subscribe", {event = device, args = "xy", frequency = 0 }, nil, function() - _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) - end) + _AFT.callVerb("iiodevices","unsubscribe",{event= device}) + 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, + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-with-100000000000-frequency_"..device,"iiodevices","subscribe", {event = device, args = "xy", frequency = 100000000000 }, nil, function() - _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) - end) + _AFT.callVerb("iiodevices","unsubscribe",{event= device}) + 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, + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-with-negative-frequency_"..device,"iiodevices","subscribe", {event = device, args = "xy", frequency = -1 }, nil, function() - _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) - end) + _AFT.callVerb("iiodevices","unsubscribe",{event= device}) + 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, + _AFT.testVerbStatusSuccess(testPrefix.."subscribe-with-floating-frequency_"..device,"iiodevices","subscribe", {event = device, args = "xy", frequency = -3.141592654 }, nil, function() - _AFT.callVerb("iiodevices","unsubscribe",{event= device[i]}) + _AFT.callVerb("iiodevices","unsubscribe",{event= device}) 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) + _AFT.testVerbStatusSuccess(testPrefix.."subscribe_"..device,"iiodevices","subscribe",{event = device, args = "xy", frequency = 10 }, nil, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event = device}) + 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) + _AFT.testVerbStatusSuccess(testPrefix.."unsubscribe_"..device,"iiodevices","unsubscribe",{event = device}, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event = device, 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) + _AFT.testVerbStatusSuccess(testPrefix.."doubleUnsubscribe_"..device,"iiodevices","unsubscribe",{event = device}, + function() + _AFT.callVerb("iiodevices","unsubscribe",{event = device}) + 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]}) + _AFT.testVerbStatusSuccess(testPrefix.."unsubscribeNonExistingdevice_"..device,"iiodevices","unsubscribe",{event = device}) + + -- This tests the 'unsubscribe' verb of the iiodevices API when unsubscribing with null device + _AFT.testVerbStatusError(testPrefix.."unsubscribe-with-null-event_"..device,"iiodevices","unsubscribe",{event = null}) + + -- This tests the 'subscribe' verb of the iiodevices API when subscribing whith device + _AFT.testVerbStatusError(testPrefix.."subscribe-with-null-event_"..device,"iiodevices","subscribe",{event = null}) + + -- This tests the 'unsubscribe' verb of the iiodevices API when unsubscribing with null argument + _AFT.testVerbStatusError(testPrefix.."unsubscribe-with-null-arg_"..device,"iiodevices","unsubscribe",{event = device, args = null}) + + -- This tests the 'subscribe' verb of the iiodevices API when subscribing whith null argument + _AFT.testVerbStatusError(testPrefix.."subscribe-with-null-arg_"..device,"iiodevices","subscribe",{event = device, args = null}) + end _AFT.exitAtEnd() -- cgit 1.2.3-korg