0

私はアスタリスク テスト スイートを使用しており、カスタム テストも作成しています。しかし、いくつかのpythonスクリプトをjavaに置き換えようとしています。

問題は、「アスタリスク Java」を使用して、それぞれにカスタム ダイヤル プランを持つ 2 つのアスタリスク インスタンスを作成する方法がわからないことです。

4

1 に答える 1

2

良いニュースは、最上位の run-tests.py スクリプトを除いて、アスタリスク テスト スイートは言語にとらわれないことです。Python、lua、さらには bash で記述されたテストが見つかります。Java が新たに追加されます。runtests.py を書き直そうとすることはお勧めしません。大金は得られませんが、そうしても問題ないと思います。

アスタリスクのインスタンスを「サンドボックス化」して、他のアスタリスク インスタンスと衝突せず、任意の数を同時に実行できるようにする限り、適切に機能させるために必要な手順がいくつかあります。幸いなことに、(lib/python/asterisk にある) asterisk.py モジュール、または asttest/lib/lua にある astlib.lua を見ると、それを行うために必要なすべての作業の例がいくつかあります。起こる。

少なくとも、次のことを行う必要があります。

  • テストをホストするディレクトリ構造を作成します。慣例により、実行される各テストは /tmp/asterisk-testsuite/[test_directory] ​​の下で実行されます。[test_directory] ​​には複数のサブディレクトリが含まれる場合があり、テスト スイート内のそのテストの場所を反映しています。一番上のスクリプトには、テストが失敗した場合に相対的な場所にあることを期待するものがいくつかあることに注意してください。そのため、そこから移動しません。
  • テスト ディレクトリに、実行するアスタリスクのインスタンスに対応するサブフォルダーを作成します。これらは通常 astn という名前で、n はそのディレクトリで次に使用可能な番号です。たとえば、テスト中に実行する Asterisk の 2 つのインスタンスがあるとします。初めてテストを実行すると、サブディレクトリ ast1 と ast2 が作成されます。次回; ast3 と ast4。
  • 作成しようとしているアスタリスクのインスタンスごとに、前の 2 つの手順で説明した場所を基準にして、すべてのアスタリスク構成ディレクトリの場所を指定する asterisk.conf 構成ファイルを作成します。次に、作成した asterisk.conf を /tmp/asterisk-testsuite/[test_directory]/ast[n]/etc/asterisk/asterisk.conf に「インストール」します。
  • 残りの必要な構成ファイルをインストールします。テストで構成ファイルが提供されない場合、python/lua ライブラリが行うことは、ホスト システムで検出された構成ファイルにハードリンクすることです。それ以外の場合は、構成ファイルをそれらのディレクトリにコピーします。
  • システムにインストールされているモジュールへのハードリンク。各テスト用のカスタム モジュールがある場合は、それらをテスト実行ディレクトリに配置できます。
  • Asterisk を生成するときは、-C オプションでデフォルトとは異なる構成場所を指定します。

例として、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 が本当に好きな場合は、ぜひお気軽に使用してください。

于 2012-04-12T21:38:33.563 に答える