模擬 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 mf.config.json
mf.config.SAMPLE.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)。