Skip to content

Continuous round monitor for time-based decryption #128

Description

@ylembachar

Adds tests/continuous, a black-box monitor that runs the full time-based round against a deployed API on a loop: get_data_for_encryption, encrypt locally, register_identity, wait for the decryption timestamp, get_decryption_key, decrypt. A round passes only if the plaintext round-trips, so a key that is present but
wrong fails rather than passes. Needed because tests/integration builds the router in process and so cannot say anything about a deployment.

Done

  • Bounded (TEST_DURATION=26h) or unbounded (0) from the same code
  • Failed rounds recorded, run continues; ALLOWED_FAILURES sets the verdict
  • One log line per round with full identity, tx hash and decryption timestamp
  • Summary with pass/fail counts and p50/p95/max release latency
  • Behind the live build tag, so go test ./... never starts it
  • Self-contained docker: own compose file, multi-stage build
  • /metrics endpoint for a vmagent to scrape, matching the keyper deployments
  • Polls only after the timestamp: ~2 reads per round instead of ~12
  • Deployed on its own droplet, shutter-api-monitor-1003, separate region from 1003

Findings

  • Release latency is 4.3s or 6.4s and nothing else: Gnosis block time. So >7s would be a real signal, not jitter.

Follow-ups

  • Metrics off (METRICS_PORT=0); needs vmagent.yaml, REMOTE_WRITE_URL, alert rule
  • No restart policy by design, so a standing monitor won't survive a reboot
  • Raised rate limits are still a manual host edit; a clean redeploy reverts to 500/day and would break a multi-day run. Separate issue.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions