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