#!/usr/bin/env python
'''
Copyright (C) 2011, Digium, Inc.
Matt Jordan <mjordan@digium.com>

This program is free software, distributed under the terms of
the GNU General Public License Version 2.
'''

import sys
import os
import logging

sys.path.append("lib/python")

from asterisk.asterisk import Asterisk
from asterisk.test_case import TestCase
from asterisk.sipp import SIPpScenario
from twisted.internet import reactor

logger = logging.getLogger(__name__)
TEST_DIR = os.path.dirname(os.path.realpath(__file__))

Sender_Scenario = {
        'scenario' : 'sender1.xml',
        '-p' : '5061'
}
Receiver_Scenario = {
        'scenario' : 'receiver1.xml',
        '-p' : '5062'
    }

class SipIncompleteTest(TestCase):
    def __init__(self):
        TestCase.__init__(self)
        self.create_asterisk()
        self.receiverTest = SIPpScenario(TEST_DIR, Receiver_Scenario)
        self.senderTest = SIPpScenario(TEST_DIR, Sender_Scenario)

    def ami_connect(self, ami):
        TestCase.ami_connect(self, ami)

        self.ast[ami.id].cli_exec("sip set debug on")
        ami.registerEvent('UserEvent', self.user_event)

        logger.debug("Starting SIP scenarios")
        self.receiverTest.run(self)
        self.senderTest.run(self)

    def user_event(self, ami, event):
        if event['userevent'] != 'TestResult':
            return

        if event['result'] == "pass":
            self.passed = True
            logger.info("Test successfully exited")
        else:
            logger.warn("Test did not successfully exit:")
            logger.warn("result: %s" % (event['result'],))
            logger.warn("status: %s" % (event['status'],))
            self.passed = False

        self.stop_reactor()

    def run(self):
        TestCase.run(self)
        self.create_ami_factory()


def main():
    test = SipIncompleteTest()

    test.start_asterisk()

    reactor.run()

    test.stop_asterisk()

    if test.passed:
        return 0
    else:
        return 1


if __name__ == "__main__":
    sys.exit(main())


# vim:sw=4:ts=4:expandtab:textwidth=79
