简介

LNT 是一个用于性能测试的基础设施。软件本身由两个主要部分组成:一个用于访问和可视化性能数据的 Web 应用程序,以及允许用户生成和提交测试结果到服务器的命令行实用程序。

该软件包最初是为了用于测试 LLVM 编译器技术而编写的,但设计为可用于任何软件的性能测试。

如果您是 LLVM 开发人员,并且主要只对使用 LNT 对某个编译器运行测试套件感兴趣,那么您应该快速浏览到 快速入门指南测试生成器 的信息。

LNT 使用一种简单且可扩展的格式在测试生成器和服务器之间交换数据;这使得 LNT 服务器能够接收和存储各种应用程序的数据。

LNT 客户端和服务器都用 Python 编写,但是测试数据本身可以使用多种格式传递,包括属性列表和 JSON。这使得从几乎任何语言生成测试结果变得容易。

安装

如果您只对在本地运行测试感兴趣,请参阅 快速入门指南

如果您想运行 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 变量(如果尚未配置)。

    如果在虚拟环境中运行,您也需要对其进行配置;请参阅 modwsgi wiki

对于生产服务器,您应该考虑使用 PostgreSQL 等完整的 DBMS。要使用 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 作为模板引擎。我希望最终迁移到更具 AJAX 特性的 Web 界面。

数据库层使用 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