簡介¶
LNT 是一個用於效能測試的基礎架構。該軟體本身由兩個主要部分組成,一個用於存取和視覺化效能數據的網路應用程式,以及允許用戶生成和提交測試結果到伺服器的命令列工具。
該套件最初是為測試 LLVM 編譯器技術而編寫的,但其設計目標是用於任何軟體的效能測試。
如果您是一位 LLVM 開發人員,主要只對使用 LNT 來針對某些編譯器執行測試套件感興趣,那麼您應該直接跳到快速入門指南或有關測試產生器的資訊。
LNT 使用一種簡單且可擴展的格式在測試產生器和伺服器之間交換數據;這允許 LNT 伺服器接收和儲存各種應用程式的數據。
LNT 客戶端和伺服器端都是用 Python 編寫的,但是測試數據本身可以使用多種格式傳遞,包括屬性列表和 JSON。這使得從幾乎任何語言產生測試結果變得容易。
安裝¶
如果您只對使用 LNT 在本地端執行測試感興趣,請參閱快速入門指南。
如果您想執行 LNT 伺服器,則需要執行以下額外步驟
建立新的 LNT 安裝
lnt create path/to/install-dir這將建立 LNT 配置檔案、預設數據庫和一個用於建立應用程式的 .wsgi 包裝器。您可以直接執行生成的應用程式以使用內建網路伺服器執行,或使用
lnt runserver path/to/install-dir它提供了額外的命令列選項。不建議將這兩種伺服器用於生產環境。
如有必要,請編輯生成的「lnt.cfg」檔案,例如
更新數據庫列表。
更新伺服器可見的公開網址。
更新 nt_emailer 配置。
將「lnt.wsgi」應用程式添加到您的 Apache 配置中。如果尚未完成,您還應該配置 WSGIDaemonProcess 和 WSGIProcessGroup 變數。
如果在虛擬環境中執行,您也需要進行相應的配置;請參閱modwsgi wiki。
對於正式伺服器,您應該考慮使用完整的 DBMS,例如 PostgreSQL。要使用 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 網頁應用程式目前實作為 Flask WSGI 網頁應用程式,並使用 Jinja2 作為範本引擎。我希望最終能遷移到更像 AJAX 的網頁介面。
資料庫層使用 SQLAlchemy 作為其 ORM,通常由 SQLite 支援,雖然我過去曾在 MySQL 上測試過,而且支援其他資料庫應該也很簡單。我的計畫是始終支援 SQLite,因為這讓開發人員可以輕鬆地執行他們自己的 LNT 安裝,以查看夜間測試結果,並使用在伺服器上最有意義的資料庫來執行。
在本機執行 LNT 伺服器¶
在正式環境設定中,LNT 可以容納更多使用者。在正式環境中:- 應使用 Postgres 或 MySQL 作為資料庫。- 應使用適當的 WSGI 伺服器,位於 Nginx 或 Apache 等代理伺服器之前。
要安裝伺服器設定的額外套件:
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