模拟 Firebolt 允许应用程序开发人员创建兼容 Firebolt 的应用程序,以“人为地”导致对 Firebolt SDK 的调用返回与在他们可能拥有的任何设备上运行的真实 Firebolt 返回的响应不同的响应。
这可能会被使用,例如:
未来:可以充当在真实设备上运行的真实 Firebolt 的反向代理。
(注意:标准 SDK 内置了静态模拟,但它是不可控制或可扩展的。)
另请注意,由于 SDK 不会验证方法调用的参数,因此应用程序开发人员还可以使用 Mock Firebolt 作为验证 Firebolt 方法调用是否正确的方法。
该存储库包含以下元素:
请参阅文档。
Mock Firebolt 是一个非常通用的模拟服务,适用于几乎所有基于 OpenRPC 的服务。服务器运行时支持的特定 SDK 列表由server/src/.mf.config.json
文件的内容以及启动服务器时提供的任何关联命令行标志控制。
该存储库包含server/src/.mf.config.SAMPLE.json
文件,您需要将此文件复制到server/src/.mf.config.json
才能启动服务器。完成此操作后,您可以随意编辑server/src/.mf.config.json
文件并根据需要添加其他 SDK。如果您的 API 的 OpenRPC JSON 文件位于云中的某个位置或通过 HTTP 提供,则您应该在此文件中使用 SDK 的url
属性,而不是fileName
属性(该属性仅用于具有“硬性”属性的 SDK)。 server/package.json
文件中的依赖关系”)。
接下来的两节假设您正在使用现成的.mf.config.json
文件。
模拟 Firebolt 支持以下 Firebolt SDK: core和management 。
Mock Firebolt 还支持 $badger SDK,以便应用程序开发人员从 $badger 迁移到 Firebolt。
希望激活此功能的开发人员必须在启动 Mock Firebolt 时传递--moneybadger
命令行标志。此外,您必须在应用程序中使用activateMockFireboltForBadger.js
脚本,并让它在应用程序包(包括 $badger)执行之前执行。
注意:需要 NodeJS 16+。如果您使用nvm
,请nvm use 16
或类似值。
安装并运行:
cd <the place you put your code repos>
git clone https://github.com/rdkcentral/mock-firebolt.git /* THIS REPO */
cd mock-firebolt
# To start the mock Firebolt server (if running locally)
cd server
# One-time stuff
cp src/.mf.config.SAMPLE.json src/.mf.config.json
# To install dependencies, clean/create build/ subdirectory, build and upgrade SDK, build source code within this project
npm install
# If you want support for Firebolt Core/Manage SDK
# Run in a separate terminal window/tab, or use '&' to background
npm start
# If you need to use non-standard ports for any reason:
npm start -- --httpPort 3456 --socketPort 9876 --wsSessionServerPort 1234
#If you wish to enable conduit functionality*
npm start -- --conduit
*Note*: Requires Conduit to be running. See the Conduit documentation (./conduit/README.md) for more information.
# If you need to use proxy connection for any reason:
npm start -- --proxy <ip>:<port>
Refer more about proxy mode in ./docs/ProxyMode.md
# To use the control CLI (assuming you're in the top-level directory for this repo)
cd cli
npm install
cd src
node cli.mjs --help
# FUTURE: To use the Chrome browser plugin
Visit chrome://extensions in Chrome
Ensure "Developer mode" is turned on (slider to the right in the top right corner of your browser window)
Click the "Load Unpacked" button (top left corner of browser window)
Navigate to the directory under browser-extensions which contains a manifest.json file and click "Select"
现在,您可以通过在 mf.config.SAMPLE 中添加"url": "https://rdkcentral.github.io/firebolt/requirements/latest/specifications/firebolt-open-rpc.json"
从 HTTP 访问 core/manage OpenRPC mf.config.SAMPLE.json
并复制到mf.config.json
。
注意:这些说明当前涉及在本地创建 Docker 映像,而不是从映像存储库下载映像。
export MF_DOCKER_USER=<yourDockerUsername>
cd <top of repo>
# Create a docker image: Use the appropriate command (most 3rd party app devs should use the first command)
docker build -f Dockerfile.coreSdk . -t $MF_DOCKER_USER/mock-firebolt
docker build -f Dockerfile.allSdks . -t $MF_DOCKER_USER/mock-firebolt
# Confirm your image was created
docker images | grep mock-firebolt
# Run the image, enabling the core/manage OpenRPC (typical)
# Change '$(pwd)' to whatever else you might want to use; this is where your MF .json files live
# NOTE: -p <outside/host port>:<inside/container port>
docker run -d
--name mf
--mount type=bind,source="$(pwd)",target=/usr/src/firebolt/host-files
-p 3333:3333
-p 9998:9998
$MF_DOCKER_USER/mock-firebolt
# Get container ID
docker ps | grep mf
# See logs
docker logs mf
# Enter the container (if necessary/desired)
docker exec -it mf /bin/bash
# Run CLI commands from inside the container (if necessary/desired)
container> cd /usr/src/firebolt/mock-firebolt/cli/src
container> node cli.mjs --help
# Run CLI
# Note the container path for the volume used when running the image is used here to refer to MF .json files
docker exec -it mf mf.sh --help
docker exec -it mf mf.sh --upload /usr/src/firebolt/host-files/<file relative current directory>
# E.g., docker exec -it mf mf.sh --upload /usr/src/firebolt/host-files/cli/examples/account-1.json
# Cleanup when done
docker stop mf
docker rm mf
docker image rm $MF_DOCKER_USER/mock-firebolt (If you want to remove the image, too)
请参阅已知问题。
如果您想为此项目贡献代码,您可以通过 GitHub 分叉存储库并发送拉取请求来实现。
在 RDK 接受您的代码进入项目之前,您必须签署 RDK 贡献者许可协议 (CLA)。