98 lines
1.8 KiB
Nix
98 lines
1.8 KiB
Nix
{
|
|
lib,
|
|
buildPythonPackage,
|
|
python,
|
|
callPackage,
|
|
fetchFromGitHub,
|
|
hatchling,
|
|
hatch-vcs,
|
|
pytestCheckHook,
|
|
configargparse,
|
|
cryptography,
|
|
flask,
|
|
flask-cors,
|
|
flask-login,
|
|
gevent,
|
|
geventhttpclient,
|
|
msgpack,
|
|
psutil,
|
|
pyquery,
|
|
pyzmq,
|
|
requests,
|
|
retry,
|
|
tomli,
|
|
werkzeug,
|
|
}:
|
|
|
|
buildPythonPackage rec {
|
|
pname = "locust";
|
|
version = "2.33.1";
|
|
pyproject = true;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "locustio";
|
|
repo = "locust";
|
|
tag = version;
|
|
hash = "sha256-cOYdf3F1OF1P4xFEG3isuiePIl1tHnjL7UVoFIpb40A=";
|
|
};
|
|
|
|
postPatch = ''
|
|
substituteInPlace locust/test/test_main.py \
|
|
--replace-fail '"locust"' '"${placeholder "out"}/bin/locust"'
|
|
|
|
substituteInPlace locust/test/test_log.py \
|
|
--replace-fail '"locust"' '"${placeholder "out"}/bin/locust"'
|
|
'';
|
|
|
|
webui = callPackage ./webui.nix {
|
|
inherit version;
|
|
src = "${src}/locust/webui";
|
|
};
|
|
|
|
build-system = [
|
|
hatchling
|
|
hatch-vcs
|
|
];
|
|
|
|
pythonRelaxDeps = [
|
|
# version 0.7.0.dev0 is not considered to be >= 0.6.3
|
|
"flask-login"
|
|
];
|
|
|
|
dependencies = [
|
|
configargparse
|
|
flask
|
|
flask-cors
|
|
flask-login
|
|
gevent
|
|
geventhttpclient
|
|
msgpack
|
|
psutil
|
|
pyzmq
|
|
requests
|
|
tomli
|
|
werkzeug
|
|
];
|
|
|
|
pythonImportsCheck = [ "locust" ];
|
|
|
|
nativeCheckInputs = [
|
|
cryptography
|
|
pyquery
|
|
pytestCheckHook
|
|
retry
|
|
];
|
|
|
|
# locust's test suite is very flaky, due to heavy reliance on timing-based tests and access to the
|
|
# network.
|
|
doCheck = false;
|
|
|
|
meta = {
|
|
description = "Developer-friendly load testing framework";
|
|
homepage = "https://docs.locust.io/";
|
|
changelog = "https://github.com/locustio/locust/blob/${src.tag}/CHANGELOG.md";
|
|
license = lib.licenses.mit;
|
|
maintainers = with lib.maintainers; [ jokatzke ];
|
|
};
|
|
}
|