阿波罗联邦子图兼容性测试
@apollo/federation-subgraph-compatibility 脚本是国家防范机制的软件包,允许您测试给定子图的执行是否兼容 阿波罗联邦分图规格这个测试套件对照子图的执行验证了联邦的各种特征。 见 兼容性测试文件 关于预期计划、数据集和已执行测试信息的详细信息.
安装
阿波罗联邦子图相容性测试脚本发布给国家预防机制.
npm install --dev @apollo/federation-subgraph-compatibility
您可以使用 国家PX
# remote package
npx @apollo/federation-subgraph-compatibility --help
# package installed locally
npx fedtest --help
# package installed globally
fedtest --help
使用量
@apollo/federation-subgraph-compatibility 测试脚本启动一个由您的子图执行、两个参考子图和 阿波罗路由器。由于脚本需要管理多个进程,所以需要指定哪些进程管理技术应用于运行测试。 当前脚本支持 总理 财务报告和审定财务报表 多克编曲。 。 。 .
npx fedtest --help
Usage: fedtest [options] [command]
Run Apollo Federation subgraph compatibility tests
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
pm2 [options] Start supergraph using PM2
docker [options] Start supergraph using Docker Compose
help [options] [command] display help for command
总理
总理 是一个以节点为基础的进程管理器。 当测试使用时 pm2 命令,脚本将使用 阿波罗漫游者 dev 命令.
npx fedtest pm2 --help
Usage: fedtest pm2 [options]
Start supergraph using PM2
Options:
--config <subgraph.config.js> optional PM2 configuration file
--debug debug mode with extra log info
--endpoint <url> subgraph endpoint
--failOnRequired boolean flag to indicate whether any failing required test should fail the script.
--failOnWarning boolean flag to indicate whether any failing test should fail the script.
--format <json|markdown> optional output file format (choices: "json", "markdown", default: "markdown")
-h, --help display help for command
--quiet suppress logging to minimum
--schema <schema.graphql> optional path to schema file, if omitted composition will fallback to introspection
如果您的子图已经启动并运行, 您可以使用 PM2 运行兼容性测试 --endpoint <url> 选项。 这将创造出使用内测来读取子图图的超地图.
npx fedtest pm2 --endpoint http://localhost:8080/graphql
如果有可用的子图方案,也可以在命令行上指定. Schema路径可以是绝对的或相对当前目录的.
npx fedtest pm2 --endpoint http://localhost:8080/graphql --schema /path/to/schema.graphql
PM2也可以用来启动您的子图. 您可以指定一个 生态系统配置文件 包含如何启动子图的信息.
// simple PM2 subgraph config that starts Node application
module.exports = {
apps : [{
name : "subgraph product",
script : "index.js",
cwd: "/path/to/your/implementation"
}]
}
npx fedtest pm2 --endpoint http://localhost:8080/graphql --config /path/to/subgraph.config.js
多克编曲
多克编曲 是运行多容器 Docker 应用程序的工具。 当测试使用时 docker 命令,脚本将使用 阿波罗漫游者 supergraph compose 命令和运行独立的路由器图像.
npx fedtest docker --help
Usage: fedtest docker [options]
Start supergraph using Docker Compose
Options:
--compose <docker-compose.yaml> Path to docker compose file
--debug debug mode with extra log info
--failOnRequired boolean flag to indicate whether any failing required test should fail the script.
--failOnWarning boolean flag to indicate whether any failing test should fail the script.
--format <json|markdown> optional output file format (choices: "json", "markdown", default: "markdown")
-h, --help display help for command
--path <path> GraphQL endpoint path (default: "")
--port <port> HTTP server port (default: "4001")
--quiet suppress logging to minimum
--schema <schema.graphql> Path to schema file
为了使用 docker 命令,您需要同时通过作曲文件和子图计划文件.
文件路径可以是绝对的,也可以是相对于当前工作目录的.
npx fedtest docker --compose /path/to/docker-compose.yaml --schema /path/to/schema.graphql
Docker Compose文件是一个YAML配置文件,它定义了运行您的应用程序所需的所有服务,网络和音量. 对于阿波罗联邦的兼容性测试 我们要求您定义一个叫做 products 显示您的 GraphQL 端点 http://localhost:4001。 。 。 .
services:
products:
# must be a relative path to the directory that will be used to run the tests
# if you are going to run the tests from the same directory as your docker file, then you can specify .
build: path/to/my-implementation
# expose ports
ports:
- 4001:4001
如果您的应用程序暴露自定义路径( 例如 ) . /graphql)或使用不同的端口,确保也将这些值指定为命令行参数.
# docker compose file starts subgraph exposing http://localhost:8080/graphql
npx fedtest docker --compose /path/to/docker-compose.yaml --schema /path/to/schema.graphql --path /graphql --port 8080
作曲文件示例,请参见此寄存器中的示例执行. 欲了解更多详情,请参见: Docker 编写文档。 。 。 .
测试结果
脚本记录了控制台上的相容性测试结果并生成相应的结果文件. 默认情况下,脚本将以平分格式生成结果. 您可以通过指定和 --format json 选项.
# generate results.json file
npx fedtest pm2 --endpoint http://localhost:8080/graphql --format json
调试模式
为了启用提供更多动词日志的调试模式, 请指定 --debug 选项.
npx fedtest pm2 --endpoint http://localhost:8080/graphql --debug
联系人
如果您对测试库或代码有特定问题,请在 阿波罗社区论坛。 。 。 .
警卫
有关如何联系小组处理安全问题的更多信息,见我们 安全政策。 。 。 .
许可证
这个图书馆的许可依据是 《麻省理工学院许可证》。 。 。 .