Code Monkey home page Code Monkey logo

dsynth's Introduction

DSynth

DSynth is a template driven data generator. DSynth accepts templates of various formats, generates templated data and outputs the generated data into a configured sink[s]. DSynth also exposes an endpoint for each configured provider to allow for services to pull generated data when push is not supported. DSynth is very flexible and can easily be extended to support other template formats and sinks. Comes complete with API which allows control of DSynth, including the importing and exporting of profiles. DSynth also comes with out of the box support with Application Insights which can be paired with Grafana to provide rich visual telemetry.

Supported Sinks:

- Azure Blob
- Azure Cosmos DB
- Azure Custom Logs
- Azure Event Hubs
- Azure IoT Hub
- Azure Log Analytics
- Azure Service Bus
- Console
- File
- Http
- SocketServer

Supported Template Formats:

- CSV
- Images
  - Jpeg
  - Bmp
  - Tiff
  - Gif
  - Png
- JSON
- JSONL
- RAW
- XML

To Run

The project is "mostly" setup to run out of the box and requires prerequisites to support the image generation feature of DSynth (for Mac and Linux). After starting DSynth, you will see payloads in the format of CSV, JSON, XML and RAW written to console. Images are turned off by default, but can easily be enabled by setting "isPushEnabled": true, in sample-providers.json for the ImageTemplateSample provider.

Mac Prerequisites:

brew install mono-libgdiplus

Ubuntu Prerequisites:

sudo apt-get install libgdiplus

Build and Run DSynth

-- Run the following command appropriate for your environment --

(OSX)
cd DSynth
dotnet publish ./src/DSynth/DSynth.csproj --configuration Release --runtime osx-x64 --output ./release/osx-x64
cd release/osx-64
./DSynth

(Linux)
cd DSynth
dotnet publish ./src/DSynth/DSynth.csproj --configuration Release --runtime linux-x64 --output ./release/linux-x64
cd release/linux-64
./DSynth

(Windows)
cd DSynth
dotnet publish ./src/DSynth/DSynth.csproj --configuration Release --runtime win-x64 --output ./release/win-x64
cd release/win-64
./DSynth.exe

(Linux-ARM64)
cd DSynth
dotnet publish ./src/DSynth/DSynth.csproj --configuration Release --runtime linux-arm64 --output ./release/linux-arm64
cd release/linux-arm64
./DSynth

Additional Startup Arguments

Switch Description
--headless Starts DSynth in headless mode without the API

Documentation Sections

The steps above will get DSynth running with default sample values. To explore further and create your own profiles and templates, please follow the links below.

  1. Template Tokens
  2. Template Formats
  3. Template Collections
  4. Provider Configurations
  5. Sink Configurations
  6. API Endpoints

dsynth's People

Contributors

dependabot[bot] avatar microsoft-github-operations[bot] avatar microsoftopensource avatar scschneider avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

dsynth's Issues

Require capability to generate synthetic documents

We heed to have a capability to generate synthetic documents, paragraphs, and names. We have a scenario where we need to generate synthetic documents based on certain parameters. lets take example of sourcing a project to develop a software. We need to generate a contract document. Another example is to generate artificial invoice items.

Add support for external collections

Right now collections are primarily sourced from files colocated with templates. It'd be useful to be able to pull collections from sources like Blob, databases, etc.

Number:Increment will always return max

Description

Once Number:IncrementTracked hits its max, it will alway return max. This is a problem if we specify a negative value for increment range.

Scenario:

Assume we want to simulate CPU utilization metrics to always generate a random number between 0 and 100 with an increment range of -1.5 to 1.5.

Current Behavior:

Once we hit max value, the current code will always return max value.

Expected Behavior:

Given the scenario above, we would expect the number to be able to come back down if a random value is in the negative after the number hit max value.

Example Token:

{{Number:IncrementTracked:0.0..100.0:-1.5..1.5:100:trackedKey}}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.