# Backend.AI Testing Toolkit
Automated test suites to validate an installation and integration of clients and servers
## How to run CLI-based integration test
If there is no configuration script named `env-tester.sh`, copy it from `sample-env-tester.sh` and check the configuration env.
```console
$ source env-tester.sh
$ backend.ai test run-cli
```
NOTE: The ENV script is parsed with `"^export (\w+)=(.*)$"` regex pattern line by line.
Raw data
{
"_id": null,
"home_page": "https://github.com/lablup/backend.ai",
"name": "backend.ai-test",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.14,>=3.13",
"maintainer_email": null,
"keywords": null,
"author": "Lablup Inc. and contributors",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/fc/5a/a788b40cca9258785ba05a7efd902a0557ecc13c14bc040116929c7053c3/backend_ai_test-25.11.0.tar.gz",
"platform": null,
"description": "# Backend.AI Testing Toolkit\n\nAutomated test suites to validate an installation and integration of clients and servers\n\n\n## How to run CLI-based integration test\n\nIf there is no configuration script named `env-tester.sh`, copy it from `sample-env-tester.sh` and check the configuration env.\n\n```console\n$ source env-tester.sh\n$ backend.ai test run-cli\n```\n\nNOTE: The ENV script is parsed with `\"^export (\\w+)=(.*)$\"` regex pattern line by line.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Backend.AI Integration Test Suite",
"version": "25.11.0",
"project_urls": {
"Documentation": "https://docs.backend.ai/",
"Homepage": "https://github.com/lablup/backend.ai",
"Source": "https://github.com/lablup/backend.ai"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "d02cc38c069e56be0006fdba5adb313b6691326bdd8f37698ec90b479609c7fd",
"md5": "63ceb81c3c31368297465f69759c0218",
"sha256": "36d3e0f3dc51f69ddbfcbc3cb1ca2cc9d4e31d7c5b8fc749dd49c2693441c661"
},
"downloads": -1,
"filename": "backend_ai_test-25.11.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "63ceb81c3c31368297465f69759c0218",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.14,>=3.13",
"size": 79452,
"upload_time": "2025-07-09T04:55:34",
"upload_time_iso_8601": "2025-07-09T04:55:34.721683Z",
"url": "https://files.pythonhosted.org/packages/d0/2c/c38c069e56be0006fdba5adb313b6691326bdd8f37698ec90b479609c7fd/backend_ai_test-25.11.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fc5aa788b40cca9258785ba05a7efd902a0557ecc13c14bc040116929c7053c3",
"md5": "8bdb19f7ed34a33e358c65965cdd6bc1",
"sha256": "9a30902cb5308bb1faac16f6bac0f082581ea2d264a31dc9a9d090c7f1e6c514"
},
"downloads": -1,
"filename": "backend_ai_test-25.11.0.tar.gz",
"has_sig": false,
"md5_digest": "8bdb19f7ed34a33e358c65965cdd6bc1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.14,>=3.13",
"size": 42894,
"upload_time": "2025-07-09T04:55:53",
"upload_time_iso_8601": "2025-07-09T04:55:53.423741Z",
"url": "https://files.pythonhosted.org/packages/fc/5a/a788b40cca9258785ba05a7efd902a0557ecc13c14bc040116929c7053c3/backend_ai_test-25.11.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-09 04:55:53",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "lablup",
"github_project": "backend.ai",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "aiodataloader",
"specs": [
[
"~=",
"0.4.2"
]
]
},
{
"name": "aiodocker",
"specs": [
[
"==",
"0.24.0"
]
]
},
{
"name": "aiofiles",
"specs": [
[
"~=",
"24.1.0"
]
]
},
{
"name": "aiohttp",
"specs": [
[
"~=",
"3.11.16"
]
]
},
{
"name": "aiohttp_cors",
"specs": [
[
"~=",
"0.8.1"
]
]
},
{
"name": "aiohttp_jinja2",
"specs": [
[
"~=",
"1.6"
]
]
},
{
"name": "aiohttp_sse",
"specs": [
[
">=",
"2.2"
]
]
},
{
"name": "aiodns",
"specs": [
[
"==",
"3.2"
]
]
},
{
"name": "aiomonitor",
"specs": [
[
"~=",
"0.7.0"
]
]
},
{
"name": "aioresponses",
"specs": [
[
">=",
"0.7.3"
]
]
},
{
"name": "aiosqlite",
"specs": [
[
"~=",
"0.21.0"
]
]
},
{
"name": "aiosignal",
"specs": [
[
"==",
"1.3.2"
]
]
},
{
"name": "aiotools",
"specs": [
[
"~=",
"1.9.0"
]
]
},
{
"name": "aiotusclient",
"specs": [
[
"~=",
"0.1.4"
]
]
},
{
"name": "alembic",
"specs": [
[
"~=",
"1.13.2"
]
]
},
{
"name": "appdirs",
"specs": [
[
"~=",
"1.4.4"
]
]
},
{
"name": "async_timeout",
"specs": [
[
"~=",
"4.0"
]
]
},
{
"name": "asyncpg",
"specs": [
[
">=",
"0.29.0"
]
]
},
{
"name": "asynctest",
"specs": [
[
">=",
"0.13.0"
]
]
},
{
"name": "asyncudp",
"specs": [
[
">=",
"0.11"
]
]
},
{
"name": "attrs",
"specs": [
[
">=",
"25.3"
]
]
},
{
"name": "bcrypt",
"specs": [
[
"~=",
"4.2.0"
]
]
},
{
"name": "boto3",
"specs": [
[
"~=",
"1.35"
]
]
},
{
"name": "cachetools",
"specs": [
[
"~=",
"5.5.0"
]
]
},
{
"name": "callosum",
"specs": [
[
"~=",
"1.0.3"
]
]
},
{
"name": "cattrs",
"specs": [
[
"~=",
"24.1.1"
]
]
},
{
"name": "click",
"specs": [
[
"~=",
"8.1.7"
]
]
},
{
"name": "coloredlogs",
"specs": [
[
"~=",
"15.0"
]
]
},
{
"name": "colorama",
"specs": [
[
">=",
"0.4.6"
]
]
},
{
"name": "cryptography",
"specs": [
[
">=",
"44.0.2"
]
]
},
{
"name": "dataclasses-json",
"specs": [
[
"~=",
"0.5.7"
]
]
},
{
"name": "faker",
"specs": [
[
"~=",
"24.7.1"
]
]
},
{
"name": "graphene",
"specs": [
[
"~=",
"3.3.0"
]
]
},
{
"name": "graypy",
"specs": [
[
"==",
"2.1.0"
]
]
},
{
"name": "humanize",
"specs": [
[
">=",
"3.1.0"
]
]
},
{
"name": "ifaddr",
"specs": [
[
"~=",
"0.2"
]
]
},
{
"name": "inquirer",
"specs": [
[
"~=",
"3.3.0"
]
]
},
{
"name": "janus",
"specs": [
[
"~=",
"2.0"
]
]
},
{
"name": "Jinja2",
"specs": [
[
"~=",
"3.1.6"
]
]
},
{
"name": "jupyter-client",
"specs": [
[
">=",
"8.6"
]
]
},
{
"name": "kubernetes",
"specs": [
[
"~=",
"10.0.0"
]
]
},
{
"name": "kubernetes-asyncio",
"specs": [
[
"~=",
"9.1.0"
]
]
},
{
"name": "lark",
"specs": [
[
"~=",
"1.1.5"
]
]
},
{
"name": "more-itertools",
"specs": [
[
"~=",
"10.5.0"
]
]
},
{
"name": "msgpack",
"specs": [
[
"~=",
"1.1.0"
]
]
},
{
"name": "multidict",
"specs": [
[
"~=",
"6.2.0"
]
]
},
{
"name": "namedlist",
"specs": [
[
"~=",
"1.8"
]
]
},
{
"name": "networkx",
"specs": [
[
"~=",
"3.3.0"
]
]
},
{
"name": "orjson",
"specs": [
[
"~=",
"3.10.16"
]
]
},
{
"name": "opentelemetry-api",
"specs": [
[
"~=",
"1.33.1"
]
]
},
{
"name": "opentelemetry-sdk",
"specs": [
[
"~=",
"1.33.1"
]
]
},
{
"name": "opentelemetry-exporter-otlp-proto-grpc",
"specs": [
[
"~=",
"1.33.1"
]
]
},
{
"name": "opentelemetry-instrumentation-aiohttp-client",
"specs": [
[
"~=",
"0.54b1"
]
]
},
{
"name": "opentelemetry-instrumentation-aiohttp-server",
"specs": [
[
"~=",
"0.54b1"
]
]
},
{
"name": "opentelemetry-instrumentation-logging",
"specs": [
[
"~=",
"0.54b1"
]
]
},
{
"name": "pexpect",
"specs": [
[
"~=",
"4.8"
]
]
},
{
"name": "prometheus-client",
"specs": [
[
"~=",
"0.21.1"
]
]
},
{
"name": "psutil",
"specs": [
[
"~=",
"7.0"
]
]
},
{
"name": "pycryptodome",
"specs": [
[
">=",
"3.20.0"
]
]
},
{
"name": "pyhumps",
"specs": [
[
"~=",
"3.8.0"
]
]
},
{
"name": "pyroscope-io",
"specs": [
[
"~=",
"0.8.8"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
">=",
"2.9"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
"~=",
"0.20.0"
]
]
},
{
"name": "python-json-logger",
"specs": [
[
"~=",
"3.2.0"
]
]
},
{
"name": "pyzmq",
"specs": [
[
"~=",
"26.4"
]
]
},
{
"name": "PyJWT",
"specs": [
[
"~=",
"2.10.1"
]
]
},
{
"name": "PyYAML",
"specs": [
[
"~=",
"6.0"
]
]
},
{
"name": "pydantic",
"specs": [
[
"~=",
"2.11.3"
]
]
},
{
"name": "packaging",
"specs": [
[
">=",
"24.1"
]
]
},
{
"name": "hiredis",
"specs": [
[
">=",
"3.0.0"
]
]
},
{
"name": "redis",
"specs": [
[
"==",
"4.5.5"
]
]
},
{
"name": "rich",
"specs": [
[
"~=",
"13.6"
]
]
},
{
"name": "ruamel.yaml",
"specs": [
[
"~=",
"0.18.10"
]
]
},
{
"name": "SQLAlchemy",
"specs": [
[
"~=",
"1.4.54"
]
]
},
{
"name": "setproctitle",
"specs": [
[
"~=",
"1.3.5"
]
]
},
{
"name": "setuptools",
"specs": [
[
"~=",
"80.0.0"
]
]
},
{
"name": "tabulate",
"specs": [
[
"~=",
"0.8.9"
]
]
},
{
"name": "temporenc",
"specs": [
[
"~=",
"0.1.0"
]
]
},
{
"name": "tenacity",
"specs": [
[
">=",
"9.0"
]
]
},
{
"name": "toml",
"specs": [
[
"~=",
"0.10.2"
]
]
},
{
"name": "tomli",
"specs": [
[
"~=",
"2.0.1"
]
]
},
{
"name": "tomlkit",
"specs": [
[
"~=",
"0.13.2"
]
]
},
{
"name": "tqdm",
"specs": [
[
"~=",
"4.67.1"
]
]
},
{
"name": "trafaret",
"specs": [
[
"~=",
"2.1"
]
]
},
{
"name": "treelib",
"specs": [
[
"~=",
"1.7.0"
]
]
},
{
"name": "typeguard",
"specs": [
[
"~=",
"4.3"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
"~=",
"4.11"
]
]
},
{
"name": "textual",
"specs": [
[
"~=",
"0.79.1"
]
]
},
{
"name": "uvloop",
"specs": [
[
"~=",
"0.21"
]
]
},
{
"name": "valkey-glide",
"specs": [
[
"~=",
"2.0.1"
]
]
},
{
"name": "yarl",
"specs": [
[
"~=",
"1.19.0"
]
]
},
{
"name": "zipstream-new",
"specs": [
[
"~=",
"1.1.8"
]
]
},
{
"name": "pytest",
"specs": [
[
">=",
"8.3.3"
]
]
},
{
"name": "pytest-aiohttp",
"specs": [
[
"~=",
"1.0.5"
]
]
},
{
"name": "pytest-dependency",
"specs": [
[
">=",
"0.6.0"
]
]
},
{
"name": "types-six",
"specs": []
},
{
"name": "types-setuptools",
"specs": []
},
{
"name": "types-python-dateutil",
"specs": []
},
{
"name": "types-aiofiles",
"specs": []
},
{
"name": "types-cachetools",
"specs": []
},
{
"name": "types-Jinja2",
"specs": []
},
{
"name": "types-PyYAML",
"specs": []
},
{
"name": "types-redis",
"specs": []
},
{
"name": "types-tabulate",
"specs": []
},
{
"name": "types-toml",
"specs": []
},
{
"name": "backend.ai-krunner-alpine",
"specs": [
[
"==",
"5.4.0"
]
]
},
{
"name": "backend.ai-krunner-static-gnu",
"specs": [
[
"==",
"4.4.0"
]
]
},
{
"name": "etcd-client-py",
"specs": [
[
"~=",
"0.4.0"
]
]
}
],
"lcname": "backend.ai-test"
}