# Asterisk Project : SimpleTestCase

Added by mjordan , edited by mjordan on Jul 01, 2012

# Description

SimpleTestCase is a class that inherits from TestCase and acts as a test object in the pluggable framework. SimpleTestCase has the following characteristics:

- It controls a single instance of Asterisk.
- It can originate n calls into Asterisk in a successive sequence.
- It can determine the success of an originated call either by a UserEvent or by a Hangup event.
- If UserEvents are used, the test is assumed to pass if a configurable number of events are received.
- Pass/failure of the test is can be determined by other modules, or by classes that derive from SimpleTestCase. Classes that derive from SimpleTestCase can override the verify_event method, which is called for each UserEvent received.

# Class Description

- Module: SimpleTestCase
- Class: SimpleTestCase : TestCase

Name | Parameter | Description | Default
--- | --- | --- | ---
_init_ |  | Constructor |
| test_path | Optional. Full path to the directory executing the test. If used in the pluggable framework, this value will be populated. | ''
| test_config | Optional. An object populated with values from the YAML configuration file. If used in the pluggable framework, this value will be populated. | None
ami_connect |  | Called when an AMI connection is made with the instance of Asterisk |
| ami | The starpy AMI object |
hangup |  | A twisted deferred callback function that is called when all channels have hung up |
| result | Object passed back from the result of the hangup AMI command |
verify_event |  | Virtual method that can be overriden by a derived class to provide additional logic on reception of a UserEvent. Returning true from this method will cause the SimpleTestCase class to process the next call; false will cause the test to fail. |
| event | The UserEvent object |
run |  | Override of TestCase.run. Creates the AMI factory. |

# Configuration

Keyword | Description | Required | Default
--- | --- | --- | ---
expected-events | The expected number of UserEvents that should be received. | No | 1
spawn-after-hangup | If true, Hangup events will cause the next call in the sequence to be originated. Otherwise, reception of UserEvents will trigger the next call in the sequence. Note that it is expected that if UserEvents are present, this value should be false. | No | False
ignore-originate-failures | Do not report an error if an originate fails. | No | False
test-iterations | A sequence of items that specify calls to originate. | No |

While you do not technically have to define any calls to originate in test-iterations, failing to do so will cause the reactor to timeout and the test to fail, unless some other mechanism is used to provide pass/fail status checking.

#### test-iterations

Keyword | Description | Required | Default
--- | --- | --- | ---
channel | The channel to originate | Yes |
application | The application to connect to | *See Note |
context | The context in the dialplan to connect the originated call to | *See Note |
extension | The extension in the dialplan to connect the originated call to | *See Note |
priority | The priority in the dialplan to connect the originated call to | *See Note |

application is mutually exclusive with the context, extension, and priority settings. If context, extension, and priority are used, all three must be specified. Note that at least one of the two options must be specified.

# Examples

#### cdr_accountcode

    test-modules:
        test-object:
            config-section: test-object-config
            typename: 'SimpleTestCase.SimpleTestCase'

    test-object-config:
        spawn-after-hangup: True
        test-iterations:
            -
                channel: 'Local/1@default'
                application: 'Echo'

#### batch_cdrs

    test-modules:
        test-object:
            config-section: test-object-config
            typename: 'SimpleTestCase.SimpleTestCase'

    test-object-config:
        spawn-after-hangup: True
        ignore-originate-failures: True
        test-iterations:
            -
                channel: 'Local/dial_busy@default'
                application: 'Echo'
            -
                channel: 'Local/dial_busy@default'
                application: 'Echo'
            -
                channel: 'Local/dial_answer@default'
                application: 'Echo'
            -
                channel: 'Local/dial_answer@default'
                application: 'Echo'