rngo sim
Runs a simulation. In particular, it:
- builds a simulation spec
- posts it to the Create Simulation API endpoint
- streams the data from the Stream Simulation endpoint
- imports the data into the appropriate systems
Building a Simulation Spec
rngo sim builds a simulation spec based upon the contents of the local.rngo directory.
The base of the spec is the contents of .rngo/spec.yml. If this file doesn't exist, the base will be an empty spec with a seed of 1.
From there, it will merge in each file under the .rngo/entities directory. For example, if there was a file at.rngo/entities/USER.yml with the following value:
stream:
type: object
properties:
id:
type: id.integer
name:
type: person.nameIt will be inserted into the spec like this:
seed: 1
entities:
USER:
stream:
type: object
properties:
id:
type: id.integer
name:
type: person.nameIf the path already exists in the base spec, the .rngo/entities file be ignored. An analogous process happens for the files in the .rngo/systems directory.
This entire step is skipped if the--spec flag is set, like this:
rngo sim --spec spec.ymlIn this case, the content of thespec.yml file will be used as is.
Importing Data
The Stream Simulation API endpoint delivers simulation data as a single stream of SSEs. rngo sim will route each event to the appropriate system.
Consider the following excerpt from a spec:
systems:
db1:
output:
type: sql
import:
command: sqlite3 db1.sqlite
entities:
invoices:
system:
type: db1
stream:
type: object
...In this case, all SSEs for theinvoices entity will be piped into thesqlite3 db1.sqlite command
You can specify a raw output for an entity, like this:
entities:
orders:
output:
type: json
stream:
type: object
...In this case (which is also the default), rngo sim will route to a default system - in this case, it is effectively something like:
output:
type: json
import:
command: cat > .rngo/simulations/hLpmFg0qFW2idopyd8NAq/orders.jsonlYou can set the--stdout boolean flag, e.g.:
rngo sim --stdoutThis will skip system routing and write all event values to stdout.