Mock Firebolt permite a un desarrollador de aplicaciones que crea una aplicación compatible con Firebolt provocar "artificialmente" que las llamadas a los SDK de Firebolt devuelvan respuestas diferentes a las devueltas por un Firebolt real ejecutándose en cualquier dispositivo que puedan tener.
Esto podría usarse, por ejemplo:
FUTURO: Puede actuar como un proxy inverso para un Firebolt real que se ejecuta en un dispositivo real.
(NOTA: El SDK estándar tiene simulaciones estáticas integradas, pero no es controlable ni extensible).
Tenga en cuenta también que, dado que el SDK no valida los parámetros en las llamadas a métodos, los desarrolladores de aplicaciones también pueden utilizar Mock Firebolt como una forma de validar que sus invocaciones de métodos Firebolt son correctas.
Este repositorio contiene estos elementos:
Ver Documentación.
Mock Firebolt es un servicio de burla muy genérico para casi cualquier servicio basado en OpenRPC. La lista de SDK particulares que admite el servidor cuando lo ejecuta está controlada por el contenido del archivo server/src/.mf.config.json
y cualquier indicador de línea de comandos asociado que proporcione cuando inicia el servidor.
El repositorio contiene un archivo server/src/.mf.config.SAMPLE.json
y deberá copiar este archivo a server/src/.mf.config.json
para que se inicie el servidor. Una vez que haya hecho esto, podrá editar su archivo server/src/.mf.config.json
y agregar otros SDK si lo desea. Si el archivo OpenRPC JSON para su API está en algún lugar de la nube o disponible a través de HTTP, debe usar la propiedad url
para el SDK en este archivo en lugar de la propiedad fileName
(que solo se usa para los SDK para los cuales existe una dependencia" en el archivo server/package.json
).
Las siguientes dos secciones suponen que está utilizando el archivo .mf.config.json
listo para usar.
Mock Firebolt admite estos SDK de Firebolt: centralizar y administrar .
Mock Firebolt también es compatible con el SDK de $badger para desarrolladores de aplicaciones que migran de $badger a Firebolt.
Los desarrolladores que deseen activar esta funcionalidad deben pasar el indicador de línea de comando --moneybadger
al iniciar Mock Firebolt. Además, debe usar el script activateMockFireboltForBadger.js
dentro de su aplicación y ejecutarlo antes de que se ejecute su paquete de aplicaciones (que incluye $badger).
Nota: Requiere NodeJS 16+. Si está utilizando nvm
, nvm use 16
o similar.
Para instalar y ejecutar:
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"
Ahora puede acceder a OpenRPC central/administrar desde HTTP agregando "url": "https://rdkcentral.github.io/firebolt/requirements/latest/specifications/firebolt-open-rpc.json"
en mf.config.SAMPLE.json
y copiarlo a mf.config.json
.
NOTA: Actualmente, estas instrucciones implican la creación de una imagen de Docker localmente en lugar de descargar una desde un repositorio de imágenes.
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)
Consulte Problemas conocidos.
Si desea contribuir con código a este proyecto, puede hacerlo a través de GitHub bifurcando el repositorio y enviando una solicitud de extracción.
Antes de que RDK acepte su código en el proyecto, debe firmar el Acuerdo de licencia de colaborador (CLA) de RDK.