Testing your plugins
Grilo ships a GTK+ test user interface called grilo-test-ui
that can be used
to test new plugins. This simple playground application can be found in the
‘grilo’ core source code under tools/grilo-test-ui/
. If you have Grilo
installed on your system, you may have this application installed as well.
This application loads plugins from the default plugin installation directory in
your system or, alternatively, by inspecting the GRL_PLUGIN_PATH
environment
variable, which can be set to contain a list of directories where Grilo should
look for plugins.
Once the plugin library is visible to Grilo one only has to start the
grilo-test-ui
application and it will load it along with other Grilo plugins
available in the system.
In case there is some problem with the initialization of the plugin it should be
logged on the console. Remember that you can control the amount of logging done
by Grilo through the GRL_DEBUG
environment variable. You may want to set this
variable to do full logging, in which case you should type this in your console:
$ export GRL_DEBUG="*:*"
If you want to focus only on logging the plugin loading process, configure Grilo to log full details from the plugin registry module alone by doing this instead:
$ export GRL_DEBUG="registry:*"
In case your plugin has been loaded successfully you should see something like this in the log:
(lt-grilo-test-ui:14457): Grilo-DEBUG: [registry] grl-registry.c:188: Plugin rank [plugin-id]' : 0
(lt-grilo-test-ui:14457): Grilo-DEBUG: [registry] grl-registry.c:476: New source available: [source-id]
(lt-grilo-test-ui:14457): Grilo-DEBUG: [registry] grl-registry.c:683: Loaded plugin '[plugin-id]' from '[plugin-file-absolute-path.so]'
If your plugin is a Media Source (not a Metadata Source) you should be able to
see it in the user interface of grilo-test-ui
like this:
- If the plugin implements Browse you should see the media source objects spawned by the plugin in the list shown in the main view. You can browse the plugin by double-clicking on any of its sources.
- If the plugin implements Search you should see the media source objects spawned by the plugin in the combo box next to the “Search” button. You can now search content by selecting the media source you want to test in the combo, inputting a search text in the text entry right next to it and clicking the Search button.
- If the plugin implements query you should see the media source objects spawned by the plugin in the combo box next to the “Query” button. You can now query content by selecting the media source you want to test in the combo, inputting the plugin-specific query string in the text entry right next to it and clicking the Query button.
If your plugin is a Metadata Source then you should test it by doing a Browse,
Search or Query operation in some other Media Source available and then click on
any of the media items showed as result. By doing this grilo-test-ui
will
execute a Metadata operation which would use any available metadata plugins to
gather as much information as possible. Available metadata obtained for the
selected item will be shown in the right pane for users to inspect.
Simulating Network Replies
For offline testing of plug-ins, particularly in automated tests, it is useful to simulate and return predefined network replies. Therefore, Grilo provides a few facilities for mocking network replies.
To enable mocking, set the environment variable GRL_NET_MOCKED
. The value of
this variable is interpreted as the path of the mock configuration file to use.
This file is a simple .ini
file, split into a “default” section and one
section per URL to mock.
[default]
version = 1
ignored-parameters = field1[;field2[;...]] or "*"
[http://www.example.com]
data = content/of/response.txt
timeout = 500
An easy way to capture the responses is to run your application with the
environment variable GRL_NET_CAPTURE_DIR
. GrlNetWc will then write each
response into a file following the pattern “url-timestamp”. If the directory
does not exist yet then it will be created.
The Default Section
This section needs to be present in any mock reply configuration file.
version
needs to be “1”.ignored-parameters
is a semicolon separated list of query parameter names that can be used to map URLs to sections without paying attention to query parameters listed here. By setting a value of “api_key” a request forhttp://www.example.com?q=test+query&api_key=dummy
will be answered with the mock data forhttp://www.example.com?q=test+query
. Setting “api_key;q” or “*” will result in mock answer forhttp://www.example.com
.
The URL Sections
The section title is used to map URLs to response files.
data
is a path to a text file containing the raw response of the websserver. The path may be relative to this configuration file or an absolute path.timeout
may be used to delay the response in seconds. The default is to not delay at all.
Skip the data
field to provoke a “not found” error.