[asterisk-users] Help with semaphores

yusuf yusuf at ecntelecoms.com
Thu Feb 1 06:11:55 MST 2007


Mitch Thompson wrote:
> I'm looking for some help from any Asterisk "heavy" who might be doing 
> something similar to what I'm trying to do...
> 
> Background:
> 
> I work for a research lab, testing telephony products and tools.  
> Historically, we used Ameritec Crescendos and Fortissimos to act as load 
> generators and call "sinks" when testing equipment.  However, the 
> equipment we are testing gets more and more complex, and the scripted 
> scenarios the Ameritecs give have become a limiting factor for testing.  
> Therefore, Asterisk was chosen as a possible solution (we're a cheap lab).
> 
> I've been learning Asterisk as I go, but I've learned a lot.  Here's the 
> basic scenario:
> 
> We are using an Asterisk (AAH 2.8, specifically) to sink calls.  I do 
> this by taking the ${EXTEN} and breaking it down by sections until I get 
> to the last 4 digits (i.e., 2105551212).  Once I get to the 4-digit 
> extension, I am trying to set a flag, or semaphore, to do Busy/Idle 
> testing.  Here is my extensions_custom.conf fragment:
> 
> 
> [SATX_555_Extensions]
> 
> exten => 1212,1,System(cat /tmp/{orig_num})  ; ${orig_num} is set at the 
> beginning of [from-trunk-custom] to the full dialed digits in ${EXTEN}, 
> before I break it down.
> exten => 1212,n,Busy(); if the file exists, someone else has already 
> called this number, return busy
> 
> exten => 1212,102,System(echo ${UNIQUEID} > /tmp/${orig_num}) ; 
> basically, create a file in /tmp whose name is the full number from the 
> beginning.  In this case, the full
>                                                                                                              
> ; filename would be /tmp/2105551212.  I don't really care about the 
> contents, though.
> exten => 1212,103, Goto(Idle,1) ; from here, we jump to a new extension 
> called Idle, where we do a Random to decide whether to simulate no one 
> home (ring no answer) or
>                                                    ; we send ring for 
> about 10 seconds, then Answer() and play some .wav files, then hangup.  
> The last thing we do in either case is to delete
>                                                    ; the 
> /tmp/${orig_num} file.
> 
> The above code works very well at low call volumes.  However, I'm 
> running into race conditions at high call volumes where several calls 
> are getting through the test in priority 1 before the file is created in 
> priority 102 (n+101).
> 
> I've tried to implement semaphores by using both local and global 
> variables, but it doesn't seem to work.
> 
> My ultimate question:  Is anyone doing something similar, and what did 
> you do to implement the busy/idle.
> 
> I appreciate any help anyone can offer.
> 
> Mitch Thompson

Hi,

dont know if this is what you looking for but, there is something called macroexclusive, new in 1.4, 
written by Steve Davies.
Read the file in asterisk-1.4.0/docs.

HTH


-- 
thanks,
Yusuf


More information about the asterisk-users mailing list