skip to content
==> tests/report.c <==
1/* sched_tests.rs reports_round_trip, with the exact text. */
2#include "mesh/check.h"
3#include "mesh/sched_report.h"
4
5#include <stdlib.h>
6
7int main(void) {
8    msr_report r = {.t_us = 123456789, .cpus = 20, .big = 10, .little = 10, .ram_mb = 121000, .disk_free_mb = 500000, .heap_kb = 6000, .slots_free = 29};
9    msm_perf tick = {.hash = 0xabc, .exec = "wasm", .run = true, .task_us = {true, 12.5f}, .tasks_s = 50.0f, .cpu = 0.25f, .rss_mb = 64.0f};
10    msm_perf hello = {.hash = 1, .exec = "cuda", .share = {true, 0.48f}};
11    msr_add_prog(&r, "tick", &tick);
12    msr_add_prog(&r, "hello", &hello);
13    msr_add_fail(&r, "tick-big", 0xc3, false, "load tick-big: view heap: 1792 pages wanted, 1789 free");
14    msr_add_fail(&r, "tick-m", 7, true, "unsupported");
15    msr_add_rtt(&r, 1, 250.5f);
16    msr_add_rtt(&r, 3, 1900.0f);
17    msr_add_echo(&r, 1, 99, 12);
18    msr_add_echo(&r, 3, 1000, 7);
19    char *e = msr_encode(&r);
20    CHECK_S(e, "t 123456789\n"
21               "caps cpus 20 big 10 little 10 ram_mb 121000 disk_mb 500000 heap_kb 6000 slots_free 29\n"
22               "prog tick hash 0000000000000abc exec wasm run 1 task_us 12.50 tasks_s 50.00 cpu 0.250 share - rss_mb 64.0\n"
23               "prog hello hash 0000000000000001 exec cuda run 0 task_us - tasks_s 0.00 cpu 0.000 share 0.48 rss_mb 0.0\n"
24               "rtt 1 250.5\nrtt 3 1900.0\necho 1 99 12\necho 3 1000 7\n"
25               "fail tick-big 00000000000000c3 0 load tick-big: view heap: 1792 pages wanted, 1789 free\n"
26               "fail tick-m 0000000000000007 1 unsupported\n");
27    msr_report d;
28    char *err = NULL;
29    CHECK(msr_decode(e, &d, &err));
30    CHECK(msr_eq(&d, &r));
31    msr_free(&d);
32    free(e);
33    msr_free(&r);
34    CHECK(!msr_decode("prog x", &d, &err));
35    CHECK_S(err, "F_PERF: \"prog x\"");
36    free(err);
37    CHECK(msr_decode("fail p 0a 1", &d, &err) && d.nfails == 1 && strcmp(d.fails[0].why, "") == 0);
38    msr_free(&d);
39    return mesh_check_done();
40}