Commit graph

353 commits

Author SHA1 Message Date
George Kiagiadakis
903fab9c3c core: return true from _is_connected() only after receiving the info structure 2023-04-17 07:48:18 -04:00
Julian Bouzas
310232b810 meson: install scripts in /usr/share/wireplumber
Since the wireplumber configuration has been moved to /usr/share/pipewire, it
does not makes sense to have a different path for the WIREPLUMBER_CONFIG_DIR
environment variable. Therefore, the WIREPLUMBER_CONFIG_DIR environment variable
has been changed to just be an alias of PIPEWIRE_CONFIG_DIR. Finally, Lua
scripts are now installed under /usr/share/wireplumber/scripts instead of
/usr/share/pipewire/scripts as they are a wireplumber feature only.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
e7c992e97d default-nodes-tests: use the changed variable in test utils 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
80554fe1c7 common-utils.lua: remove metadata object managers 2023-04-17 07:48:18 -04:00
Julian Bouzas
c61d1e4245 component-loader: make wp_core_load_component() API asynchronous
This change completely refactors the way components are loaded in wireplumber:
- The module_init() function must return a GObject now. This object is either
a WpPlugin or a WpSiFactory in the current modules.
- When the component loader initializes a module, it automatically registers
the WpPlugin or WpSiFactory with their respective methods. There is no need
to register the WpPlugin or WpSiFactory in the module now.
- The wp_core_load_component() API has been refactored to be asynchronows. This
allows the component loader to automatically activate WpPlugin objects, and
therefore allows the application to directly get the WpPlugin without having
to find it. This simplifies a lot of things.
- The 'ifexists' and 'nofail' component flags now work even if the respective
WpPlugin could not be activated.
- The code that loads components in main.c has also been simplified a lot,
and the option to load dangling components has also been removed.
2023-04-17 07:48:18 -04:00
George Kiagiadakis
7c2e713c9d m-metadata: remove module-metadata and replace it with a simple lua script 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
de3214d21b default-node: rename select-default-nodes.lua
Consistent across linking and default node scripts.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
9a0f8647ac test-utils: align style 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
c7c06351f7 test-utils: add a restartPlugin API 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
c88a569835 default node tests: add initial test
tests the initial metadata setup.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
0b29286f4f script-tester: add a restart-plugin action signal 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
d4d4e23e9c script-tester: pass the fixture pointer to plugin 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
c9e55e6565 script-tester: run default-node scripts ahead of m-metadata 2023-04-17 07:48:18 -04:00
Julian Bouzas
d2123827f7 scripts: use the event stack to handle virtual session items
This removes both the policy-virtual-client.lua and policy-virtual-device.lua
scripts, and creates a new linking/find-virtual-target.lua script to link
clients with virtual session items if one of them can be found. In addition to
this, this patch also ports the policy-virtual-client-links.lua into a new
scripts/rescan-virtual-links.lua to use the event stack. The idea is for the
scripts/link-target.lua to create all links but only activate non virtual links,
and for the scripts/rescan-virtual-links.lua to activate/deactivate virtual
links based on role priorities.
2023-04-17 07:48:18 -04:00
Julian Bouzas
9ee0f096ec tests: remove audiotestsrc-play example 2023-04-17 07:48:18 -04:00
Julian Bouzas
fb855b00cf Rename endpoint concept to virtual session item 2023-04-17 07:48:18 -04:00
Julian Bouzas
9004362cda lib: remove WpEndpoint and WpSiEndpoint APIs 2023-04-17 07:48:18 -04:00
Julian Bouzas
d43b55d01e tests: use WpConf for the settings unit tests
Also moves the settings.conf file into settings/wireplumber.conf
2023-04-17 07:48:18 -04:00
Julian Bouzas
360e0b3eaf scripts: use WpConf API to get configuration values
This patch also moves nested configuration objects that are not considered
settings from the wireplumber.settings section to its own configuration
section (eg the rules array, the spa plugin properties, etc...). This allows
those objects to be merged with other same sections defined in other files.
2023-04-17 07:48:18 -04:00
Julian Bouzas
cb80cb750b conf: add support to override sections and nested objects/arrays 2023-04-17 07:48:18 -04:00
Julian Bouzas
8f66b16673 lib: add WpConf API 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
6495eb6d21 linking tests: create stream node after device nodes are ready 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
8a6e28f496 test-utils.lua: create stream node with script tester plugin 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
cd7e9b190b script-tester: create a new script tester plugin
script tester plugin with a action signal to create the stream node.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
de394f7d02 linking tests: add defined tests 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
0099ef2932 test-utils.lua: add support for defined test cases 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
669b91678d linking tests: add default device test cases 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
db4ace420c test-lib.lua: add support of default device selection 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
de24f7a432 linking tests: add non default device tests 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
0d0230177a test-utils.lua: support non-default device tests 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
e13a3a0a89 script-tester.c: use the latest list of components
use the latest list of components needed to launch linking tests.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
a8aeb1010e policy tests: facilitate Lua src tests in script-tester.c 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
a1e79cc84b script tests: add test utils 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
1b09061b9d tests: settings: run all the tests with default metadata
There is no need to use an exclusive metadata just for tests, remove it to
simplify the code.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
8e78ec58e3 lua tests: script tests: add a new folder
Move the script-tester.c one folder up so that it is common for wplua and these tests.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
fcfae4eeb3 lib/wp: add a new search folder to locate the Lua Test scripts 2023-04-17 07:48:18 -04:00
Ashok Sidipotu
e23964c94b lua tests: script-tester: add new infrastructure needed to launch the policy tests
-Also add a dummy file for policy-tests
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
5dcdad4db7 lua tests: give a label to the current Lua script tests
This allows for Lua test scripts to be grouped into a label. So that they can be
treated different in terms of the init infrastructure that the script-tester
lays out for those tests.
2023-04-17 07:48:18 -04:00
George Kiagiadakis
ce44d9a5ef tests: lua-json: verify that nested objects inside arrays work 2023-04-17 07:48:18 -04:00
George Kiagiadakis
374602d759 test-lua-json: verify that empty arrays and objects work 2023-04-17 07:48:18 -04:00
George Kiagiadakis
3a23fb451a event-dispatcher: refactor to use before/after dependencies on hooks
* Remove entirely the hook priority numbers and use before/after dependencies
* Split the WpEvent code out of WpEventDispatcher
* Add methods on WpEvent to interface with it from the WpEventDispatcher.
  As a bonus, we can now also implement tooling to inspect which hooks would
  in theory run for an event and write tests around that
