Skip to content

timveil/bloviate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,104 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Bloviate

Java CI with Maven CodeQL License Java

Hands-free test data generator for JDBC databases — Bloviate auto-discovers your schema, respects foreign keys, and fills tables (or CSV/TSV files) with realistic, reproducible data.

It generates from your schema, not from a copy of production — so the privacy story is simple and the data is reproducible by construction. Bloviate never touches production data, is deterministic by seed, and runs inside your JUnit/Testcontainers pipeline.

📖 Documentation

Full documentation, guides, and examples live at bloviate.io.

🚀 Features

  • Automatic schema discovery with foreign-key-aware fill ordering (topological sort)
  • Deterministic by seed — same seed + schema ⇒ byte-identical data, even under parallel fills
  • Per-column control and pluggable generators; realistic semantic values via Datafaker
  • Parallel & partitioned fills for large datasets, with referential integrity preserved
  • PostgreSQL, MySQL, MariaDB, CockroachDB, H2, SQLite, plus CSV/TSV/pipe flat-file output
  • First-class JUnit 5 and Testcontainers integrations

See the full feature tour and guides on bloviate.io.

📦 Installation

Requires Java 25+ and a JDBC-compatible database.

<dependency>
    <groupId>io.bloviate</groupId>
    <artifactId>bloviate-core</artifactId>
    <version>LATEST</version>
</dependency>

Bloviate is a multi-module build. bloviate-core is the dependency-free engine; the optional integration modules (bloviate-junit, bloviate-testcontainers, bloviate-datafaker) pull in their framework as a provided dependency. See the Quick Start for module coordinates and the GitHub Packages repository setup.

🚀 Quick Start

import io.bloviate.db.DatabaseFiller;
import io.bloviate.db.DatabaseConfiguration;
import io.bloviate.ext.PostgresSupport;

new DatabaseFiller.Builder(connection,
    new DatabaseConfiguration(
        5,    // batch size
        100,  // records per table
        new PostgresSupport(),
        null  // optional per-table configuration
    ))
    .build()
    .fill();

More examples — per-column overrides, distributions, composite keys, parallel fills, flat files — are in the documentation.

🏗️ Architecture & benchmarks

Curious how Bloviate works under the hood — the foreign-key dependency DAG and topological fill ordering, the schema-identity seeding that makes data reproducible, and the Strategy/Registry/SPI extension points? The technical deep-dive (with diagrams) and the performance numbers now live on the site:

🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md for how to build the project, run the test suite, spin up local databases, and submit pull requests.

  • The project targets Java 25 and uses TestContainers (so Docker is required to run the integration tests).
  • Commit messages and PR titles follow Conventional Commits, which drives automatic semantic versioning.

The documentation site lives in website/ (Astro + Starlight), with the canonical guide content under docs/.

📄 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

🙋‍♂️ Support

About

Hands-free test data generator for JDBC databases — auto-discovers your schema, respects foreign keys, and fills tables (or CSV/TSV files) with realistic, reproducible data.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors