簡介¶
LNT 是一個效能測試的基礎架構。此軟體本身包含兩個主要部分:一個用於存取和視覺化效能資料的 Web 應用程式,以及允許使用者產生測試結果並提交至伺服器的命令列工具。
此套件最初是為測試 LLVM 編譯器技術而編寫,但設計上可用於任何軟體的效能測試。
如果您是一位 LLVM 開發者,主要只想使用 LNT 來針對某些編譯器執行測試套件,那麼您應該快速跳到快速入門指南,或關於測試產生器的資訊。
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 組態。
將 'lnt.wsgi' 應用程式新增至您的 Apache 組態。如果尚未完成,您也應該設定 WSGIDaemonProcess 和 WSGIProcessGroup 變數。
如果在 virtualenv 中執行,您也需要設定它;請參閱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 Web 應用程式目前實作為 Flask WSGI Web 應用程式,並使用 Jinja2 作為範本引擎。我希望最終能轉移到更 AJAXy 的 Web 介面。
資料庫層使用 SQLAlchemy 作為其 ORM,通常以 SQLite 作為後端,儘管我過去曾在 MySQL 上測試過,並且支援其他資料庫應該很簡單。我的計畫是始終支援 SQLite,因為這讓開發者可以輕鬆地執行自己的 LNT 安裝來檢視每晚的測試結果,並在伺服器上使用最有意義的資料庫執行。
在本機執行 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