Repository navigation
v0.8.0
What's new
Envelope-shape conformance — report is 28/28
fidelity report and fidelity conform now diff a structural body
signature on top of status/code/Content-Type: namespace-qualified XML
element paths + <?xml presence, and JSON top-level keys + __type
namespacing. It immediately caught four real divergences that botocore's
parser tolerates — all fixed from captures:
- ec2 errors now render the real AWS envelope:
<?xml version="1.0" encoding="UTF-8"?>+<Response><Errors><Error>+<RequestID>at
text/xml;charset=UTF-8— distinct from the query envelope - query errors carry the model's
xmlNamespaceand AWS's
Type, Code, Messagemember order - coral front-layer codes use capital
Message - rest-json fills modeled
RequestID/RequestIdentifiermembers - athena
InvalidRequestExceptioncarries semantic
AthenaErrorCode/ErrorCode(probed against real AWS)
fidelity diff — compare any two capture sets
microburst fidelity diff A B diffs emulator-vs-emulator or
region-vs-region captures directly. Verified: AWS us-west-2 and
ap-southeast-2 captures are shape-identical 28/28.
Request-side faults — request: rule block
Faults on the client→proxy upload path, not just the response:
request:
slow_upload: {rate_kbps: 8} # pace the upload read
cut_upload: {after_bytes: 1024} # reset mid-PUT — SDK sees ECONNRESET on its write pathOn streaming uploads (S3 PutObject, >4 MiB payloads) a cut is a true
mid-write reset — boto3 sees ConnectionClosedError, a distinct retry
path from response faults.
SigV4 presets, header mutation, scheduling, hot-reload
expired-token(400),clock-skew(RequestTimeTooSkewed403),
bad-signature(SignatureDoesNotMatch403) presetsresponse: {set_headers:, strip_headers:}— wrong Content-Type on a
200, strippedx-amz-*: exercises SDK parse paths body corruption can'tactive_at/untilbound when a rule starts/stops matching
(starts_in_s/ends_in_sinGET /rules)--watchhot-reloads the--configruleset on save; a broken file
keeps the previous rules
Measured latency presets
latency: {preset: dynamodb} — 25 named service baselines measured
against real AWS (us-east-1, read-only ops, n=8). Each preset is the
service-side residual over the network floor — your own RTT stacks on
top, like the real thing. tools/latency_probe.py re-measures.
SDK matrix: Rust + .NET
tools/sdk-matrix/ now runs six SDKs — boto3, JS v3, Go v2, Java v2,
aws-sdk-rust, AWSSDK .NET — 20/20 cells pass with zero serializer
changes. SDK-specific HEAD-error parsing documented.
Install
pip install microburst
# or
docker run -p 9999:9999 ghcr.io/pingedbrain/microburst:v0.8.0Full changelog: CHANGELOG.md