近日需要对freeswitch的Esl接口封装的底层模块做压力测试,想到通过两台freeswitch对呼的方式,百度,google以后发现没有太细致的解释和说明,在这里记录一下,方便以后查阅。
1、第一步需要两台安装有freeswitch的主机或者云服务都可以,只要两台主机间的网络是通的就可以啦,内网通也可以的。首先定义两个服务分别为server1地址为:10.23.21.28,server2的地址为10.23.18.42。
2、从server2发起呼叫到server1,这时server1相当于一个网关,我们需要在server1定义一个路由来接收处理从server2发来的呼叫,编辑diaplan/default.xml,diaplan目录在你的freeswitch安装目录下的etc/freeswitch或者conf/目录下,版本不同路径稍有差别,内容都一样的。
编辑default.xml或者public.xml
这两个配置文件选择要看你呼叫的是内部端口还是外部端口,呼叫内部端口5060就要将
路径下的internal.xml下的<param name="context" value="public"/>改为<param name="context" value="default"/>
将呼叫导入到default来处理。同理如果呼叫外部端口就要确定external.xml文件<param name="context" value="public"/>,
将呼叫导入到public来处理。
编辑dianplan:
在default.xml或者public.xml加入一个路由规则:
<extension name ="load_test">
<condition field="destination_number" expression="12345678">
<action application="answer" />
<action application="sleep" data="60000"/>
<action application="hangup"/>
</condition>
</extension>
正则表达式我就不写复杂的了,不动的百度一下很多教程。
这时候就可以在server2发起呼叫到server1了:
bgapi originate sofia/internal/12345678@10.23.18.42:5060 &park()
测试两边可以呼叫并接通后,就要写脚本批量呼叫了。
#!/bin/bash
for k in $( seq 1 10 )
do
for f in $(seq 1 300)
do
fs_cli -x 'bgapi originate sofia/internal/12345678@10.23.18.42:5060&park()'
done
sleep 1
done
如果服务器配置差的话可能会报错:Throttle Error! 471,不用管,把循环改小一点就好了。
注意:1、要配置好内外部呼叫的端口和路由走的配置,要不可能一直不通哈。2、云服务其一定要切记把需要的端口放出来。