简介¶
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。
对于生产服务器,您应该考虑使用像 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 应用程序目前实现为 Flask WSGI Web 应用程序,使用 Jinja2 作为模板引擎。我希望最终能迁移到更偏向 AJAX 的 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