[asterisk-commits] jrose: testsuite/asterisk/trunk r3353 - in /asterisk/trunk/tests: channels/SI...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Mon Jul 23 15:05:02 CDT 2012


Author: jrose
Date: Mon Jul 23 15:04:48 2012
New Revision: 3353

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=3353
Log:
Named ACLs: Add a test to confirm the behavior of ACLs for usage by chan_iax2

Also includes some very minor code style improvements to manager and chan_sip
tests for ACLs/named ACLs.

Review: https://reviewboard.asterisk.org/r/2046/

Added:
    asterisk/trunk/tests/iax2/acl_call/
    asterisk/trunk/tests/iax2/acl_call/configs/
    asterisk/trunk/tests/iax2/acl_call/configs/ast1/
    asterisk/trunk/tests/iax2/acl_call/configs/ast1/acl.conf   (with props)
    asterisk/trunk/tests/iax2/acl_call/configs/ast1/extconfig.conf   (with props)
    asterisk/trunk/tests/iax2/acl_call/configs/ast1/extensions.conf   (with props)
    asterisk/trunk/tests/iax2/acl_call/configs/ast1/iax.conf   (with props)
    asterisk/trunk/tests/iax2/acl_call/configs/ast1/modules.conf   (with props)
    asterisk/trunk/tests/iax2/acl_call/configs/ast1/res_config_sqlite3.conf   (with props)
    asterisk/trunk/tests/iax2/acl_call/realtime.sqlite3   (with props)
    asterisk/trunk/tests/iax2/acl_call/run-test   (with props)
    asterisk/trunk/tests/iax2/acl_call/test-config.yaml   (with props)
Modified:
    asterisk/trunk/tests/channels/SIP/acl_call/run-test
    asterisk/trunk/tests/iax2/tests.yaml
    asterisk/trunk/tests/manager/acl-login/run-test

Modified: asterisk/trunk/tests/channels/SIP/acl_call/run-test
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/channels/SIP/acl_call/run-test?view=diff&rev=3353&r1=3352&r2=3353
==============================================================================
--- asterisk/trunk/tests/channels/SIP/acl_call/run-test (original)
+++ asterisk/trunk/tests/channels/SIP/acl_call/run-test Mon Jul 23 15:04:48 2012
@@ -11,7 +11,7 @@
 
 from asterisk.TestCase import TestCase
 
-logger = logging.getLogger(__name__)
+LOGGER = logging.getLogger(__name__)
 
 class SIPACLTest(TestCase):
 
@@ -65,7 +65,7 @@
         self.test_start(ami)
 
     def test_start(self, ami):
-        logger.info("Starting test %d - %s:" % (self.test_index, self.test_components[self.test_index][0]))
+        LOGGER.info("Starting test %d - %s:" % (self.test_index, self.test_components[self.test_index][0]))
 
         # The following variable tracks events that occur as a result of the following originate. We expect two events in all cases.
         # In the case of a successful call, we expect two hangups. If the call is unsuccessful, we expect a hangup and an AMI command error.
@@ -105,12 +105,12 @@
 
     def evaluate_call(self):
         if self.test_components[self.test_index][1] == "allow" and self.success_conditions == 2:
-            logger.info("Test %d - %s: Call Succeeded as Expected." % (self.test_index, self.test_components[self.test_index][0]))
+            LOGGER.info("Test %d - %s: Call Succeeded as Expected." % (self.test_index, self.test_components[self.test_index][0]))
         elif self.test_components[self.test_index][1] == "deny" and self.failure_conditions == 2:
-            logger.info("Test %d - %s: Call Failed as Expected." % (self.test_index, self.test_components[self.test_index][0]))
+            LOGGER.info("Test %d - %s: Call Failed as Expected." % (self.test_index, self.test_components[self.test_index][0]))
         else:
-            logger.error("Test %d - %s: Events received don't follow expectations. Test Failed." % (self.test_index, self.test_components[self.test_index][0]))
-            logger.error("Failure Triggering Events Received: %s" % self.events)
+            LOGGER.error("Test %d - %s: Events received don't follow expectations. Test Failed." % (self.test_index, self.test_components[self.test_index][0]))
+            LOGGER.error("Failure Triggering Events Received: %s" % self.events)
             self.passed = False
             self.stop_reactor()
             return
@@ -120,7 +120,7 @@
         if self.test_index < len(self.test_components):
             self.test_start(self.last_active_ami)
         else:
