[Avocado-devel] pre_command / post_command clarification

Lukáš Doktor ldoktor at redhat.com
Thu Mar 16 10:56:50 UTC 2017


Hello Radek,

my proposal was to write a custom pre/post plugin, not just a pre/post 
script. You'd then ship your plugin to your test machines and install 
similarly to avocado-vt installation and if your plugin is generic 
enough, you can even propose it to avocado-vt upstream. There is already 
the `vt_joblock` pre/post plugin there 
(avocado-vt/avocado_vt/plugins/vt_joblock.py).

I don't know of any way to obtain the information you need in `pre.d` 
script. In `post.d` script you could theoretically parse the `results` 
directory which you can get from the environment, but such solution 
would be quite ugly.

Kind regards,
Lukáš

Dne 15.3.2017 v 15:41 Radek Duda napsal(a):
> Hi Lukas,
> concerning our IRC discussion (Lukas proposed to use
> job.test_suite[0][1].vt_param to obtain particular test parameters at
> the pre test phase):
> I still do not know how to solve accessibility of `job` variable in bash
> script (which should be created in dirs /etc/avocado/scripts/job/{pre.d,
> post.d}). The only solution seems to me is to export desired variables
> (test status, test name) to env (add it to
> `_job_to_environment_variables` method in `jobscripts.py`), but it is
> not good idea to mix avcado-vt variables to avocado code and I prefer to
> avoid editing avocado code at all.
>
> regards,
>
> Radek
>
> On Tue, Mar 14, 2017 at 6:17 PM, Lukáš Doktor <ldoktor at redhat.com
> <mailto:ldoktor at redhat.com>> wrote:
>
>     Hello Radek,
>
>     Dne 14.3.2017 v 12:14 Radek Duda napsal(a):
>
>         Is there a way to implement this using Avocado 36.0lts?. I
>         cannot find
>         ResultEvent method in lts release nor plugin_interfaces.py file.
>
>     The location is different, but the pre/post plugins were already
>     supported in 36lts. The definition is in `avocado.plugins.base` and
>     there is `avocado.plugins.jobscripts` which is an implementation of
>     a pre/post plugin (which allows to execute custom scripts, which
>     might actually be enough in your case, don't know).
>
>     Anyway I don't know how are you executing the tests, but if you use
>     Jenkins (or other automated way) I'd recommend adding those commands
>     there. Anyway if you run them manually then shared configuration or
>     even a plugin is the best approach.
>
>     Lukáš
>
>
>         regards,
>
>         Radek Duda
>
>         On Fri, Feb 10, 2017 at 9:19 PM, Lucas Meneghel Rodrigues
>         <lookkas at gmail.com <mailto:lookkas at gmail.com>
>         <mailto:lookkas at gmail.com <mailto:lookkas at gmail.com>>> wrote:
>
>
>
>             On Fri, Feb 10, 2017 at 11:16 AM Cleber Rosa
>         <crosa at redhat.com <mailto:crosa at redhat.com>
>             <mailto:crosa at redhat.com <mailto:crosa at redhat.com>>> wrote:
>
>
>
>                 On 02/10/2017 05:01 AM, Andrei Stepanov wrote:
>                 > Hi.
>                 >
>                 > We need a reliable mechanism to notify Beaker server
>         about start+result
>                 > of a avocado-vt test. As you know, avocado-vt test is
>         one of the many
>                 > tests produced from cartesian config. We need to
>         notify Beaker about
>                 > start+results of _each_ test.
>                 >
>                 > Currently we use: pre_command / post_command
>                 >
>                 > I discovered yesterday, that this commands are not
>         called for FAILED
>                 > tests. Especially those have a error in syntax.
>                 >
>                 > In IRC Lukáš Doktor suggested to:
>                 >
>                 > 19:22<ldoktor>astepano: Hello Andrei, the
>         `post_command` is part of the
>                 > `env_process` during the postprocess which means it's
>         one of the cleanup
>                 > steps the problem is when the postprocess fails before
>         getting to
>                 > `post_command` it will not be executed. It all depends
>         on many factors.
>                 > Anyway I don't know what all information do you need
>         to produce your
>                 > results but I'd strongly recommend writing either
>         `JobPostTests` plugin,
>                 > or if you need per-test granularity t
>                 > 19:23<ldoktor>Also writing such plugin is really
>         simple and there are
>                 > examples in our sources...
>                 >
>                 > So, I want to bring our conversation to this mail listing.
>                 >
>                 > I am not sure that such plugin will do job for
>         avocado-vt tests.
>                 > Avacodo-vt tests generated from cartesian configs.
>                 >
>                 > Could you please suggest me the right approach to
>         coupe with this issue?
>                 >
>                 > I need mechanism to call external program before &
>         after _each_
>                 > avocado-vt test. The program's environment should have
>         variables:
>                 > TESTNAME / TESTRESULT.
>                 >
>
>                 Andrei,
>
>                 As a *very* brief answer, I'd say this looks like
>         something that
>                 can be
>                 implemented as a `ResultEvents` plugin:
>
>                  *
>
>         http://avocado-framework.readthedocs.io/en/45.0/ResultFormats.html#implementing-other-result-formats
>         <http://avocado-framework.readthedocs.io/en/45.0/ResultFormats.html#implementing-other-result-formats>
>
>         <http://avocado-framework.readthedocs.io/en/45.0/ResultFormats.html#implementing-other-result-formats
>         <http://avocado-framework.readthedocs.io/en/45.0/ResultFormats.html#implementing-other-result-formats>>
>                  *
>
>         http://avocado-framework.readthedocs.io/en/45.0/api/core/avocado.core.html#avocado.core.plugin_interfaces.ResultEvents
>         <http://avocado-framework.readthedocs.io/en/45.0/api/core/avocado.core.html#avocado.core.plugin_interfaces.ResultEvents>
>
>         <http://avocado-framework.readthedocs.io/en/45.0/api/core/avocado.core.html#avocado.core.plugin_interfaces.ResultEvents
>         <http://avocado-framework.readthedocs.io/en/45.0/api/core/avocado.core.html#avocado.core.plugin_interfaces.ResultEvents>>
>
>                 You would write methods such as "start_test" and
>         "end_test" to
>                 send the
>                 needed info to Beaker.
>
>                 This would be a feature generic to all Avocado supported
>         tests
>                 (including Avocado-VT tests).
>
>
>             Nice. with a ResultEvents beaker plugin, any avocado test
>         would be
>             able to report results to a beaker server, and plugin
>         configuration
>             can be done using standard config file sections. +1.
>
>
>
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 502 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/avocado-devel/attachments/20170316/293529aa/attachment.sig>


More information about the Avocado-devel mailing list