我正在使用星号测试套件,并且还正在创建自定义测试。但我想用java替换一些python脚本。是否可以用“星号java”创建两个“星号”实例?
问题是我不知道如何使用“星号java”为每个人创建两个带有自定义拨号计划的星号实例。
我正在使用星号测试套件,并且还正在创建自定义测试。但我想用java替换一些python脚本。是否可以用“星号java”创建两个“星号”实例?
问题是我不知道如何使用“星号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,您将得到一些必须完成的工作示例发生。
至少,你需要做到以下几点:
举一个例子,让我们来看一下confbridge python测试。它产生了三个Asterisk实例。第一次运行时,它会熄灭,看看/ tmp/asterisk-testsuite是否存在。让我们说它不。所以我们制作该目录。
/tmp/asterisk-testsuite/
然后,我们看到,该测试在测试/应用/ 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中/星号/模块子目录中的必要安装的模块,并安装的配置文件硬连接到/ etc /星号子目录。或者,对于/ 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实例并与测试套件协同编排它们 - 我们一直专注于Python库晚了。你可能想要考虑只用Python--但是,如果你真的爱Java,那么一定要随意使用它。
感谢您的回答。 python的问题是一些测试无故失败。例如:sip_attended_transfer失败,因为即使安装了所有依赖关系(pjsua,twisted,starpy和comment-“skip”on test-config.yaml),starpy也无法连接到管理器。 使用java的想法不是用来修改runtest.py,python只关心退出代码来说测试是否通过或失败,所以我能够创建一个bash脚本,在那里执行一个java连接管理器和读取事件并在检测到特定事件时返回0。 – ViROscar 2012-04-13 16:31:59
与文件结构的唯一区别是“apps”文件夹,因为我使用的是“tests”文件夹(testsuite/tests)。 – ViROscar 2012-04-13 16:33:27
首先,如果一个测试失败,它不是一个Python的问题。其次,如果'skip'关键字被添加到test-config.yaml文件中,则它是因为测试存在已知问题,而不是测试语言。最有可能的是测试正在做一些依赖于时序的,我们还没有解决的问题(我们知道这是特定测试的情况。第三,是的,run-tests.py脚本只关心退出代码 - 这是为什么我说测试套件是语言不可知的?最后,你可以使用任何你想要的子层次结构。我们把应用程序测试放在应用程序中,SIP在频道中等。 – 2012-04-14 02:35:02