-            logger.info("All tests evaluated as expected. Test Successful.")
+            LOGGER.info("All tests evaluated as expected. Test Successful.")
             self.passed = True
             self.stop_reactor()
             return

Added: asterisk/trunk/tests/iax2/acl_call/configs/ast1/acl.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/acl_call/configs/ast1/acl.conf?view=auto&rev=3353
==============================================================================
--- asterisk/trunk/tests/iax2/acl_call/configs/ast1/acl.conf (added)
+++ asterisk/trunk/tests/iax2/acl_call/configs/ast1/acl.conf Mon Jul 23 15:04:48 2012
@@ -1,0 +1,15 @@
+[testacl1] ; Allow 127.0.0.1 only
+deny = 0.0.0.0/0.0.0.0
+permit = 127.0.0.1
+
+[testacl2] ; Disallow 127.0.0.1 only
+permit = 0.0.0.0/0.0.0.0
+deny = 127.0.0.1
+
+[testacl3] ; Disallow 127.0.0.3 only
+permit = 0.0.0.0/0.0.0.0
+deny = 127.0.0.3
+
+[testacl4] ; Disallow 127.0.0.4 only
+permit = 0.0.0.0/0.0.0.0
+deny = 127.0.0.4

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/acl.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/acl.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/acl.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plan

Added: asterisk/trunk/tests/iax2/acl_call/configs/ast1/extconfig.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/acl_call/configs/ast1/extconfig.conf?view=auto&rev=3353
==============================================================================
--- asterisk/trunk/tests/iax2/acl_call/configs/ast1/extconfig.conf (added)
+++ asterisk/trunk/tests/iax2/acl_call/configs/ast1/extconfig.conf Mon Jul 23 15:04:48 2012
@@ -1,0 +1,2 @@
+[settings]
+acls => sqlite3,asterisk,acltable

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/extconfig.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/extconfig.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/extconfig.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plan

Added: asterisk/trunk/tests/iax2/acl_call/configs/ast1/extensions.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/acl_call/configs/ast1/extensions.conf?view=auto&rev=3353
==============================================================================
--- asterisk/trunk/tests/iax2/acl_call/configs/ast1/extensions.conf (added)
+++ asterisk/trunk/tests/iax2/acl_call/configs/ast1/extensions.conf Mon Jul 23 15:04:48 2012
@@ -1,0 +1,4 @@
+[test_context]
+exten => s,1,Answer()
+exten => s,n,Playtones(400,100) ; Play a tone for one tenth of a second, just to have the call last some amount of time.
+exten => s,n,Hangup()

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/extensions.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/extensions.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/extensions.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plan

Added: asterisk/trunk/tests/iax2/acl_call/configs/ast1/iax.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/acl_call/configs/ast1/iax.conf?view=auto&rev=3353
==============================================================================
--- asterisk/trunk/tests/iax2/acl_call/configs/ast1/iax.conf (added)
+++ asterisk/trunk/tests/iax2/acl_call/configs/ast1/iax.conf Mon Jul 23 15:04:48 2012
@@ -1,0 +1,29 @@
+[general]
+bindaddr=0.0.0.0
+context=test_context
+
+[testiax1] ; Allow calls only from the locally defined ACL (denies all except 127.0.0.1)
+type=friend
+context=test_context
+deny=0.0.0.0/0.0.0.0
+permit=127.0.0.1
+
+[testiax2] ; Same as testiax1, only defined via named ACL subsystem
+type=friend
+context=test_context
+acl=testacl1
+
+[testiax3] ; Multiple ACLs defined via named ACL subsystem. Collectively only 127.0.0.2 is acceptable
+type=friend
+context=test_context
+acl=testacl2,testacl3,testacl4
+
+[testiax4] ; An invalid ACL (not contained in the configuration or in realtime). No allowable addresses
+type=friend
+context=test_context
+acl=undefinedacl
+
+[testiax5] ; 3 ACLs stored on the realtime backend. Collectively only 127.0.0.3 is acceptable
+type=friend
+context=test_context
+acl=rtacl1,rtacl2,rtacl3

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/iax.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/iax.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/iax.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plan

Added: asterisk/trunk/tests/iax2/acl_call/configs/ast1/modules.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/acl_call/configs/ast1/modules.conf?view=auto&rev=3353
==============================================================================
--- asterisk/trunk/tests/iax2/acl_call/configs/ast1/modules.conf (added)
+++ asterisk/trunk/tests/iax2/acl_call/configs/ast1/modules.conf Mon Jul 23 15:04:48 2012
@@ -1,0 +1,3 @@
+[modules]
+autoload=yes
+preload => res_config_sqlite3.so

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/modules.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/modules.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/modules.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plan

