bayonne-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bayonne-devel] Bayonne script stops dead


From: Steve Cox
Subject: [Bayonne-devel] Bayonne script stops dead
Date: Thu, 29 Jul 2004 22:42:54 +0100
User-agent: Mutt/1.5.6+20040523i

Sorry if you've seen this already - I sent it to the old sourceforge
list and I'm not sure if it was forwarded to the new list:

Hi,

I'm having a serious issue with a set of bayonne scripts.

I've written two scripts to control outbound dialling for a system
to test another CTI server. The plan is to have it go through a MySQL
database of dtmf tones and send these down each line of a 4-line
dialogic 4PCIU card when connected. And once the list is exhausted, go
through it again. This way, I can test the other system under heavy load
for days on end.

However, after 20 minutes or so, the scripts stop dead - even on a trace
it just stops with no errors or no continuing messages.

I've using the previous cvs testing version of bayonne - 20040204



The way the main virtual script works is that it runs through the
database putting the values into a fifo. It calls another child script
to dial the tested server with this dtmf value. Theses threads are
monitored by the parent script by using another fifo which contains
an item for each available channel. When a child is called, an item
is poped from the queue. When the child exits, an item is pushed.

This is set within a loop - so when all four channels are being used,
the fifo is empty and it endlessly loops. As a chennel becomes free,
a value appears in the fifo and a new child is called.

Finally, we're having problems getting the 4PCIU to detect hangups etc
(on both the bayonne server and the tested CTI server) so I'm used soft
dialing of the dtmf tones and setting various 'sleep' commands to get
the system's timing right. Also, because of the amount of data and the
variosu maximum size limits of the dtmf fifo queue, I'm not putting all
the dtmfs in at once, but pulling values out of the database as we go
around the loop.

Anyway, here's the parent script (deva.bs):

idle 0
use string
use digits
fifo size=12 count=225 %fifo0
fifo size=12 count=100 %passphone
fifo  count=16 %signalqueue
repeat 16
  set %tempval %signalqueue
  loop
  set %querystring "select fld_dtmf from tbl_dtmf"
  set %signalqueue 0
  set %signalqueue 1
  set %signalqueue 2
  set %signalqueue 3
  do 1 -ne 2
    counter %querycounter 0
    clear %querycounter
    sleep 2
    set %querycountstring "select max(id) from tbl_dtmf"
    sql query=%querycountstring waitTime=5s maxTime=50s
    sql.fetch row=1 %dtmfcount
    repeat %dtmfcount
      set %querystring "select fld_dtmf from tbl_dtmf where id= " %querycounter
      sql query=%querystring waitTime=5s maxTime=50s
      for.sql %dtmf_to_use
        set %fifo0 %dtmf_to_use
      loop
      set %currentdtmf %fifo0
      set %passphone %currentdtmf
      start.group default devchilda
      do
        set %getchannel %signalqueue
      loop %getchannel -eq ''
      set %currentdtmf %fifo0
      sleep 0
    loop
loop
exit

#####
and the child (devchilda.bs):
#####

session id=%session.parent
sleep 1
sync.current 80
dial "1" timeout=12
sleep 3
dial.dtmf %passphone
sleep 10
set %signalqueue 5
exit
^hangup
sleep 3
dial.dtmf %passphone
sleep 10
set %signalqueue 6
exit

(the ^hangup above is just a catch to push the signalling fifo if it
catches some kind of hangup signal)


And as an example, this is the sort of place the trace ends, although
the point appears to be just ramdom and not normally at the same
place...


.
.
..
...
virtual/0: step 3f0ffffb loop()
01
dialogic/1: step 3f0ffffb session(=id,%session.parent)
01
virtual/0: step 3f0ffffb set(%querystring,select fld,_dtmf, from
tbl,_dtmf, where id= ,%querycounter)
dialogic/1: step 3f0ffffb sleep(1)
dialogic/1: sleep
virtual/0: step 3f0ffffb
sql(=query,%querystring,=waitTime,5s,=maxTime,50s)
virtual/0: thread
virtual/0: reset
virtual/0: step 3f0ffffb for.sql(%dtmf_to_use)
virtual/0: step 3f0ffffb set(%fifo0,%dtmf_to_use)
virtual/0: step 3f0ffffb loop()
virtual/0: step 3f0ffffb set(%currentdtmf,%fifo0)
virtual/0: step 3f0ffffb set(%passphone,%currentdtmf)
dialogic/3: step 3f0ffffb sync.current(80)
virtual/0: step 3f0ffffb start.group(default,devchilda)
getTrunk: fall-back to default driver
dialogic/3: step 3f0ffffb dial(1,=timeout,12)
dialogic/1: step 3f0ffffb sync.current(80)
dialogic/0: step 3f0ffffb set(%signalqueue,5)






Any ideas more than welcome. I'm at the point where I can't think
of any other ideas and will have to abandon development.

Thanks,


Steve







reply via email to

[Prev in Thread] Current Thread [Next in Thread]