A lightweight Go-based templating system for generating random data with customizable tokens.
Moldova is a lightweight templating system written in Go that generates random data by interpreting custom tokens within templates. It solves the problem of creating synthetic datasets for testing, database load simulation, and other scenarios requiring randomized values. The tool supports a variety of data types, including GUIDs, integers, floats, timestamps, and country codes, with configurable parameters.
Developers and testers who need to generate random data for database load testing, sample data creation, or automated testing pipelines. It's particularly useful for those working with SQL databases or requiring structured synthetic data.
Developers choose Moldova for its simplicity, Go-based performance, and seamless integration with database testing tools like Slammer. Its token-based approach offers fine-grained control over data generation without the overhead of larger data mocking frameworks.
A lightweight templating system for generating random data
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
As a compiled Go binary, Moldova offers efficient execution for quick data generation runs, with no heavy dependencies, as emphasized in the philosophy of simplicity.
Tokens like {int:min:10|max:50} and {guid:ordinal:0} provide fine-grained control over ranges and value reuse, allowing configurable arguments for diverse data needs.
Designed specifically for SQL statement generation, it seamlessly works with tools like Slammer for load testing, as shown in the example INSERT statements.
Includes language-specific name generation via tokens like {firstname:language:romanian}, leveraging data/names.go for global dataset creation.
The token set is fixed to basic types like guid, int, and float; the README admits that hooks for ascii-only strings are not yet implemented, and there's no support for arrays or objects.
The pattern with pipes and colons (e.g., {int:min:10|max:50|ordinal:0}) can be error-prone and hard to read for templates with many arguments, increasing debugging effort.
The README provides minimal error handling examples or debugging guidance, and escaping control characters is noted as not implemented, limiting user support.