Added: asterisk/trunk/tests/iax2/acl_call/configs/ast1/res_config_sqlite3.conf
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/acl_call/configs/ast1/res_config_sqlite3.conf?view=auto&rev=3353
==============================================================================
--- asterisk/trunk/tests/iax2/acl_call/configs/ast1/res_config_sqlite3.conf (added)
+++ asterisk/trunk/tests/iax2/acl_call/configs/ast1/res_config_sqlite3.conf Mon Jul 23 15:04:48 2012
@@ -1,0 +1,2 @@
+[asterisk]
+dbfile => /tmp/realtime.sqlite3

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/res_config_sqlite3.conf
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/res_config_sqlite3.conf
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/iax2/acl_call/configs/ast1/res_config_sqlite3.conf
------------------------------------------------------------------------------
    svn:mime-type = text/plan

Added: asterisk/trunk/tests/iax2/acl_call/realtime.sqlite3
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/acl_call/realtime.sqlite3?view=auto&rev=3353
==============================================================================
Binary file - no diff available.

Propchange: asterisk/trunk/tests/iax2/acl_call/realtime.sqlite3
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: asterisk/trunk/tests/iax2/acl_call/run-test
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/acl_call/run-test?view=auto&rev=3353
==============================================================================
--- asterisk/trunk/tests/iax2/acl_call/run-test (added)
+++ asterisk/trunk/tests/iax2/acl_call/run-test Mon Jul 23 15:04:48 2012
@@ -1,0 +1,152 @@
+#!/usr/bin/env python
+
+import sys
+import logging
+import logging.config
+import os
+import shutil
+from twisted.internet import reactor
+
+sys.path.append("lib/python")
+
+from asterisk.TestCase import TestCase
+
+LOGGER = logging.getLogger(__name__)
+
+class IAX2ACLTest(TestCase):
+
+    # Preps test objects and configuration additions as well as copies TLS keys to test folder.
+    def __init__(self):
+        TestCase.__init__(self)
+        self.test_components = []
+
+        #success evaluation stuff
+        self.test_index = 0
+
+        #test1 - No named ACL, calling available only to 127.0.0.1
+        self.add_test_component("testiax1 at 127.0.0.1", "allow")
+        self.add_test_component("testiax1 at 127.0.0.2", "deny")
+        self.add_test_component("testiax1 at 127.0.0.3", "deny")
+        self.add_test_component("testiax1 at 127.0.0.4", "deny")
+
+        #test2 - Same permissible addresses as test 1, but while using a named ACL from the local configuration
+        self.add_test_component("testiax2 at 127.0.0.1", "allow")
+        self.add_test_component("testiax2 at 127.0.0.2", "deny")
+        self.add_test_component("testiax2 at 127.0.0.3", "deny")
+        self.add_test_component("testiax2 at 127.0.0.4", "deny")
+
+        #test3 - Multiple named ACL rules from local configuration. Only 127.0.0.2 should be allowed to call.
+        self.add_test_component("testiax3 at 127.0.0.1", "deny")
+        self.add_test_component("testiax3 at 127.0.0.2", "allow")
+        self.add_test_component("testiax3 at 127.0.0.3", "deny")
+        self.add_test_component("testiax3 at 127.0.0.4", "deny")
+
+        #test4 - An undefined rule is used. All addresses should be rejected from calling.
+        self.add_test_component("testiax4 at 127.0.0.1", "deny")
+        self.add_test_component("testiax4 at 127.0.0.2", "deny")
+        self.add_test_component("testiax4 at 127.0.0.3", "deny")
+        self.add_test_component("testiax4 at 127.0.0.4", "deny")
+
+        #test5 - A set of 3 named ACLs stored in realtime is used. Collectively only 127.0.0.3 should be allowed to call.
+        self.add_test_component("testiax5 at 127.0.0.1", "deny")
+        self.add_test_component("testiax5 at 127.0.0.2", "deny")
+        self.add_test_component("testiax5 at 127.0.0.3", "allow")
+        self.add_test_component("testiax5 at 127.0.0.4", "deny")
+
+        self.create_asterisk()
+
+    def add_test_component(self, test, expectation):
+        this_tuple = test, expectation
+        self.test_components.append(this_tuple)
+
+    # Once the AMI Factory connects to the AMI, this function fires.
+    def ami_connect(self, ami):
+        ami.registerEvent('Hangup', self.evaluate_hangup)
+        self.test_start(ami)
+
+    def test_start(self, ami):
+        LOGGER.info("Starting test %d - %s:" % (self.test_index, self.test_components[self.test_index][0]))
+
+        # The following variable tracks events that occur as a result of the following originate. We expect two events in all cases.
+        # In the case of a successful call, we expect two hangups. If the call is unsuccessful, we expect a hangup and an AMI command error.
+        self.events_received = 0
+        self.success_conditions = 0
+        self.failure_conditions = 0
+
+        # Storage for the events (failures and AMI hangups) that came in -- stored in case of something going wrong.
+        self.events = []
+
+        # There are callbacks that would lose the AMI, so we need to hold onto it within the test object.
+        self.last_active_ami = ami
+
+        ami.originate(channel = "IAX2/%s/s" % self.test_components[self.test_index][0], application = "Echo").addErrback(self.evaluate_originate_error)
+
+    def evaluate_hangup(self, ami, event):
+        self.events_received += 1
+        self.events.append(event)
+
+        # evaluate if whether the hangup indicates success or failure
+        reason = event.get('cause-txt')
+        if reason == "Normal Clearing":
+            self.success_conditions += 1
+        elif reason == "Unknown":
+            self.failure_conditions += 1
+
+        # If we've got two events of any kind, the call is finished and we can move on to the evaluation
+        if self.events_received == 2:
+            self.evaluate_call()
+
+    def evaluate_originate_error(self, reason):
+        self.events.append(reason)
+        self.events_received += 1
+        self.failure_conditions += 1
+        if self.events_received == 2:
+            self.evaluate_call()
+
+    def evaluate_call(self):
+        if self.test_components[self.test_index][1] == "allow" and self.success_conditions == 2:
+            LOGGER.info("Test %d - %s: Call Succeeded as Expected." % (self.test_index, self.test_components[self.test_index][0]))
+        elif self.test_components[self.test_index][1] == "deny" and self.failure_conditions == 2:
+            LOGGER.info("Test %d - %s: Call Failed as Expected." % (self.test_index, self.test_components[self.test_index][0]))
+        else:
+            LOGGER.error("Test %d - %s: Events received don't follow expectations. Test Failed." % (self.test_index, self.test_components[self.test_index][0]))
+            LOGGER.error("Failure Triggering Events Received: %s" % self.events)
+            self.passed = False
+            self.stop_reactor()
+            return
+
+        # Go on to the next test.
+        self.test_index += 1
+        if self.test_index < len(self.test_components):
+            self.test_start(self.last_active_ami)
+        else:
+            LOGGER.info("All tests evaluated as expected. Test Successful.")
+            self.passed = True
+            self.stop_reactor()
+            return
+
+    # Sets up reactor and AMI connection
+    def run(self):
+        TestCase.run(self)
+        self.create_ami_factory()
+
+
+def main():
+    TEST_DIR = os.path.dirname(os.path.realpath(__file__))
+    DB_PATH = TEST_DIR + "/realtime.sqlite3"
+    TMP_DB_PATH = "/tmp/realtime.sqlite3"
+    shutil.copyfile(DB_PATH, TMP_DB_PATH)
+    test = IAX2ACLTest()
+    reactor.run()
+    os.remove(TMP_DB_PATH)
+
+    if test.passed:
+        return 0
+    return 1
+
+if __name__ == "__main__":
+    sys.exit(main() or 0)
+
+
+# vim:sw=4:ts=4:expandtab:textwidth=79
+

