Skip to content

Releases: mkleczek/pseudogress

Pseudogress 0.1.1

Choose a tag to compare

@github-actions github-actions released this 29 Oct 08:33
Immutable release. Only release title and notes can be modified.

Pseudogress simulates many virtual PostgreSQL databases on one server, so that a PostgreSQL client can be load-tested without a database's limits and costs: thousands of databases and connections, with the latency you choose.

What's new

The program is unchanged from 0.1.0. This release makes it easier to install:

  • Downloads. One .tar.gz archive per platform, each with the pseudogress executable, the licence and the README, and a SHA256SUMS file: Linux on x86_64 and aarch64 (glibc 2.28 or newer), and macOS 11 or newer (one universal archive). The Download section of the README shows how to check and unpack an archive; the README in the 0.1.0 archives predates it.
  • Nix. A flake, and an overlay for setups without flakes: nix run github:mkleczek/pseudogress/v0.1.1 -- replay pseudogress.toml. The Nix section of the README has the details. v0.1.0 has no flake.

Licence

AGPL-3.0-only.

Pseudogress 0.1.0

Choose a tag to compare

@mkleczek mkleczek released this 27 Oct 07:58

Pseudogress simulates many virtual PostgreSQL databases on one server, so that a PostgreSQL client can be load-tested without a database's limits and costs: thousands of databases and connections, with the latency you choose.

This is the first release. It is built to load-test multi-tenant PostgREST, and its configuration and recording format may still change before 1.0.

What it does

  • Virtual databases. A database is a name that a client connects to. Classes match names by pattern and give their databases a recording, users, latency and faults.
  • Record and replay. Record mode forwards each class's connections to a real PostgreSQL and records what it answers. Replay mode answers from the recordings.
  • Authentication. SCRAM-SHA-256 with passwords derived from a secret, so nothing is stored per database, and TLS.
  • Simulated latency and faults. A round trip, an execution-time model and faults (refused, hanging and reset connections, rejected passwords, stalls, statement timeouts), all set per class.
  • Admin API. Read and change a class's settings, send notifications, terminate connections and read metrics. It has no authentication, so bind it to localhost or a private network.
  • Metrics. Prometheus metrics per class, including how late answers are sent after their simulated time, which shows when Pseudogress itself adds to the latency being measured.
  • Platforms. Linux and macOS.

Build and run

nix-build                                        # or nix-shell --run 'cargo build --release'
result/bin/pseudogress record pseudogress.toml
result/bin/pseudogress replay pseudogress.toml

docs/DESIGN.md explains what Pseudogress simulates and what it doesn't, the recording format, the admin API and measured performance.

Licence

AGPL-3.0-only.