[asterisk-commits] jrose: testsuite/asterisk/trunk r3821 - /asterisk/trunk/tests/apps/directed_p...

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Jun 5 15:54:24 CDT 2013


Author: jrose
Date: Wed Jun  5 15:54:20 2013
New Revision: 3821

URL: http://svnview.digium.com/svn/testsuite?view=rev&rev=3821
Log:
tests/app/directed_pickup: Make the directed pickup test work in Asterisk 12

Bridge events changed for Asterisk 12. This patch changes the directed pickup
test to be able to use both pre-12 and post-12 bridging events for detecting
if the calls intended to be bridged were bridged following the pickup.

(issue ASTERISK-21544)
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/2595/

Modified:
    asterisk/trunk/tests/apps/directed_pickup/run-test

Modified: asterisk/trunk/tests/apps/directed_pickup/run-test
URL: http://svnview.digium.com/svn/testsuite/asterisk/trunk/tests/apps/directed_pickup/run-test?view=diff&rev=3821&r1=3820&r2=3821
==============================================================================
--- asterisk/trunk/tests/apps/directed_pickup/run-test (original)
+++ asterisk/trunk/tests/apps/directed_pickup/run-test Wed Jun  5 15:54:20 2013
@@ -29,8 +29,41 @@
         self.bridgeCount = 0
         self.create_asterisk()
 
+        self.bridgingModel12 = False
+        self.bridge = None
+        self.firstChannelBridged = False
+        self.secondChannelBridged = False
+
     def hangup(self, ami):
         self.stop_reactor()
+
+    def check_BridgeEnter(self, ami, event):
+        channel = event.get('channel')
+        bridge = event.get('bridgeuniqueid')
+        other_channel = None
+
+        if channel == self.firstChannel:
+            self.firstChannelBridged = True
+            other_channel = self.secondChannel
+        elif channel == self.secondChannel:
+            self.secondChannelBridged = True
+            other_channel = self.firstChannel
+        else:
+            LOGGER.error("Channel: '%s' entered bridge and is neither of the expected channels (%s, %s)" % (channel, self.firstChannel, self.secondChannel))
+            self.set_passed(False)
+            return
+
+        if self.bridge is not None:
+            if bridge != self.bridge:
+                LOGGER.error("Channel: '%s' entered bridge '%s', but was expected to enter the '%s' bridge with '%s'" % (channel, bridge, other_channel, self.bridge))
+                self.set_passed(False)
+        else:
+            self.bridge = bridge
+
+        if self.firstChannelBridged and self.secondChannelBridged:
+            self.set_passed(True)
+            self.ami[0].hangup(self.firstChannel).addCallback(self.hangup)
+            LOGGER.info("Both first and second channel detected; passing test")
 
     def check_Bridge(self, ami, event):
         if self.bridgeCount != 0:
@@ -48,7 +81,9 @@
     def check_Pickup(self, ami, event):
         self.secondChannel = event.get('channel')
         LOGGER.info("Detected second channel: %s" % self.secondChannel)
-        self.ami[0].registerEvent('Bridge', self.check_Bridge)
+
+        if not self.bridgingModel12:
+            self.ami[0].registerEvent('Bridge', self.check_Bridge)
 
     def check_UserEvent(self, ami, event):
         if event.get("userevent") != "TestStatus":
@@ -59,6 +94,10 @@
             return
 
         self.ami[0].registerEvent('Pickup', self.check_Pickup)
+
+        if self.bridgingModel12:
+            self.ami[0].registerEvent('BridgeEnter', self.check_BridgeEnter)
+
         LOGGER.info("Originating Pickup attempt")
         self.ami[0].originate(
             channel = "Local/1002 at pickuptest",
@@ -80,6 +119,7 @@
             self.ami[0].registerEvent("Dial", self.check_Dial)
         else:
             # Asterisk 12+
+            self.bridgingModel12 = True
             self.ami[0].registerEvent("DialBegin", self.check_Dial)
         self.ami[0].registerEvent("UserEvent", self.check_UserEvent)
         LOGGER.info("Originating channel to be picked up")




More information about the asterisk-commits mailing list