Mock Firebolt permet à un développeur d'applications créant une application compatible Firebolt de faire en sorte que les appels au(x) SDK Firebolt renvoient des réponses différentes de celles renvoyées par un véritable Firebolt exécuté sur le(s) périphérique(s) dont il dispose.
Cela pourrait être utilisé, par exemple :
FUTUR : peut agir comme un proxy inverse pour un vrai Firebolt exécuté sur un appareil réel.
(REMARQUE : le SDK standard intègre des simulations statiques, mais il n'est ni contrôlable ni extensible.)
Notez également que, étant donné que le SDK ne valide pas les paramètres des appels de méthode, les développeurs d'applications peuvent également utiliser Mock Firebolt pour valider que leurs invocations de méthodes Firebolt sont correctes.
Ce dépôt contient ces éléments :
Voir Documentation.
Mock Firebolt est un service moqueur très générique pour presque tous les services basés sur OpenRPC. La liste des SDK particuliers pris en charge par le serveur lorsque vous l'exécutez est contrôlée par le contenu du fichier server/src/.mf.config.json
et par tous les indicateurs de ligne de commande associés que vous fournissez lorsque vous démarrez le serveur.
Le dépôt contient un fichier server/src/.mf.config.SAMPLE.json
et vous devrez copier ce fichier dans server/src/.mf.config.json
pour que le serveur démarre. Une fois que vous avez fait cela, vous êtes libre de modifier votre fichier server/src/.mf.config.json
et d'ajouter d'autres SDK si vous le souhaitez. Si le fichier OpenRPC JSON de votre API se trouve quelque part dans le cloud ou est disponible via HTTP, vous devez utiliser la propriété url
du SDK dans ce fichier plutôt que la propriété fileName
(qui n'est utilisée que pour les SDK pour lesquels il existe un « hard » dépendance" dans le fichier server/package.json
).
Les deux sections suivantes supposent que vous utilisez le fichier .mf.config.json
prêt à l'emploi.
Mock Firebolt prend en charge ces SDK Firebolt : core & manage .
Mock Firebolt prend également en charge le SDK $badger pour les développeurs d'applications migrant de $badger vers Firebolt.
Les développeurs souhaitant activer cette fonctionnalité doivent transmettre l'indicateur de ligne de commande --moneybadger
lors du démarrage de Mock Firebolt. De plus, vous devez utiliser le script activateMockFireboltForBadger.js
dans votre application et le faire exécuter avant l'exécution de votre ensemble d'applications (qui inclut $badger).
Remarque : Nécessite NodeJS 16+. Si vous utilisez nvm
, nvm use 16
ou similaire.
Pour installer et exécuter :
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"
Vous pouvez désormais accéder à Core/manage OpenRPC à partir de HTTP en ajoutant "url": "https://rdkcentral.github.io/firebolt/requirements/latest/specifications/firebolt-open-rpc.json"
dans mf.config.SAMPLE.json
et copie dans mf.config.json
.
REMARQUE : ces instructions impliquent actuellement de créer une image Docker localement plutôt que d'en télécharger une à partir d'un référentiel d'images.
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)
Voir Problèmes connus.
Si vous souhaitez contribuer au code de ce projet, vous pouvez le faire via GitHub en créant un fork sur le référentiel et en envoyant une pull request.
Avant que RDK n'accepte votre code dans le projet, vous devez signer le contrat de licence de contributeur (CLA) RDK.