はじめに¶
LNT はパフォーマンステストのためのインフラストラクチャです。ソフトウェア自体は、パフォーマンスデータにアクセスして視覚化するための Web アプリケーションと、ユーザーがテスト結果を生成してサーバーに送信するためのコマンドラインユーティリティの 2 つの主要部分で構成されています。
このパッケージは元々 LLVM コンパイラ技術のテストに使用するために作成されましたが、あらゆるソフトウェアのパフォーマンステストに使用できるように設計されています。
主に LNT を使用してテストスイートをコンパイラに対して実行することに関心のある LLVM 開発者の場合は、クイックスタートガイド または テストプロデューサー の情報に進んでください。
LNT は、テストプロデューサーとサーバー間でデータを交換するためのシンプルで拡張可能な形式を使用しています。これにより、LNT サーバーは、さまざまなアプリケーションのデータを受信して保存できます。
LNT クライアントとサーバーはどちらも Python で記述されていますが、テストデータ自体は、プロパティリストや JSON など、いくつかの形式のいずれかで渡すことができます。これにより、ほぼすべての言語からテスト結果を簡単に生成できます。
インストール¶
LNT を使用してローカルでテストを実行することのみに関心がある場合は、クイックスタートガイド を参照してください。
LNT サーバーを実行する場合は、以下の追加手順を実行する必要があります
新しい LNT インストールを作成する
lnt create path/to/install-dirこれにより、LNT 構成ファイル、デフォルトデータベース、アプリケーションを作成するための .wsgi ラッパーが作成されます。生成されたアプリを直接実行して組み込み Web サーバーで実行するか、
lnt runserver path/to/install-dirを使用して追加のコマンドラインオプションを提供できます。これらのサーバーはいずれも本番環境での使用には推奨されません。
必要に応じて、生成された「lnt.cfg」ファイルを編集します。たとえば、
データベースリストを更新します。
サーバーが表示されるパブリック URL を更新します。
nt_emailer 構成を更新します。
Apache 構成に「lnt.wsgi」アプリを追加します。まだ設定されていない場合は、WSGIDaemonProcess 変数と WSGIProcessGroup 変数も設定する必要があります。
virtualenv で実行している場合は、それも構成する必要があります。modwsgi wiki を参照してください。
本番サーバーの場合は、PostgreSQL などのフル DBMS の使用を検討する必要があります。PostgreSQL バックエンドで LNT インスタンスを作成するには、代わりに次の操作を行う必要があります
PostgreSQL に LNT データベースを作成します。また、ユーザーがデータベースへの書き込み権限を持っていることを確認してください
CREATE DATABASE "lnt.db"次に、LNT インストールを作成します
lnt create path/to/install-dir --db-dir postgresql://user@hostサーバーを通常どおり実行します
lnt runserver path/to/install-dir
アーキテクチャ¶
LNT Web アプリは現在、テンプレートエンジンとして Jinja2 を使用した Flask WSGI Web アプリとして実装されています。最終的には、より AJAX 的な Web インターフェースに移行したいと考えています。
データベース層は ORM に SQLAlchemy を使用しており、通常は SQLite によってサポートされていますが、過去に MySQL でテストしたことがあり、他のデータベースのサポートは簡単です。私の計画は、開発者が夜間テスト結果を表示するために独自の LNT インストールを簡単に実行し、サーバーで最も理にかなった DB で実行できるように、常に SQLite をサポートすることです。
LNT サーバーのローカル実行¶
LNT は、本番構成でさらに多くのユーザーに対応できます。本番環境では:- データベースとして Postgres または MySQL を使用する必要があります。 - Nginx や Apache などのプロキシの前に、適切な wsgi サーバーを使用する必要があります。
サーバー構成用の追加パッケージをインストールするには
virtualenv venv
. ./venv/bin/activate
pip install -r requirements.server.txt
lnt create path/to/data_dir --db-dir postgresql://user@host # data_dir path will be where lnt data will go.
cd deployment
# Now edit app_wrapper.py to have your path/to/data_dir path and the log-file below.
gunicorn app_wrapper:app --bind 0.0.0.0:8000 --workers 8 --timeout 300 --name lnt_server --log-file /var/log/lnt/lnt.log --access-logfile /var/log/lnt/gunicorn_access.log --max-requests 250000