java - 是否可以使用“asterisk java”创建两个“asterisk”实例?

标签 java testing asterisk suite

我正在使用星号测试套件,还创建了自定义测试。但是我正在尝试用Java替换一些python脚本。

问题是我不知道如何使用“ asterisk java”为每个实例创建两个带有自定义拨号计划的星号实例。

最佳答案

好吧,好消息是,除了最上面的run-tests.py脚本之外,Asterisk Test Suite是与语言无关的。您会发现用python,lua甚至bash编写的测试。 Java将是一个新增功能。我不建议尝试重写runtests.py-尽管我认为您可以这样做,但您不会为此付出很多。

至于“沙盒化”一个Asterisk实例,以使其不与其他Asterisk实例冲突,并且您可以同时运行任意数量的实例,必须采取许多步骤才能使其正常工作。幸运的是,如果您查看asterisk.py模块(在lib / python / asterisk中)-或asttest / lib / lua中的astlib.lua-您将获得一些可行的示例,说明了要做的所有事情发生。

至少,您需要执行以下操作:


创建将承载测试的目录结构。按照约定,每个执行的测试都在/ tmp / asterisk-testsuite / [test_directory]下运行,其中[test_directory]可能包含多个子目录,并且反映了该测试在测试套件中的位置。请注意,在最上面的脚本中有很多东西期望在测试失败的情况下东西位于相对位置,所以我不会从那里移开它。
在测试目录中创建与要运行的Asterisk实例相对应的子文件夹。这些通常称为astn,其中n是该目录中的下一个可用数字。例如,假设您有两个在测试过程中运行的Asterisk实例。第一次运行测试时,将创建子目录ast1和ast2。下一次; ast3和ast4。
对于要生成的每个Asterisk实例,创建一个asterisk.conf配置文件,该文件相对于前两个步骤中提到的位置指定所有Asterisk配置目录的位置。然后,您将创建的asterisk.conf“安装”到/tmp/asterisk-testsuite/[test_directory]/ast[n]/etc/asterisk/asterisk.conf中。
安装其余所需的配置文件。 python / lua库的作用是,如果测试未提供配置文件,则将其硬链接到主机系统上检测到的配置文件。否则,他们会将配置文件复制到这些目录中。
硬链接到系统上安装的模块。如果每个测试都有自定义模块,则可以将它们放在测试运行目录中。
生成星号时,您可以使用-C选项指定其他配置位置,然后再使用默认位置。


例如,让我们进行confbridge python测试。它产生三个星号实例。第一次运行时,它熄灭并查看/ 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 -f -g -q -m -n -C /tmp/asterisk-testsuite/apps/confbridge/ast1/etc/asterisk/asterisk.conf


我上面写的附录

Java没什么问题,但是如果您决定在Test Suite中使用一种新语言,不仅要使Asterisk产生,还必须重新设计轮子。除了我在这里描述的所有内容之外,我们还在lua / python库中编写了许多其他内容,使您的生活更加轻松。诸如CDR解析和处理的通用测试类,语音邮件处理,与SIPp的复杂状态机交互,利用多个SIPp实例并将其与Test Suite结合进行编排的测试-我们一直特别关注于python库晚的。您可能要考虑只使用Python-但是,如果您确实喜欢Java,则一定可以使用它。

关于java - 是否可以使用“asterisk java”创建两个“asterisk”实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10112815/

相关文章:

Java - 减少代码重复 - 一般编码问题

c++ - py.test 与非 python 测试(具体来说,与 cxxtest)

javascript - 是否可以通过 Node js 服务器将 sip 请求转发到另一个 asterisk 服务器?

iphone - 如何在xcode4中实现应用测试?

python - 将 Django 的系统检查合并到单元测试套件中?

php - 移动网页上的网站超时

php - 通过fsockopen和socket_get_status的Asterisk AMI PHP。 socket_get_status比其早返回未读字节

java - 阵列频率

java - 套接字服务器 - 如何获取 Log4j2.xml 中客户端的名称?

java - 使用 Jackson 将单个文件中的多个 JSON 对象读入 Java