How Monokulo is tested
Monokulo handles other people’s money, so it gets tested hard. Every change runs more than 2,600 automatic tests. Every night, two kinds of robot tester invent thousands of strange situations and check that no payment goes missing. This page rebuilds itself from those runs. Open any section to see the details.
4176f6b on 18 Oct 2026·Nightly properties 23 Oct 2026·Fuzzing 23 Oct 2026·Live network 22 Oct 2026Coverage
While the tests run, a tool watches which lines of code actually get used. Code that no test ever runs is where bugs can hide. Higher is better, but 100% isn’t the goal: some code, like the stress-test tools, never ships. A branch is each way an if can go. Open a crate (a package of Rust code) to see its files, lowest first.
- Rust, shipping crates
- 90.5% 78.9% branches
- Rust, whole workspace
- 88.5% 76.6% branches
- Browser
- 95.1% 79.0% branches
monokulo 99 files95.9%55,363 / 57,75878.4%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/main.rs | 0.0% | 0 / 256 | 0 / 20 |
| src/webhooks/subscriber.rs | 71.3% | 87 / 122 | 2 / 6 |
| src/http/setup.rs | 83.0% | 322 / 388 | 20 / 24 |
| src/http/signup.rs | 84.9% | 107 / 126 | 24 / 30 |
| src/http/wallet_service.rs | 85.5% | 159 / 186 | 22 / 32 |
| src/http/query_page.rs | 85.9% | 244 / 284 | 32 / 42 |
| src/http/store_site.rs | 86.3% | 272 / 315 | 25 / 38 |
| src/http/store_settings.rs | 87.2% | 410 / 470 | 114 / 132 |
| src/webhooks/mod.rs | 87.8% | 86 / 98 | 10 / 14 |
| src/embed_domains.rs | 88.2% | 380 / 431 | 50 / 60 |
| src/db/webhooks.rs | 89.7% | 356 / 397 | 16 / 18 |
| src/webhooks/delivery.rs | 89.7% | 331 / 369 | 40 / 52 |
| src/http/connections.rs | 89.7% | 350 / 390 | 8 / 18 |
| src/abuse/proxy_protocol.rs | 90.1% | 163 / 181 | 21 / 22 |
| src/http/webhooks.rs | 90.7% | 262 / 289 | 11 / 12 |
| src/http/logout.rs | 90.9% | 10 / 11 | – |
| src/db/order_changes.rs | 91.4% | 32 / 35 | 3 / 4 |
| src/views/engine.rs | 92.0% | 686 / 746 | 65 / 104 |
| src/views/controls.rs | 92.1% | 58 / 63 | 8 / 12 |
| src/http/logs_page.rs | 92.1% | 1,169 / 1,269 | 103 / 142 |
| src/views/key_entry.rs | 92.5% | 147 / 159 | 10 / 12 |
| src/http/login.rs | 92.6% | 63 / 68 | 3 / 4 |
| src/http/store_key.rs | 92.7% | 38 / 41 | 6 / 6 |
| src/engine_view/relay.rs | 92.8% | 448 / 483 | 35 / 46 |
| src/live.rs | 92.8% | 516 / 556 | 62 / 86 |
| src/http/invites.rs | 93.0% | 760 / 817 | 28 / 46 |
| src/views/time.rs | 93.1% | 122 / 131 | 15 / 20 |
| src/http/dashboard.rs | 93.4% | 324 / 347 | 15 / 18 |
| src/confirmation_thresholds.rs | 93.9% | 340 / 362 | 28 / 38 |
| src/settings.rs | 94.2% | 878 / 932 | 39 / 50 |
| src/http/admin_setup.rs | 94.3% | 247 / 262 | 8 / 8 |
| src/views/webhooks.rs | 94.3% | 462 / 490 | 81 / 114 |
| src/views/query.rs | 94.4% | 356 / 377 | 41 / 50 |
| src/logs.rs | 94.5% | 277 / 293 | 8 / 10 |
| src/http/key_entry.rs | 94.7% | 610 / 644 | 56 / 74 |
| src/http/checkout.rs | 94.7% | 1,312 / 1,385 | 59 / 76 |
| src/http/wallets.rs | 94.9% | 1,641 / 1,730 | 64 / 112 |
| src/http/account.rs | 95.1% | 174 / 183 | 37 / 40 |
| src/http/embed_domains.rs | 95.4% | 1,619 / 1,697 | 54 / 66 |
| src/http/telemetry_client.rs | 95.6% | 129 / 135 | 18 / 22 |
| src/wallets.rs | 95.7% | 90 / 94 | 19 / 24 |
| src/http/engine_page.rs | 95.9% | 701 / 731 | 21 / 28 |
| src/abuse/streams.rs | 95.9% | 118 / 123 | 14 / 18 |
| src/abuse/limiter.rs | 96.2% | 202 / 210 | 25 / 32 |
| src/qr.rs | 96.3% | 26 / 27 | – |
| src/abuse/identity.rs | 96.4% | 163 / 169 | 18 / 20 |
| src/http/pos.rs | 96.5% | 2,077 / 2,153 | 48 / 68 |
| src/http/status_page.rs | 96.7% | 1,288 / 1,332 | 92 / 118 |
| src/engine_view/present.rs | 96.8% | 721 / 745 | 77 / 84 |
| src/http/csrf.rs | 97.0% | 64 / 66 | 6 / 6 |
| src/views/orders.rs | 97.1% | 563 / 580 | 47 / 54 |
| src/http/admin_settings.rs | 97.1% | 3,735 / 3,847 | 195 / 270 |
| src/http/orders.rs | 97.2% | 4,677 / 4,814 | 88 / 144 |
| src/views/scaling.rs | 97.2% | 927 / 954 | 91 / 106 |
| src/http/pos_logs.rs | 97.2% | 176 / 181 | 45 / 54 |
| src/crypto.rs | 97.5% | 119 / 122 | 2 / 2 |
| src/engine_client.rs | 97.6% | 1,369 / 1,402 | 56 / 66 |
| src/views/setup.rs | 97.8% | 443 / 453 | 35 / 38 |
| src/http/home.rs | 97.9% | 324 / 331 | 10 / 14 |
| src/http/abuse.rs | 98.0% | 765 / 781 | 39 / 48 |
| src/abuse/challenge.rs | 98.0% | 300 / 306 | 31 / 34 |
| src/views/mod.rs | 98.1% | 559 / 570 | 61 / 76 |
| src/views/store_settings.rs | 98.3% | 1,199 / 1,220 | 56 / 74 |
| src/exchange_rate_config.rs | 98.3% | 635 / 646 | 32 / 38 |
| src/db.rs | 98.3% | 3,735 / 3,799 | 37 / 48 |
| src/http/test_support.rs | 98.4% | 120 / 122 | 3 / 4 |
| src/views/admin.rs | 98.4% | 2,202 / 2,238 | 244 / 280 |
| src/http/connect.rs | 98.4% | 1,268 / 1,288 | 38 / 52 |
| src/views/checkout.rs | 98.5% | 717 / 728 | 114 / 136 |
| src/http/pay.rs | 98.5% | 1,745 / 1,771 | 21 / 32 |
| src/currencies.rs | 98.7% | 151 / 153 | 8 / 8 |
| src/views/wallets.rs | 98.7% | 1,232 / 1,248 | 109 / 138 |
| src/fx_provider_settings.rs | 98.9% | 264 / 267 | 22 / 28 |
| src/views/logs.rs | 98.9% | 367 / 371 | 55 / 66 |
| src/http/mod.rs | 99.1% | 736 / 743 | 28 / 32 |
| src/engine_view/history.rs | 99.1% | 218 / 220 | 32 / 34 |
| src/stores.rs | 99.1% | 112 / 113 | 26 / 30 |
| src/assets.rs | 99.2% | 117 / 118 | 8 / 12 |
| src/views/store_detail.rs | 99.4% | 308 / 310 | 18 / 20 |
| src/cli.rs | 99.4% | 164 / 165 | 2 / 2 |
| src/views/domains.rs | 99.5% | 400 / 402 | 40 / 46 |
| src/views/store_site.rs | 99.5% | 438 / 440 | 59 / 82 |
| src/views/home.rs | 99.6% | 240 / 241 | 14 / 18 |
| src/engine_view/machine.rs | 99.7% | 624 / 626 | 75 / 76 |
| src/views/account.rs | 99.8% | 459 / 460 | 17 / 22 |
| src/admin_nodes.rs | 99.8% | 586 / 587 | 75 / 88 |
| src/views/status.rs | 99.9% | 687 / 688 | 60 / 66 |
| src/abuse/mod.rs | 100.0% | 68 / 68 | 4 / 4 |
| src/abuse/stats.rs | 100.0% | 51 / 51 | 3 / 4 |
| src/http/fx.rs | 100.0% | 101 / 101 | 6 / 8 |
| src/templates.rs | 100.0% | 90 / 90 | 20 / 20 |
| src/views/auth.rs | 100.0% | 189 / 189 | 11 / 12 |
| src/views/challenge.rs | 100.0% | 54 / 54 | 2 / 2 |
| src/views/connect.rs | 100.0% | 77 / 77 | 3 / 4 |
| src/views/create_order.rs | 100.0% | 125 / 125 | 6 / 8 |
| src/views/pos.rs | 100.0% | 49 / 49 | 2 / 2 |
| src/views/settings.rs | 100.0% | 286 / 286 | 8 / 8 |
| src/views/shorten.rs | 100.0% | 38 / 38 | – |
| src/webhooks/body.rs | 100.0% | 157 / 157 | 4 / 4 |
| src/engine_view/mod.rs | not instrumented | ||
| src/http/query_page/columns.rs | not instrumented | ||
| src/lib.rs | not instrumented | ||
| src/views/logo_art.rs | not instrumented | ||
engine 56 files87.9%14,806 / 16,84085.6%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/bin/round_sweep.rs tool binary | 0.0% | 0 / 342 | 0 / 10 |
| src/bin/stress_common/mod.rs tool binary | 0.0% | 0 / 37 | 0 / 2 |
| src/bin/stress_fixture.rs tool binary | 0.0% | 0 / 522 | 0 / 44 |
| src/main.rs | 0.0% | 0 / 82 | 0 / 14 |
| src/key_custody/mod.rs | 13.0% | 3 / 23 | – |
| src/http/logs.rs | 67.5% | 56 / 83 | 2 / 4 |
| src/key_custody/snp_slot.rs | 71.0% | 93 / 131 | 6 / 12 |
| src/threads.rs | 77.8% | 77 / 99 | 15 / 24 |
| src/run.rs | 81.2% | 181 / 223 | 4 / 8 |
| src/pow/hasher.rs | 83.8% | 119 / 142 | 12 / 20 |
| src/proof/anchor.rs | 84.6% | 253 / 299 | 33 / 46 |
| src/work/reservations.rs | 84.6% | 33 / 39 | 4 / 4 |
| src/daemon.rs | 85.9% | 73 / 85 | – |
| src/http/admin.rs | 86.4% | 876 / 1,014 | 77 / 98 |
| src/daemon_rpc.rs | 88.3% | 815 / 923 | 108 / 130 |
| src/work/observe.rs | 89.8% | 53 / 59 | 0 / 2 |
| src/proof/mod.rs | 90.5% | 697 / 770 | 105 / 124 |
| src/http/query.rs | 90.7% | 107 / 118 | 2 / 4 |
| src/settings.rs | 90.7% | 39 / 43 | 23 / 24 |
| src/engine_settings.rs | 90.7% | 449 / 495 | 18 / 23 |
| src/http/mod.rs | 91.4% | 402 / 440 | 19 / 22 |
| src/daemon_fallback.rs | 91.4% | 363 / 397 | 11 / 16 |
| src/http/status_page.rs | 91.4% | 267 / 292 | 23 / 26 |
| src/store/proof.rs | 91.5% | 301 / 329 | 13 / 14 |
| src/http/order_events.rs | 91.8% | 78 / 85 | 6 / 8 |
| src/work/tuning.rs | 91.8% | 90 / 98 | 52 / 54 |
| src/http/activity.rs | 92.7% | 102 / 110 | 5 / 10 |
| src/http/instance_admin.rs | 93.2% | 395 / 424 | 48 / 54 |
| src/activity.rs | 93.2% | 109 / 117 | 20 / 20 |
| src/loops.rs | 93.7% | 371 / 396 | 34 / 44 |
| src/node_events.rs | 94.2% | 161 / 171 | 18 / 20 |
| src/store/order_events.rs | 95.6% | 109 / 114 | 4 / 4 |
| src/store/conflicts.rs | 95.7% | 110 / 115 | 24 / 24 |
| src/work/chain.rs | 96.0% | 436 / 454 | 87 / 96 |
| src/work/settlement.rs | 96.1% | 198 / 206 | 48 / 48 |
| src/scanner.rs | 96.4% | 877 / 910 | 111 / 114 |
| src/store/mod.rs | 96.7% | 1,744 / 1,803 | 116 / 126 |
| src/work/upkeep.rs | 96.8% | 152 / 157 | 32 / 32 |
| src/pow/mod.rs | 96.9% | 186 / 192 | 34 / 36 |
| src/work/blocks.rs | 97.1% | 1,354 / 1,395 | 204 / 216 |
| src/work/mod.rs | 97.7% | 293 / 300 | 10 / 10 |
| src/http/orders.rs | 98.2% | 107 / 109 | 19 / 20 |
| src/store/db.rs | 98.2% | 163 / 166 | 14 / 14 |
| src/pow/test_chain.rs | 98.3% | 177 / 180 | 2 / 2 |
| src/scaling.rs | 98.8% | 252 / 255 | 29 / 32 |
| src/zmtp.rs | 99.1% | 222 / 224 | 47 / 50 |
| src/link.rs | 99.2% | 260 / 262 | 11 / 14 |
| src/work/mempool.rs | 99.3% | 541 / 545 | 64 / 64 |
| src/store/work.rs | 99.6% | 775 / 778 | 42 / 42 |
| src/cli.rs | 100.0% | 24 / 24 | 2 / 2 |
| src/http/rate_limit.rs | 100.0% | 54 / 54 | 6 / 6 |
| src/scanner_status.rs | 100.0% | 46 / 46 | – |
| src/status.rs | 100.0% | 39 / 39 | 15 / 16 |
| src/store/dispatch.rs | 100.0% | 7 / 7 | – |
| src/work/retry.rs | 100.0% | 21 / 21 | 2 / 2 |
| src/work/scheduler.rs | 100.0% | 96 / 96 | 18 / 18 |
| src/auth.rs | not instrumented | ||
| src/lib.rs | not instrumented | ||
| src/network.rs | not instrumented | ||
| src/store/query_columns.rs | not instrumented | ||
shared 25 files94.3%4,794 / 5,08481.6%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/shutdown.rs | 0.0% | 0 / 18 | 0 / 2 |
| src/ids.rs | 87.8% | 43 / 49 | – |
| src/sqlite_query.rs | 89.2% | 257 / 288 | 27 / 32 |
| src/dns.rs | 89.9% | 382 / 425 | 73 / 90 |
| src/monero_tx.rs | 90.1% | 91 / 101 | 8 / 16 |
| src/resources.rs | 90.5% | 218 / 241 | 13 / 18 |
| src/supervise.rs | 92.0% | 196 / 213 | 7 / 12 |
| src/haveno.rs | 94.3% | 910 / 965 | 48 / 60 |
| src/exchange_rate.rs | 94.4% | 654 / 693 | 39 / 48 |
| src/coinmarketcap.rs | 95.2% | 319 / 335 | 17 / 18 |
| src/xmr_amount.rs | 95.7% | 111 / 116 | 15 / 16 |
| src/migrations.rs | 96.2% | 127 / 132 | 13 / 14 |
| src/network.rs | 96.6% | 28 / 29 | – |
| src/unreachable.rs | 96.6% | 28 / 29 | – |
| src/rate_limit.rs | 96.9% | 124 / 128 | 11 / 12 |
| src/sqlite.rs | 97.0% | 224 / 231 | 4 / 4 |
| src/log.rs | 97.3% | 73 / 75 | 3 / 4 |
| src/auth.rs | 97.4% | 114 / 117 | 3 / 4 |
| src/http_cache.rs | 98.8% | 331 / 335 | 7 / 8 |
| src/activity.rs | 100.0% | 96 / 96 | – |
| src/order_status.rs | 100.0% | 27 / 27 | – |
| src/password.rs | 100.0% | 96 / 96 | 2 / 2 |
| src/scaling.rs | 100.0% | 46 / 46 | 4 / 4 |
| src/time.rs | 100.0% | 17 / 17 | – |
| src/webhook_sign.rs | 100.0% | 282 / 282 | 44 / 50 |
| src/announcements.rs | not instrumented | ||
| src/lib.rs | not instrumented | ||
| src/proof.rs | not instrumented | ||
ui 20 files20.7%719 / 3,47226.9%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/book.rs | 0.0% | 0 / 295 | 0 / 22 |
| src/components/mod.rs | 0.0% | 0 / 91 | – |
| src/solid.rs | 0.0% | 0 / 603 | 0 / 126 |
| src/components/settings.rs | 7.7% | 15 / 194 | – |
| src/components/actions.rs | 9.0% | 9 / 100 | – |
| src/components/data.rs | 9.3% | 9 / 97 | – |
| src/components/steps.rs | 9.4% | 18 / 191 | 2 / 4 |
| src/components/items.rs | 10.6% | 9 / 85 | – |
| src/components/tabs.rs | 11.5% | 6 / 52 | – |
| src/components/forms.rs | 13.8% | 41 / 297 | 2 / 2 |
| src/components/chrome.rs | 15.4% | 24 / 156 | – |
| src/components/dialog.rs | 15.6% | 12 / 77 | – |
| src/components/sortable.rs | 16.7% | 9 / 54 | – |
| src/components/content.rs | 19.2% | 92 / 479 | – |
| src/components/copy.rs | 26.6% | 17 / 64 | – |
| src/components/select.rs | 44.6% | 86 / 193 | 20 / 20 |
| src/ir.rs | 66.7% | 40 / 60 | 2 / 4 |
| src/json.rs | 77.3% | 51 / 66 | 2 / 2 |
| src/lib.rs | 78.2% | 86 / 110 | 3 / 4 |
| src/render.rs | 93.8% | 195 / 208 | 27 / 32 |
| src/assets.rs | not instrumented | ||
telemetry 9 files90.3%2,082 / 2,30680.6%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/store/api.rs | 75.0% | 21 / 28 | 4 / 4 |
| src/lib.rs | 86.5% | 283 / 327 | 37 / 50 |
| src/store/mod.rs | 87.1% | 425 / 488 | 43 / 60 |
| src/query.rs | 88.6% | 473 / 534 | 82 / 96 |
| src/otlp.rs | 89.4% | 245 / 274 | 27 / 36 |
| src/json.rs | 90.6% | 173 / 191 | 23 / 30 |
| src/trace.rs | 98.2% | 54 / 55 | 16 / 20 |
| src/http.rs | 99.5% | 209 / 210 | 13 / 14 |
| src/redact.rs | 100.0% | 199 / 199 | 55 / 62 |
live-settings 8 files89.4%1,777 / 1,98781.9%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/section.rs | 73.6% | 39 / 53 | – |
| src/setting.rs | 84.5% | 326 / 386 | 49 / 70 |
| src/store.rs | 87.5% | 21 / 24 | – |
| src/options.rs | 88.0% | 433 / 492 | 57 / 68 |
| src/paths.rs | 92.1% | 70 / 76 | 11 / 12 |
| src/registry.rs | 92.3% | 515 / 558 | 77 / 86 |
| src/cli.rs | 92.3% | 180 / 195 | 13 / 16 |
| src/value.rs | 95.1% | 193 / 203 | 19 / 24 |
| src/lib.rs | not instrumented | ||
key-custody 8 files91.4%1,559 / 1,70682.9%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/property_support.rs | 78.6% | 33 / 42 | 3 / 4 |
| src/custody.rs | 86.7% | 189 / 218 | 10 / 12 |
| src/snp.rs | 87.0% | 395 / 454 | 26 / 36 |
| src/test_log.rs | 89.2% | 33 / 37 | 1 / 2 |
| src/plain.rs | 93.3% | 168 / 180 | 25 / 28 |
| src/router.rs | 93.8% | 167 / 178 | 11 / 14 |
| src/transport.rs | 96.0% | 522 / 544 | 29 / 32 |
| src/outputs.rs | 98.1% | 52 / 53 | 11 / 12 |
| src/lib.rs | not instrumented | ||
| src/plain_properties.rs | not instrumented | ||
| src/router_properties.rs | not instrumented | ||
| src/wasm.rs | not instrumented | ||
snp-attest 7 files67.8%908 / 1,34047.8%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/bin/verify-snp-attestation.rs tool binary | 0.0% | 0 / 149 | – |
| src/kds.rs | 60.0% | 81 / 135 | 0 / 12 |
| src/verify.rs | 68.4% | 322 / 471 | 26 / 50 |
| src/guest.rs | 72.0% | 195 / 271 | 7 / 14 |
| src/report.rs | 98.1% | 205 / 209 | 10 / 14 |
| src/id_block.rs | 100.0% | 93 / 93 | – |
| src/pinned_ark.rs | 100.0% | 12 / 12 | – |
| src/lib.rs | not instrumented | ||
ui-macros 1 file89.2%1,127 / 1,26480.4%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/lib.rs | 89.2% | 1,127 / 1,264 | 225 / 280 |
key-custody-cli 2 files55.9%128 / 22966.7%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/main.rs | 0.0% | 0 / 82 | – |
| src/lib.rs | 87.1% | 128 / 147 | 4 / 6 |
short-id 1 file100.0%106 / 106100.0%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/lib.rs | 100.0% | 106 / 106 | 8 / 8 |
wallet-setup 1 file87.3%89 / 10237.5%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/lib.rs | 87.3% | 89 / 102 | 3 / 8 |
| src/wasm.rs | not instrumented | ||
static-assets 1 file98.7%75 / 76100.0%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/lib.rs | 98.7% | 75 / 76 | 4 / 4 |
cli-wallet 13 files56.4%3,185 / 5,64843.8%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/bin/refresh_decoy_pool.rs tool binary | 0.0% | 0 / 40 | – |
| src/bin/cli/commands.rs | 17.4% | 232 / 1,332 | 15 / 136 |
| src/wallet.rs | 27.0% | 224 / 830 | 13 / 78 |
| src/bin/cli/editor.rs | 47.6% | 305 / 641 | 30 / 76 |
| src/lib.rs | 73.5% | 581 / 790 | 16 / 36 |
| src/bin/cli/main.rs | 75.1% | 127 / 169 | 24 / 30 |
| src/file.rs | 88.3% | 218 / 247 | 14 / 20 |
| src/faucet.rs | 91.1% | 246 / 270 | 9 / 16 |
| src/store.rs | 93.0% | 535 / 575 | 12 / 14 |
| src/amount.rs | 93.9% | 92 / 98 | 16 / 16 |
| src/meta.rs | 94.0% | 109 / 116 | 5 / 8 |
| src/bin/cli/args.rs | 94.3% | 395 / 419 | 61 / 76 |
| src/block_range.rs | 100.0% | 121 / 121 | 12 / 12 |
engine-test-support 2 files75.6%867 / 1,14739.6%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/bin/fake-monerod.rs tool binary | 0.0% | 0 / 181 | 0 / 22 |
| src/lib.rs | 89.8% | 867 / 966 | 19 / 26 |
mock-woocommerce 2 files92.2%942 / 1,02272.9%
| File | Lines | Covered | Branches |
|---|---|---|---|
| src/main.rs | 0.0% | 0 / 28 | – |
| src/lib.rs | 94.8% | 942 / 994 | 35 / 48 |
Measured with cargo-llvm-cov 0.9.1 and istanbul-lib-instrument 6.0.3. Files that can’t be instrumented are listed under their crate rather than counted as 0%.