簡介

LNT 是一個效能測試的基礎架構。此軟體本身包含兩個主要部分:一個用於存取和視覺化效能資料的 Web 應用程式,以及允許使用者產生測試結果並提交至伺服器的命令列工具。

此套件最初是為測試 LLVM 編譯器技術而編寫,但設計上可用於任何軟體的效能測試。

如果您是一位 LLVM 開發者,主要只想使用 LNT 來針對某些編譯器執行測試套件,那麼您應該快速跳到快速入門指南,或關於測試產生器的資訊。

LNT 使用簡單且可擴展的格式,用於在測試產生器和伺服器之間交換資料;這允許 LNT 伺服器接收和儲存各種應用程式的資料。

LNT 用戶端和伺服器端都是用 Python 撰寫的,但是測試資料本身可以使用多種格式傳遞,包括屬性列表和 JSON。這使得從幾乎任何語言產生測試結果都變得容易。

安裝

如果您僅對在本機使用 LNT 執行測試感興趣,請參閱快速入門指南

如果您想執行 LNT 伺服器,您將需要執行以下額外步驟

  1. 建立新的 LNT 安裝

    lnt create path/to/install-dir
    

    這將建立 LNT 組態檔案、預設資料庫和 .wsgi 包裝器以建立應用程式。您可以直接執行產生的應用程式以使用內建的 Web 伺服器執行,或使用

    lnt runserver path/to/install-dir
    

    這提供了額外的命令列選項。這兩種伺服器都不建議用於生產環境。

  2. 如有必要,請編輯產生的 'lnt.cfg' 檔案,例如

    1. 更新資料庫列表。

    2. 更新伺服器可見的公開 URL。

    3. 更新 nt_emailer 組態。

  3. 將 'lnt.wsgi' 應用程式新增至您的 Apache 組態。如果尚未完成,您也應該設定 WSGIDaemonProcess 和 WSGIProcessGroup 變數。

    如果在 virtualenv 中執行,您也需要設定它;請參閱modwsgi wiki

對於生產伺服器,您應該考慮使用完整的 DBMS,例如 PostgreSQL。要使用 PostgreSQL 後端建立 LNT 實例,您需要改為執行此操作

  1. 在 PostgreSQL 中建立 LNT 資料庫,並確保使用者具有資料庫的寫入權限

    CREATE DATABASE "lnt.db"
    
  2. 然後建立 LNT 安裝

    lnt create path/to/install-dir --db-dir postgresql://user@host
    
  3. 正常執行伺服器

    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