* Removed some internal debugging facilities and log calls, will redo it later.
* Using spa_list now for the list of hooks, to reduce the number of allocations
  happening in the "hook collection" algorithm
* Switched some internal data to use g_new0 instead of g_slice_new0
* Added g_free to free WpEvent structures... surprisingly, we were leaking them
  before
2023-04-17 07:48:18 -04:00
George Kiagiadakis
b100bdda4a event-hook: remove the exec type property & enumeration
With the latest changes, we can implement the "after-events" type
with external code that pushes a very low priority event that is
the "rescan" event.
2023-04-17 07:48:18 -04:00
Ashok Sidipotu
c0905c233f m-settings: trigger init of WpSettings object
After the creation of metadata with config data, m-settings will also need to
trigger the init of WpSettings Object/API. Earlier this was done in main.c as
part of init transition but the logic there is much more generalized now and so
it has been moved here.
2023-04-17 07:48:18 -04:00
Julian Bouzas
f1fbeaa661 m-lua-scripting: add fallback value for parse_{array|object}_safe() APIs 2023-04-17 07:48:18 -04:00
Julian Bouzas
d0e27ac82e settings: remove wp_settings_get_all() API
Not used anymore. It is better to use parse_object_safe() Lua API instead.
2023-04-17 07:48:18 -04:00
Julian Bouzas
d28d7d4278 settings: use WpSpaJson instead of raw string in WpSettingsChangedCallback
Avoids users to construct a WpSpaJson every time the callback is triggered.
2023-04-17 07:47:09 -04:00
Julian Bouzas
a77fe0b021 settings: add APIs to parse all types safely 2023-04-17 07:47:09 -04:00
Ashok Sidipotu
b172ae915f test/settings.lua: fix the assert failure in the callback API tests
The callback for the last test was getting called with non-string type and this
fails the test. fix it by sending string in correct format.

This test failure was not failing the "make test" this is known limitation in the test
setup. The limitation here is only with the last assert statement.
2023-04-17 07:47:09 -04:00
Ashok Sidipotu
72536261e9 policy-node.lua: Second round of cleanup.
- WirePlumber Lua now facilitates Lua libraries/modules, utilize this and create
  modules. Add some tests around this functionality.
- Create policy-hooks.lua containing all the hooks to find-target events
- Create policy-utils.lua module and push all the policy utility functions to it.
- Create common-utils.lua module and push the common utility functions to it.
- Remove all the above functionality from policy-node.lua and clean it up.
2023-04-17 07:47:09 -04:00
Ashok Sidipotu
3b211d9082 event-dispatcher: Introduce after-events-with-event hook type
after-events hooks are instantiated with rescan event, not with the event which
actually triggered it. after-events-with-event fills this gap.

policy-node clean needed this kind of hooks.
2023-04-17 07:47:09 -04:00