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