我正在使用星号测试套件并创建自定义测试。但我正在尝试用java替换一些python脚本。
问题是我不知道如何使用“asterisk java”为每个星号实例创建两个星号实例。
答案 0 :(得分:2)
好消息是,除了最高的run-tests.py脚本之外,Asterisk Test Suite与语言无关。你会发现用python,lua甚至bash编写的测试。 Java将是一个新的补充。我不建议尝试重写runtests.py - 你不会得到很多好处,虽然我想你很乐意这样做。
就“沙盒”Asterisk的一个实例而言,它不会与其他Asterisk实例发生碰撞,并且您可以同时运行任何数字,您必须采取许多步骤才能使其正常工作。幸运的是,如果你看看asterisk.py模块(在lib / python / asterisk中) - 或asttest / lib / lua中的astlib.lua - 你将会有一些工作示例,说明为了实现这一点所必须做的一切发生。
至少,您需要执行以下操作:
举个例子,让我们进行confbridge python测试。它产生了三个Asterisk实例。它第一次运行时会熄灭,看看是否存在/ tmp / asterisk-testsuite。让我们说它没有。所以我们制作那个目录。
/tmp/asterisk-testsuite/
然后我们看到正在运行的测试存在于tests / apps / confbridge中 - 所以我们创建了测试目录,因为我们还没有运行。
/tmp/asterisk-testsuite/apps/confbridge
现在它变得有趣了。我们之前没有运行,所以当我们检查我们的测试目录中是否存在任何astn目录时,我们确定没有。所以我们创建了三个目录。
/tmp/asterisk-testsuite/apps/confbridge
/ast1
/ast2
/ast3
仅以ast1为例,我们创建一个包含路径位置的asterisk.conf文件:
[directories](!)
astetcdir => /tmp/asterisk-testsuite/apps/confbridge/ast1/etc/asterisk
astmoddir => /tmp/asterisk-testsuite/apps/confbridge/ast1/usr/lib/asterisk/modules
astvarlibdir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk
astdbdir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk
astkeydir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk
astdatadir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk
astagidir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk/agi-bin
astspooldir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/spool/asterisk
astrundir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/run/asterisk
astlogdir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/log/asterisk
[options]
verbose = 5
debug = 5
defaultlanguage = en ; Default language
documentation_language = en_US ; Set the language you want documentation
; displayed in. Value is in the same format as
; locale names.
[compat]
pbx_realtime=1.6
res_agi=1.6
app_set=1.6
我们现在将asterisk.conf复制到我们的测试目录中。
/tmp/asterisk-testsuite/apps/confbridge/ast1/etc/asterisk/asterisk.conf
然后,我们将必要的已安装模块共享对象硬链接到/ var / lib / asterisk / modules子目录,并将已安装的配置文件硬链接到/ etc / asterisk子目录。或者,对于/ var / lib / asterisk / modules,如果您愿意,我们可以让它使用标准安装的模块而不是硬连接。
最后,当我们产生Asterisk时,我们使用以下语法:
asterisk -f -g -q -m -n -C /tmp/asterisk-testsuite/apps/confbridge/ast1/etc/asterisk/asterisk.conf
我上面写的内容的附录
Java没有任何问题,但是如果您决定在测试套件中使用新语言,那么还有很多重新发明的轮子你不得不做 - 而不仅仅是让Asterisk产生。我们已经在lua / python库中编写了很多其他内容,除了我在这里描述的所有东西之外,它还让你的生活更轻松。像CDR解析和操作的常见测试类,语音邮件操作,与SIPp的复杂状态机交互,利用多个SIPp实例的测试以及与Test Suite一起编排它们 - 我们一直特别关注python库晚了。您可能想要考虑使用Python - 但是,如果您真的喜欢Java,请务必随意使用它。