Overview

rngo is a data simulation API that builds synthetic datasets that are:

  • realistic
  • on-demand
  • intuitively configured
  • arbitrarily large
  • rapidly generated
  • deterministic

You can use these datasets for a variety of testing, development, and prototyping activities inluding:

  • lower environment application state
  • iterative prototyping
  • property-based integration testing
  • PR environments
  • projected-state load testing

rngo is currently in beta. As a result, I am constantly iterating on and improving the simulation language and platform tooling. I will document and communicate all changes, although some may be disruptive.

Setup

First install the rngo CLI with Homebrew:

brew install rngodev/tap/cli

Next sign up for rngo at rngo.dev/sign-up, create an API key and copy it. Then log into the CLI:

rngo login

And enter the API key when prompted. Now you're ready to simulate some data.

First Simulation

Make a file called spec.yml and add the following simulation specification:

seed: 1
entities:
  users:
    stream:
      type: object
      properties:
        id:
          type: id.integer
        name:
          type: person.name
  posts:
    stream:
      type: object
      properties:
        id:
          type: id.integer
        title:
          enum:
            - Lorem Ipsum
            - Dolor Sit Amet
            - Sed Mattis Eu Erat
        author:
          type: reference
          entity: users
  

Now run the simulation like this:

rngo sim spec.yml --stream

This will send data to stdout that looks something like this:

{"stream":"users","offset":683878,"value":{"id": 1, "name": "Alice Jones"}}
{"stream":"users","offset":729698,"value":{"id": 2, "name": "Bob Hyland"}}
{"stream":"posts","offset":1036600,"value":{"id": 1, "title": "Lorem Impsum"},"author":{"id": 1, "name": "Alice Jones"}}

Next Steps

Learn more about simulations and streams and iterate on your simulation.