123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- 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')
|