Propchange: asterisk/trunk/tests/iax2/acl_call/run-test
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/iax2/acl_call/run-test
------------------------------------------------------------------------------
    svn:executable = *

Propchange: asterisk/trunk/tests/iax2/acl_call/run-test
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/iax2/acl_call/run-test
------------------------------------------------------------------------------
    svn:mime-type = text/plan

Added: asterisk/trunk/tests/iax2/acl_call/test-config.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/acl_call/test-config.yaml?view=auto&rev=3353
==============================================================================
--- asterisk/trunk/tests/iax2/acl_call/test-config.yaml (added)
+++ asterisk/trunk/tests/iax2/acl_call/test-config.yaml Mon Jul 23 15:04:48 2012
@@ -1,0 +1,16 @@
+testinfo:
+    summary: 'Test chan_iax2 usage of ACLs'
+    description: |
+        This tests IAX2 calls originating from different addresses against
+        IAX2 peers with varying means of specifying Access Control Lists.
+        This test is used to verify proper behavior of ACL and Named ACL
+        usage by the chan_iax2 driver.
+
+properties:
+    minversion: '11.0'
+    dependencies:
+        - python : 'twisted'
+        - python : 'starpy'
+    tags:
+        - IAX2
+        - ACL

Propchange: asterisk/trunk/tests/iax2/acl_call/test-config.yaml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: asterisk/trunk/tests/iax2/acl_call/test-config.yaml
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: asterisk/trunk/tests/iax2/acl_call/test-config.yaml
------------------------------------------------------------------------------
    svn:mime-type = text/plan

