Get or set a key in a configuration file.
Probe Type ID: configurationfile
Properties:
Name | Type | Default value | Description |
---|---|---|---|
plugin_properties |
dict[string] of dict | {} |
properties to pass to sub-plugins, indexed by the format they support |
Properties for the ini
plugin:
Name | Type | Default value | Description |
---|---|---|---|
comments |
list of strings | ['#', ';'] |
List of characters or strings that identify a comment in a .ini file |
There are no properties for the other xml
and conf
plugins.
This probe is specialized in updating configuration files, so that you can easily integrate small configuration changes prior to running a particular test (and rollback this change after).
In can only work with files located on the system the probe is running on (i.e. you cannot update a file remotely via this probe, but you can still deploy your probe on a remote agent, so technically you can still update a configuration file anywhere on your distributed SUT).
This implementation relies on probe-specific plugins (yes, nested plugins ! where this over-engineering spree will end ?)
to update the files. These plugins simply provide get
and set
operations for a specific key, and the way the key
is identified is plugin-specific.
Currently the following configuration file formats are supported:
.xml
): the key format is a XPath request, so you can change an element value or attribute..conf
): the typical key=value configuration file that
can be read by sh
, using #
for comments, and a flat structure (no sections)..ini
): Windows-like configuration files, with sections. The key format is “section/key”.
The characters used for comments in such a file are configurable (see the comments
property) so that
it could adapt to some custom INI file formats.The plugin to use to handle a configuration file is automatically detected based on the file extension, unless you force one
(which is convenient to support INI files named something.conf
).
To get the value of a key in a file (here, the value of the key name key
in section [section]
in the INI configuration file /pat/to/my/config.ini
), simply send the following message:
Then, expect a result message:
If the key or the configuration file was not found or not readable, the returned value is an empty string.
To set the previous key to a given value:
Then, optionally expect a result message (if you don’t mind if the operation succeeded, don’t expect anything):
Other received messages indicate a set error.
As usual, it may be convenient to embed these message-based calls into a convenience function to use in your ATSes.
All platforms.
None.
The test system interface port bound to such a probe complies with the ConfigFileProbeType
port type as specified below:
type union Command
{
SetKeyCommand set,
GetKeyCommand get,
}
type record SetKeyCommand
{
charstring filename,
charstring keypath,
charstring value,
charstring format optional, // default: autodetect based on extension
}
type record GetKeyCommand
{
charstring filename,
charstring keypath,
charstring format optional, // default: autodetect based on extension
}
type union Result
{
charstring errorResult, // contains a human readable error string
charstring getResult, // empty string if not found
bool setResult, // True if OK, False otherwise
}
type port ConfigFileProbeType
{
in Command;
out Result
}
Properties: || plugin_properties`|| dict[string] of dict || `{} || properties to pass to plugins, indexed by the format they support ||
Properties for the ini plugin: || comments || list of strings || [‘#’, ‘;’] || List of characters or strings that identify a comment in a .ini file ||