From db4ace420c62927fb7b8018f754f99521c179cbf Mon Sep 17 00:00:00 2001 From: Ashok Sidipotu Date: Thu, 5 Jan 2023 17:04:10 +0530 Subject: [PATCH] test-lib.lua: add support of default device selection --- tests/scripts/scripts/lib/test-utils.lua | 45 +++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/tests/scripts/scripts/lib/test-utils.lua b/tests/scripts/scripts/lib/test-utils.lua index f91f8945..1b002157 100644 --- a/tests/scripts/scripts/lib/test-utils.lua +++ b/tests/scripts/scripts/lib/test-utils.lua @@ -35,7 +35,6 @@ function u.createDeviceNode (name, media_class) u.lnkbls [name] = nil u.lnkbl_count = u.lnkbl_count + 1 end) - return node end @@ -45,4 +44,48 @@ function u.createStreamNode (name) u.lnkbl_count = u.lnkbl_count + 1 end +u.metadata = cu.default_metadata_om:lookup () +assert (u.metadata ~= nil) + +-- hook to keep track of the linkables created. +SimpleEventHook { + name = "test-utils-linking", + interests = { + -- on linkable added or removed, where linkable is adapter or plain node + EventInterest { + Constraint { "event.type", "=", "session-item-added" }, + Constraint { "event.session-item.interface", "=", "linkable" }, + Constraint { "item.factory.name", "c", "si-audio-adapter", "si-node" }, + }, + }, + execute = function (event) + local lnkbl = event:get_subject () + local lp = lnkbl.properties + local name = lp ["node.name"] + + Log.info (lnkbl, "activated linkable: " .. name .. + " with media_class: " .. lp ["media.class"]) + if not u.lnkbls [name] then + u.lnkbls [name] = lnkbl + else + Log.info ("unknown linkable " .. name) + end + + if name == "default-device-node" then + local args = { ["name"] = name } + local args_json = Json.Object (args) + local key = nil + + if lp ["media.class"] == "Audio/Sink" then + key = "default.configured.audio.sink" + elseif lp ["media.class"] == "Audio/Source" then + key = "default.configured.audio.source" + end + + -- configure default device. + u.metadata:set (0, key, "Spa:String:JSON", args_json:get_data ()) + end + end +}:register () + return u