私はアスタリスク テスト スイートを使用しており、カスタム テストも作成しています。しかし、いくつかのpythonスクリプトをjavaに置き換えようとしています。
問題は、「アスタリスク Java」を使用して、それぞれにカスタム ダイヤル プランを持つ 2 つのアスタリスク インスタンスを作成する方法がわからないことです。
良いニュースは、最上位の run-tests.py スクリプトを除いて、アスタリスク テスト スイートは言語にとらわれないことです。Python、lua、さらには bash で記述されたテストが見つかります。Java が新たに追加されます。runtests.py を書き直そうとすることはお勧めしません。大金は得られませんが、そうしても問題ないと思います。
アスタリスクのインスタンスを「サンドボックス化」して、他のアスタリスク インスタンスと衝突せず、任意の数を同時に実行できるようにする限り、適切に機能させるために必要な手順がいくつかあります。幸いなことに、(lib/python/asterisk にある) asterisk.py モジュール、または asttest/lib/lua にある astlib.lua を見ると、それを行うために必要なすべての作業の例がいくつかあります。起こる。
少なくとも、次のことを行う必要があります。
例として、confbridge python テストを見てみましょう。アスタリスクの 3 つのインスタンスを生成します。初めて実行すると、外に出て /tmp/asterisk-testsuite が存在するかどうかを確認します。そうではないとしましょう。そのため、そのディレクトリを作成します。
/tmp/asterisk-testsuite/
次に、実行中のテストが tests/apps/confbridge にあることを確認します。まだ実行していないため、テスト ディレクトリを作成します。
/tmp/asterisk-testsuite/apps/confbridge
今、それは面白くなります。これまで実行したことがないため、テスト ディレクトリに astn ディレクトリが存在するかどうかを確認すると、存在しないことがわかります。そのため、これらのディレクトリを 3 つ作成します。
/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 を test ディレクトリにコピーします。
/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 には何の問題もありませんが、テスト スイートで新しい言語を使用することを決定した場合、Asterisk を生成するだけでなく、多くの車輪の再発明を行う必要があります。ここで説明したすべてのものに加えて、lua/python ライブラリーに他の多くのものを書き込んで、作業を楽にしています。CDR の解析と操作、ボイスメールの操作、SIPp との複雑なステート マシンの相互作用、複数の SIPp インスタンスを利用し、テスト スイートと連携してそれらを調整するテストなどの一般的なテスト クラスなど、特に Python ライブラリに焦点を当ててきました。遅い。Python のみを使用することを検討することもできますが、Java が本当に好きな場合は、ぜひお気軽に使用してください。