Modified: asterisk/trunk/tests/iax2/tests.yaml
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/iax2/tests.yaml?view=diff&rev=3353&r1=3352&r2=3353
==============================================================================
--- asterisk/trunk/tests/iax2/tests.yaml (original)
+++ asterisk/trunk/tests/iax2/tests.yaml Mon Jul 23 15:04:48 2012
@@ -2,3 +2,4 @@
 tests:
     - test: 'basic-call'
     - test: 'hangupcause'
+    - test: 'acl_call'

Modified: asterisk/trunk/tests/manager/acl-login/run-test
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/manager/acl-login/run-test?view=diff&rev=3353&r1=3352&r2=3353
==============================================================================
--- asterisk/trunk/tests/manager/acl-login/run-test (original)
+++ asterisk/trunk/tests/manager/acl-login/run-test Mon Jul 23 15:04:48 2012
@@ -16,7 +16,7 @@
 from asterisk.TestCase import TestCase
 from starpy import manager
 
-logger = logging.getLogger(__name__)
+LOGGER = logging.getLogger(__name__)
 
 """
 This test case attempts to log in to AMI with various users from different addresses that are either accepted or rejected
@@ -81,7 +81,7 @@
     # Callback for a successful AMI Connection. This evaluates whether the connection should have been successful or not.
     def ami_connect(self, ami):
         success_expected = False
-        logger.info("AMI %d: login authenticated" % ami.id)
+        LOGGER.info("AMI %d: login authenticated" % ami.id)
 
         for item in self.successes_expected:
             if item == ami.id:
@@ -89,11 +89,11 @@
                 break
 
         if not success_expected:
-            logger.error("AMI %d: Login was allowed and it shouldn't have been." % ami.id)
+            LOGGER.error("AMI %d: Login was allowed and it shouldn't have been." % ami.id)
             self.got_bad_event = True
         else:
             #We no longer expect this entry since we already got it
-            logger.info("AMI %d: Login successful and expected." % ami.id)
+            LOGGER.info("AMI %d: Login successful and expected." % ami.id)
             self.successes_expected.remove(ami.id)
 
         self.components_received += 1
@@ -134,7 +134,7 @@
     # Receives data about test components and attempts to login to AMI using that data
     def ami_factory_test_function(self, entry=0, username="user", secret="mysecret", port = 5038, address = "127.0.0.1"):
         self.ami.append(None)
-        logger.info("Creating AMI %d - %s / %s" % (entry, username, address))
+        LOGGER.info("Creating AMI %d - %s / %s" % (entry, username, address))
         self.ami_factory = manager.AMIFactory(username, secret, entry)
         self.ami_factory.login(address).addCallbacks(self.ami_connect, self.ami_login_error)
 
@@ -142,15 +142,15 @@
     def evaluate_success(self):
         self.passed = True
         if self.components_received != self.components_expected:
-            logger.error("Did not receive expected number of login events. Received %d/%d." % (self.components_received % self.components_expected))
+            LOGGER.error("Did not receive expected number of login events. Received %d/%d." % (self.components_received % self.components_expected))
             self.passed = False
 
         if len(self.successes_expected) != 0:
-            logger.error("Not all logins that were expected to be allowed were completed. Missed: %s" % self.successes_expected)
+            LOGGER.error("Not all logins that were expected to be allowed were completed. Missed: %s" % self.successes_expected)
             self.passed = False
 
         if self.got_bad_event:
-            logger.error("An AMI login was allowed which was not expected.")
+            LOGGER.error("An AMI login was allowed which was not expected.")
             self.passed = False
 
 




More information about the asterisk-commits mailing list