現在、いくつかのテスト用の小さな仮想マシンがあります(他のディストリビューション、Fedora 15でテストし、make distcheck
汚染の問題なく実行するなど、いくつかの利点があります/
)。
しかし、テストを自動化し、プログラムで次のことを行うことができるようにしたいです(例:sh、python、c ...を使用)。
qemu
ローカルイメージからVMのヘッドレスブート()- VMが完全に起動するのを待ちます(最も難しい部分です。最初はマジックスリープを考えました)。
- ホストとゲスト間のストレージ同期(現在は不要)
./autogen && make && sudo make install && sudo make distcheck
マシンで実行- マシンで生成されたタールボールをダウンロードしてください。
私はlibvirt
APIを使用してこれを行うことができる方法について読み始めました。これにはゲストサポートが必要であり、それに関するドキュメントが見つかりませんが、この機能はlibvirt
。
マシンが完全に起動したことを確認できますか?これを行うことができる既製のツールはありますか?
編集する:完全起動は、システムrcスクリプトの実行が完了したか、起動する必要があるすべてのシステムサービスが開始されたことを意味します。私はqemuがいつそのようなことが起こるかを知る方法がないことを知っていますが、顧客側のサポートがあるとします。
答え1
Afaik、libvirtは「フルブート」が何を意味するのかわかりません(私も同じです)。起動中にホスト(または他のコンピュータ)に接続するサービスを作成できます。あるいは、たとえば、SSHを使用してループでゲストに接続してみることもできます。
別の解決策は、vdagentなどのホストと通信する既存のサービスに依存することです。 Spiceプロキシチャネルが接続されるのを待つspice-gtk Pythonスクリプトを簡単に作成できます(spicy.cの例を参照してください。ステータスバーはプロキシの存在を示します)。
"make distcheck"テストは/を汚染しないようにし、sudoを必要としません。もしそうなら、makefileに問題があるようです。
答え2
別のスクリプトの後に実行され、「フルブート」メッセージを記録するrcスクリプトを作成するのはどうですか?次に、syslog を vm ホストに渡し、メッセージがホストのログファイルに表示されるまで待ちます。
とにかく、それは私がすることです。
答え3
このツールを仮想マシンにインストールできます。 http://wiki.libvirt.org/page/Qemu_guest_agent Qemu_guest_agentは、仮想マシンが完全に起動したときに通知します。
VM に Spice ゲストエージェントをインストールすることもできます。 Spice ゲストエージェントが起動すると、VM は完全に起動します。
答え4
これはlibvirtとは関係がないかもしれません。完全に起動されたゲストの場合、一部のポートはリッスンしている可能性があり、Linuxの場合は22、Windowsの場合はリストされているポートのいずれかです。ここ。これを使用して、nc
ゲストがそのポートでリッスンしているかどうかをテストできます。
時には
nc
これが最良のオプションではなく(タイムアウトオプションがnc
機能しない)、ポートに接続するための単純なTCPクライアントを作成する方が便利です。