diff options
Diffstat (limited to 'test/afb-test')
-rw-r--r-- | test/afb-test/CMakeLists.txt | 22 | ||||
-rw-r--r-- | test/afb-test/etc/CMakeLists.txt | 31 | ||||
-rw-r--r-- | test/afb-test/etc/aft-4a-hal-config.json | 92 | ||||
-rw-r--r-- | test/afb-test/fixtures/CMakeLists.txt | 30 | ||||
-rw-r--r-- | test/afb-test/fixtures/alsacore.lua | 92 | ||||
-rw-r--r-- | test/afb-test/fixtures/smixer.lua | 255 | ||||
-rw-r--r-- | test/afb-test/tests/4a-hal-manager_BasicAPITest.lua | 46 | ||||
-rw-r--r-- | test/afb-test/tests/CMakeLists.txt | 31 |
8 files changed, 599 insertions, 0 deletions
diff --git a/test/afb-test/CMakeLists.txt b/test/afb-test/CMakeLists.txt new file mode 100644 index 0000000..9df744e --- /dev/null +++ b/test/afb-test/CMakeLists.txt @@ -0,0 +1,22 @@ +########################################################################### +# 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. +########################################################################### + + +# Include any directory not starting with _ +# ----------------------------------------------------- +PROJECT_SUBDIRS_ADD(${PROJECT_SRC_DIR_PATTERN})
\ 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..f001e3a --- /dev/null +++ b/test/afb-test/etc/CMakeLists.txt @@ -0,0 +1,31 @@ +########################################################################### +# 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. +########################################################################### + +################################################## +# 4A Hal 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 "TEST-CONFIG" + OUTPUT_NAME ${TARGET_NAME} + )
\ No newline at end of file diff --git a/test/afb-test/etc/aft-4a-hal-config.json b/test/afb-test/etc/aft-4a-hal-config.json new file mode 100644 index 0000000..5a9c342 --- /dev/null +++ b/test/afb-test/etc/aft-4a-hal-config.json @@ -0,0 +1,92 @@ +{ + "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": "aft-4a-hal-manager", + "info": "AFB-test binding configuration file to test 4a-hal-manager api.", + "require": [ + "4a-hal-manager","smixer","alsacore" + ] + }, + "testVerb": { + "uid": "launch_all_tests", + "info": "Launch all the tests", + "action": "lua://AFT#_launch_test", + "args": { + "trace": "4a-hal-manager", + "files": ["4a-hal-manager_BasicAPITest.lua"] + } + }, + "mapis": [{ + "uid": "alsacore", + "info": "Faked alsacore API", + "libs": "alsacore.lua", + "verbs": [ + { + "uid": "ping", + "info": "Ping Presence Check on API", + "action": "lua://alsacore#_ping" + }, + { + "uid": "infoget", + "info": "Return sound cards list", + "action": "lua://alsacore#_infoget" + }, + { + "uid": "ctlget", + "info": "Get one or many control values", + "action": "lua://alsacore#_ctlget" + }, + { + "uid": "ctlset", + "info": "Set one or many control values", + "action": "lua://alsacore#_ctlset" + }, + { + "uid": "subscribe", + "info": "Set one control or more", + "action": "lua://alsacore#_subscribe" + }, + { + "uid": "addcustomctl", + "info": "Set one control or more", + "action": "lua://alsacore#_addcustomctl" + } + ] + }, + { + "uid": "smixer", + "info": "Faked smixer API", + "libs": "smixer.lua", + "verbs": [ + { + "uid": "ping", + "info": "Ping Presence Check on API", + "action": "lua://smixer#_ping" + }, + { + "uid": "attach", + "info": "attach resources to mixer", + "action": "lua://smixer#_attach" + }, + { + "uid": "remove", + "info": "remove existing mixer streams, zones, ...", + "action": "lua://smixer#_remove" + }, + { + "uid": "info", + "info": "list existing mixer streams, zones, ...", + "action": "lua://smixer#_info" + }, + { + "uid": "bluezalsa", + "info": "set bluez alsa device", + "action": "lua://smixer#_bluezalsa" + } + ] + } + ] +}
\ No newline at end of file diff --git a/test/afb-test/fixtures/CMakeLists.txt b/test/afb-test/fixtures/CMakeLists.txt new file mode 100644 index 0000000..8b33784 --- /dev/null +++ b/test/afb-test/fixtures/CMakeLists.txt @@ -0,0 +1,30 @@ +########################################################################### +# 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. +########################################################################### + +################################################## +# Audio 4A test configuration files +################################################## +PROJECT_TARGET_ADD(data-files) + + file(GLOB DATA_FILES "*.lua" ) + add_input_files("${DATA_FILES}") + + SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES + LABELS "TEST-DATA" + OUTPUT_NAME ${TARGET_NAME} + ) diff --git a/test/afb-test/fixtures/alsacore.lua b/test/afb-test/fixtures/alsacore.lua new file mode 100644 index 0000000..1158d2c --- /dev/null +++ b/test/afb-test/fixtures/alsacore.lua @@ -0,0 +1,92 @@ +--[[ + 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. +--]] + +local i=1 j=1 + +function _infoget (request, args, json_object) + AFB:success(request, {devid="hw:"..i, devpath = json_object.devpath}) + i=i+1 +end + +function _ctlget (request, args, json_object) + AFB:success(request, + { + id = j, + name = "DVC Out Playback Volume", + iface = "MIXER", + actif = true, + val = {6710886,6710886}, + ctl = { + type = 2, + count = 2, + min = 0, + max = 8388607, + step = 0 + }, + acl = { + read = true, + write = true, + inact = false, + volat = false, + lock = false, + tlv = { + read = false, + write = false, + command = false + } + } + } +) +end + +function _ctlset (request) + j=j+1 + AFB:success(request, { + id = j, + name = "DVC Out Playback Volume", + iface = "MIXER", + actif = true, + val = {6710886,6710886}, + ctl = { + type = 2, + count = 2, + min = 0, + max = 8388607, + step = 0 + }, + acl = { + read = true, + write = true, + inact = false, + volat = false, + lock = false, + tlv = { + read = false, + write = false, + command = false + } + } + }) +end + +function _subscribe (request) + AFB:success(request) +end + +function _addcustomctl (request, args, json_object) + AFB:success(request, {id = i; devid = json_object.devid, ctl = json_object.ctl}) +end diff --git a/test/afb-test/fixtures/smixer.lua b/test/afb-test/fixtures/smixer.lua new file mode 100644 index 0000000..cc19327 --- /dev/null +++ b/test/afb-test/fixtures/smixer.lua @@ -0,0 +1,255 @@ +--[[ + 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. +--]] + +--function _ping(request) +-- AFB:success(request, {1}) +--end + +function _attach (request) + AFB:success(request, { + metadata = { + uid = "/dev/snd/by-path/pci-0000=00=1b.0", + version = "0.9", + api = "4a-hal-intel", + require = { "alsacore", "smixer" }, + info = "4a hal for Intel device", + author = "Jonathan Aillet", + date = "2018-06-13" + }, + resources = { + { + uid = "hal-bt", + info = "Bluetooth hal plugin to get A2DP bluetooth device as an input by tweaking softmixer configuration", + params = { + channels = 2, + zone = "front-seats" + }, + libs = {"hal-bt.ctlso"} + } + }, + controls = { + { + uid = "ping", + info = "Ping hal", + action = "api=//4a-hal-manager#ping" + } + }, + halmap = { + { + uid = "agl-master-playback-volume", + alsa = { + name = "Master Playback Volume", + value = 100 + } + }, + { + uid = "agl-pcm-playback-volume", + alsa = { + name = "PCM Playback Volume", + value = 100 + } + }, + { + uid = "agl-master-playback-switch", + alsa = { + name = "Master Playback Switch", + value = 1 + } + }, + { + uid = "agl-capture-volume", + alsa = { + name = "Capture Volume" + } + } + }, + halmixer = { + uid = "intel", + mixerapi = "smixer", + prefix = "intel-generic", + ramps = { + { + uid = "ramp-very-fast", + delay = 50, + up = 6, + down = 10 + }, + { + uid = "ramp-fast", + delay = 50, + up = 2, + down = 10 + }, + { + uid = "ramp-normal", + delay = 50, + up = 2, + down = 4 + }, + { + uid = "ramp-slow", + delay = 50, + up = 2, + down = 2 + }, + { + uid = "ramp-very-slow", + delay = 100, + up = 1, + down = 1 + } + }, + playbacks = { + uid = "INTEL", + path = "/dev/snd/by-path/pci-0000=00=1b.0", + params = { + rate = 48000 + }, + sink = { + controls = { + volume = { + name = "Master Playback Volume", + value = 80 + }, + mute = { + name = "Master Playback Switch" + } + }, + channels = { + { + uid = "front-right", + port = 0 + }, + { + uid = "front-left", + port = 1 + } + } + } + }, + captures = { + uid = "INTEL", + path = "/dev/snd/by-path/pci-0000=00=1b.0", + params = { + rate = 48000 + }, + source = { + controls = { + volume = { + name = "Capture Volume" + }, + mute = { + name = "Capture Switch" + } + }, + channels = { + { + uid = "mic-right", + port = 0 + }, + { + uid = "mic-left", + port = 1 + } + } + } + }, + zones = { + { + uid = "full-stereo", + sink = { + { + target = "front-right", + channel = 0 + }, + { + target = "front-left", + channel = 1 + } + } + }, + { + uid = "front-seats", + sink = { + { + target = "front-right", + channel = 0 + }, + { + target = "front-left", + channel = 1 + } + } + } + }, + streams = { + { + uid = "multimedia", + verb = "multimedia", + zone = "full-stereo", + volume = 60, + mute = false, + params = { + rate = 48000 + } + }, + { + uid = "navigation", + verb = "navigation", + zone = "front-seats", + volume = 70, + mute = false, + params = { + rate = 48000 + } + }, + { + uid = "emergency", + verb = "emergency", + zone = "front-seats", + volume = 60, + mute = false, + params = { + rate = 48000 + } + }, + { + uid = "radio_stream", + verb = "radio_stream", + zone = "full-stereo", + volume = 70, + mute = true, + params = { + rate = 48000 + } + } + } + } + }) + end + + function _remove (request) + AFB:success(request, {2}) + end + + function _info (request) + AFB:success(request, {2}) + end + + function _bluezalsa_dev (request) + AFB:success(request, {2}) + end
\ No newline at end of file diff --git a/test/afb-test/tests/4a-hal-manager_BasicAPITest.lua b/test/afb-test/tests/4a-hal-manager_BasicAPITest.lua new file mode 100644 index 0000000..e4468c5 --- /dev/null +++ b/test/afb-test/tests/4a-hal-manager_BasicAPITest.lua @@ -0,0 +1,46 @@ +--[[ + 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 ="4a-hal-manager_BasicAPITest_" + +-- This tests the ping verb of the audio ping +_AFT.testVerbStatusSuccess(testPrefix.."ping","4a-hal-manager","ping", {}, nil, nil) + +-- This tests the loaded verb of the audio loaded +_AFT.testVerbStatusSuccess(testPrefix.."loaded","4a-hal-manager","loaded", {verbose = true}, nil, nil) + +-- This tests the load verb of the audio load +_AFT.testVerbStatusSuccess(testPrefix.."load","4a-hal-manager","load", +{ + metadata = { + uid = "/dev/snd/by-path/pci-0000:00:1b.0", + version = 0.9 , + api = "4a-hal-intel", + require = {"alsacore", "smixer"}, + info = "4a hal for Intel device", + author = "Jonathan Aillet", + date = "2018-06-13" + } +}, +nil, nil) + +-- This tests the unload verb of the audio unload +_AFT.testVerbStatusSuccess(testPrefix.."unload","4a-hal-manager","unload", +{api = "4a-hal-intel"}, nil, nil) diff --git a/test/afb-test/tests/CMakeLists.txt b/test/afb-test/tests/CMakeLists.txt new file mode 100644 index 0000000..3884412 --- /dev/null +++ b/test/afb-test/tests/CMakeLists.txt @@ -0,0 +1,31 @@ +########################################################################### +# 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. +########################################################################### + + +################################################## +# 4A Hal 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 "TEST-DATA" + OUTPUT_NAME ${TARGET_NAME} + )
\ No newline at end of file |