Implement AXIS parity UI and execution baseline
This commit is contained in:
33
wasm-core/tests/sim_scheduler_test.c
Normal file
33
wasm-core/tests/sim_scheduler_test.c
Normal file
@@ -0,0 +1,33 @@
|
||||
#include "sim_scheduler.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(void) {
|
||||
sim_scheduler fast = {0};
|
||||
sim_scheduler stepped = {0};
|
||||
sim_scheduler restored = {0};
|
||||
uint32_t phases[SIM_SCHEDULER_PHASE_COUNT] = {0, 1, 2, 3, 4, 5, 6, 7};
|
||||
char canonical[SIM_SCHEDULER_CANONICAL_CAPACITY] = {0};
|
||||
uint64_t fast_hash;
|
||||
|
||||
assert(sim_scheduler_init(&fast, 100) == SIM_SCHEDULER_OK);
|
||||
assert(sim_scheduler_init(&stepped, 100) == SIM_SCHEDULER_OK);
|
||||
assert(sim_scheduler_step(&fast, 10) == SIM_SCHEDULER_OK);
|
||||
for (int index = 0; index < 10; ++index) assert(sim_scheduler_step(&stepped, 1) == SIM_SCHEDULER_OK);
|
||||
assert(sim_scheduler_tick(&fast) == 10 && sim_scheduler_tick(&stepped) == 10);
|
||||
fast_hash = sim_scheduler_state_hash(&fast);
|
||||
assert(fast_hash == sim_scheduler_state_hash(&stepped));
|
||||
assert(sim_scheduler_step(&fast, 101) == SIM_SCHEDULER_ERR_BUDGET);
|
||||
assert(sim_scheduler_tick(&fast) == 10);
|
||||
assert(sim_scheduler_restore(&restored, fast.tick, fast.budget, fast.last_cycles, phases, SIM_SCHEDULER_PHASE_COUNT) == SIM_SCHEDULER_OK);
|
||||
assert(sim_scheduler_state_hash(&restored) == fast_hash);
|
||||
assert(sim_scheduler_canonical(&fast, canonical, sizeof(canonical)) > 1);
|
||||
assert(strstr(canonical, "reconcile") != NULL && strstr(canonical, "publish") != NULL);
|
||||
assert(sim_scheduler_init(&restored, 0) == SIM_SCHEDULER_ERR_RANGE);
|
||||
assert(sim_scheduler_restore(&restored, 0, 100, 0, phases, 2) == SIM_SCHEDULER_ERR_ARGUMENT);
|
||||
printf("{\"schema\":\"sim-scheduler-samples.v1\",\"tick\":%u,\"budget\":%u,\"state_hash\":%llu,\"canonical\":%s}\n",
|
||||
fast.tick, fast.budget, (unsigned long long)fast_hash, canonical);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user