105 lines
3.3 KiB
Plaintext
105 lines
3.3 KiB
Plaintext
tdc - Adding plugins for tdc
|
|
|
|
Author: Brenda J. Butler - bjb@mojatatu.com
|
|
|
|
ADDING PLUGINS
|
|
--------------
|
|
|
|
A new plugin should be written in python as a class that inherits from TdcPlugin.
|
|
There are some examples in plugin-lib.
|
|
|
|
The plugin can be used to add functionality to the test framework,
|
|
such as:
|
|
|
|
- adding commands to be run before and/or after the test suite
|
|
- adding commands to be run before and/or after the test cases
|
|
- adding commands to be run before and/or after the execute phase of the test cases
|
|
- ability to alter the command to be run in any phase:
|
|
pre (the pre-suite stage)
|
|
prepare
|
|
execute
|
|
verify
|
|
teardown
|
|
post (the post-suite stage)
|
|
- ability to add to the command line args, and use them at run time
|
|
|
|
|
|
The functions in the class should follow the following interfaces:
|
|
|
|
def __init__(self)
|
|
def pre_suite(self, testcount, testidlist) # see "PRE_SUITE" below
|
|
def post_suite(self, ordinal) # see "SKIPPING" below
|
|
def pre_case(self, test_ordinal, testid) # see "PRE_CASE" below
|
|
def post_case(self)
|
|
def pre_execute(self)
|
|
def post_execute(self)
|
|
def adjust_command(self, stage, command) # see "ADJUST" below
|
|
def add_args(self, parser) # see "ADD_ARGS" below
|
|
def check_args(self, args, remaining) # see "CHECK_ARGS" below
|
|
|
|
|
|
PRE_SUITE
|
|
|
|
This method takes a testcount (number of tests to be run) and
|
|
testidlist (array of test ids for tests that will be run). This is
|
|
useful for various things, including when an exception occurs and the
|
|
rest of the tests must be skipped. The info is stored in the object,
|
|
and the post_suite method can refer to it when dumping the "skipped"
|
|
TAP output. The tdc.py script will do that for the test suite as
|
|
defined in the test case, but if the plugin is being used to run extra
|
|
tests on each test (eg, check for memory leaks on associated
|
|
co-processes) then that other tap output can be generated in the
|
|
post-suite method using this info passed in to the pre_suite method.
|
|
|
|
|
|
SKIPPING
|
|
|
|
The post_suite method will receive the ordinal number of the last
|
|
test to be attempted. It can use this info when outputting
|
|
the TAP output for the extra test cases.
|
|
|
|
|
|
PRE_CASE
|
|
|
|
The pre_case method will receive the ordinal number of the test
|
|
and the test id. Useful for outputing the extra test results.
|
|
|
|
|
|
ADJUST
|
|
|
|
The adjust_command method receives a string representing
|
|
the execution stage and a string which is the actual command to be
|
|
executed. The plugin can adjust the command, based on the stage of
|
|
execution.
|
|
|
|
The stages are represented by the following strings:
|
|
|
|
'pre'
|
|
'setup'
|
|
'command'
|
|
'verify'
|
|
'teardown'
|
|
'post'
|
|
|
|
The adjust_command method must return the adjusted command so tdc
|
|
can use it.
|
|
|
|
|
|
ADD_ARGS
|
|
|
|
The add_args method receives the argparser object and can add
|
|
arguments to it. Care should be taken that the new arguments do not
|
|
conflict with any from tdc.py or from other plugins that will be used
|
|
concurrently.
|
|
|
|
The add_args method should return the argparser object.
|
|
|
|
|
|
CHECK_ARGS
|
|
|
|
The check_args method is so that the plugin can do validation on
|
|
the args, if needed. If there is a problem, and Exception should
|
|
be raised, with a string that explains the problem.
|
|
|
|
eg: raise Exception('plugin xxx, arg -y is wrong, fix it')
|