test fixes
All checks were successful
Intrepid/Prometeu/Runtime/pipeline/head This commit looks good
Intrepid/Prometeu/Runtime/pipeline/pr-master This commit looks good

This commit is contained in:
bQUARKz 2026-05-15 05:07:10 +01:00
parent 446044c4e6
commit deaababb1e
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8
8 changed files with 45 additions and 49 deletions

View File

@ -509,7 +509,7 @@ impl NativeInterface for VmRuntimeHost<'_> {
ret.push_int(0);
return Ok(());
}
let stat = self.memcard.slot_stat(&self.fs, self.current_app_id, slot);
let stat = self.memcard.slot_stat(self.fs, self.current_app_id, slot);
let status = if stat.state == MemcardSlotState::Corrupt {
MemcardStatus::Corrupt
} else {
@ -533,7 +533,7 @@ impl NativeInterface for VmRuntimeHost<'_> {
return Ok(());
}
let read =
self.memcard.slot_read(&self.fs, self.current_app_id, slot, offset, max_bytes);
self.memcard.slot_read(self.fs, self.current_app_id, slot, offset, max_bytes);
ret.push_int(read.status as i64);
ret.push_string(hex_encode(&read.bytes));
ret.push_int(read.bytes_read as i64);
@ -550,7 +550,7 @@ impl NativeInterface for VmRuntimeHost<'_> {
}
let payload = hex_decode(&payload_hex)?;
let app_id = self.current_app_id;
let write = self.memcard.slot_write(&self.fs, app_id, slot, offset, &payload);
let write = self.memcard.slot_write(self.fs, app_id, slot, offset, &payload);
ret.push_int(write.status as i64);
ret.push_int(write.bytes_written as i64);
Ok(())

View File

@ -190,11 +190,6 @@ mod fs_memcard;
fn initialize_vm_applies_cartridge_capabilities_before_loader_resolution() {
let mut runtime = VirtualMachineRuntime::new(None);
let mut log_service = LogService::new(4096);
let mut fs = VirtualFS::new();
let mut fs_state = FsState::Unmounted;
let mut memcard = MemcardService::new();
let mut open_files: HashMap<u32, String> = HashMap::new();
let mut next_handle = 1;
let mut vm = VirtualMachine::default();
let code = assemble("PUSH_I32 0\nHOSTCALL 0\nHALT").expect("assemble");
let program = serialized_single_function_module(
@ -221,11 +216,6 @@ fn initialize_vm_applies_cartridge_capabilities_before_loader_resolution() {
fn initialize_vm_succeeds_when_cartridge_capabilities_cover_hostcalls() {
let mut runtime = VirtualMachineRuntime::new(None);
let mut log_service = LogService::new(4096);
let mut fs = VirtualFS::new();
let mut fs_state = FsState::Unmounted;
let mut memcard = MemcardService::new();
let mut open_files: HashMap<u32, String> = HashMap::new();
let mut next_handle = 1;
let mut vm = VirtualMachine::default();
let code = assemble("PUSH_I32 0\nHOSTCALL 0\nHALT").expect("assemble");
let program = serialized_single_function_module(
@ -775,11 +765,6 @@ fn tick_draw_text_survives_no_scene_frame_path() {
fn initialize_vm_success_clears_previous_crash_report() {
let mut runtime = VirtualMachineRuntime::new(None);
let mut log_service = LogService::new(4096);
let mut fs = VirtualFS::new();
let mut fs_state = FsState::Unmounted;
let mut memcard = MemcardService::new();
let mut open_files: HashMap<u32, String> = HashMap::new();
let mut next_handle = 1;
runtime.last_crash_report = Some(CrashReport::VmPanic { message: "stale".into(), pc: Some(1) });
let mut vm = VirtualMachine::default();
@ -804,9 +789,9 @@ fn initialize_vm_success_clears_previous_crash_report() {
fn reset_clears_cartridge_scoped_runtime_state() {
let mut runtime = VirtualMachineRuntime::new(None);
let mut vm = VirtualMachine::default();
let mut fs_state = FsState::Mounted;
let fs_state = FsState::Mounted;
let mut open_files: HashMap<u32, String> = HashMap::new();
let mut next_handle = 9;
let next_handle = 9;
runtime.tick_index = 77;
runtime.logical_frame_index = 12;
@ -941,11 +926,7 @@ fn tick_already_materialized_string_path_records_zero_internal_allocations() {
fn initialize_vm_failure_clears_previous_identity_and_handles() {
let mut runtime = VirtualMachineRuntime::new(None);
let mut log_service = LogService::new(4096);
let mut fs = VirtualFS::new();
let mut fs_state = FsState::Unmounted;
let mut memcard = MemcardService::new();
let mut open_files: HashMap<u32, String> = HashMap::new();
let mut next_handle = 1;
let mut vm = VirtualMachine::default();
let good_program = serialized_single_function_module(
@ -964,7 +945,8 @@ fn initialize_vm_failure_clears_previous_identity_and_handles() {
.expect("runtime must initialize");
open_files.insert(5, "/save.dat".into());
next_handle = 6;
let next_handle = 6;
runtime.paused = true;
runtime.debug_step_request = true;
runtime.atomic_telemetry.cycles_used.store(123, Ordering::Relaxed);

View File

@ -232,11 +232,6 @@ fn tick_bank_info_returns_slot_summary_not_json() {
fn initialize_vm_rejects_removed_bank_slot_info_syscall_identity() {
let mut runtime = VirtualMachineRuntime::new(None);
let mut log_service = LogService::new(4096);
let mut fs = VirtualFS::new();
let mut fs_state = FsState::Unmounted;
let mut memcard = MemcardService::new();
let mut open_files: HashMap<u32, String> = HashMap::new();
let mut next_handle = 1;
let mut vm = VirtualMachine::default();
let code = assemble("PUSH_I32 0\nPUSH_I32 0\nHOSTCALL 0\nHALT").expect("assemble");
let program = serialized_single_function_module(

View File

@ -110,7 +110,7 @@ impl VirtualMachineRuntime {
log_service: &mut LogService,
fs: &mut VirtualFS,
fs_state: &mut FsState,
memcard: &mut MemcardService,
mem_card: &mut MemcardService,
open_files: &mut HashMap<u32, String>,
next_handle: &mut u32,
vm: &mut VirtualMachine,
@ -163,7 +163,7 @@ impl VirtualMachineRuntime {
log_service,
fs,
fs_state,
memcard,
memcard: mem_card,
open_files,
next_handle,
};

View File

@ -58,7 +58,11 @@ impl HostDebugger {
// Pre-load cartridge metadata so the Handshake message can contain
// valid information about the App being debugged.
if let Ok(cartridge) = CartridgeLoader::load(path) {
let _ = firmware.os.vm_runtime.initialize_vm(&mut firmware.vm, &cartridge);
let _ = firmware.os.vm_runtime.initialize_vm(
&mut firmware.os.log_service,
&mut firmware.vm,
&cartridge,
);
}
match TcpListener::bind(format!("127.0.0.1:{}", debug_port)) {
@ -201,7 +205,11 @@ impl HostDebugger {
DebugCommand::Step => {
// Execute exactly one instruction and keep paused.
firmware.os.vm_runtime.paused = true;
let _ = firmware.os.vm_runtime.debug_step_instruction(&mut firmware.vm, hardware);
let _ = firmware.os.vm_runtime.debug_step_instruction(
&mut firmware.os.log_service,
&mut firmware.vm,
hardware,
);
}
DebugCommand::StepFrame => {
// Execute until the end of the current logical frame.
@ -308,7 +316,7 @@ impl HostDebugger {
}
// 1. Process and send new log entries.
let new_events = firmware.os.vm_runtime.log_service.get_after(self.last_log_seq);
let new_events = firmware.os.log_service.get_after(self.last_log_seq);
for event in new_events {
self.last_log_seq = event.seq;

View File

@ -59,7 +59,7 @@ struct FrameCanvas<'a> {
pub(crate) fn capture_snapshot(stats: &HostStats, firmware: &Firmware) -> OverlaySnapshot {
let tel = firmware.os.vm_runtime.atomic_telemetry.snapshot();
let recent_logs = firmware.os.vm_runtime.log_service.get_recent(10);
let recent_logs = firmware.os.log_service.get_recent(10);
let violations_count =
recent_logs.iter().filter(|e| e.tag >= 0xCA01 && e.tag <= 0xCA07).count();

View File

@ -153,7 +153,7 @@ impl HostRunner {
let mut firmware = Firmware::new(cap_config);
if let Some(root) = &fs_root {
let backend = HostDirBackend::new(root);
firmware.os.vm_runtime.mount_fs(Box::new(backend));
firmware.os.mount_fs(Box::new(backend));
}
Self {
@ -333,13 +333,11 @@ impl ApplicationHandler for HostRunner {
// 2. Maintain filesystem connection if it was lost (e.g., directory removed).
if let Some(root) = &self.fs_root {
use prometeu_system::fs::FsState;
if matches!(
self.firmware.os.vm_runtime.fs_state,
FsState::Unmounted | FsState::Error(_)
) && std::path::Path::new(root).exists()
if matches!(self.firmware.os.fs_state, FsState::Unmounted | FsState::Error(_))
&& std::path::Path::new(root).exists()
{
let backend = HostDirBackend::new(root);
self.firmware.os.vm_runtime.mount_fs(Box::new(backend));
self.firmware.os.mount_fs(Box::new(backend));
}
}
@ -403,9 +401,9 @@ impl ApplicationHandler for HostRunner {
// Synchronize system logs to the host console.
let last_seq = self.log_sink.last_seq().unwrap_or(u64::MAX);
let new_events = if last_seq == u64::MAX {
self.firmware.os.vm_runtime.log_service.get_recent(4096)
self.firmware.os.log_service.get_recent(4096)
} else {
self.firmware.os.vm_runtime.log_service.get_after(last_seq)
self.firmware.os.log_service.get_after(last_seq)
};
self.log_sink.process_events(new_events);

View File

@ -1,20 +1,33 @@
{
"version": 1,
"domains": {
"system/runtime": {
"baseline_percent": 68,
"system/os": {
"baseline_percent": 78,
"paths": [
"crates/console/prometeu-system/src/virtual_machine_runtime.rs",
"crates/console/prometeu-system/src/virtual_machine_runtime/"
"crates/console/prometeu-system/src/os/",
"crates/console/prometeu-system/src/services/process",
"crates/console/prometeu-system/src/services/task"
]
},
"fs": {
"system/runtime": {
"baseline_percent": 70,
"paths": [
"crates/console/prometeu-system/src/services/vm_runtime"
]
},
"system/fs": {
"baseline_percent": 77,
"paths": [
"crates/console/prometeu-system/src/services/fs/",
"crates/console/prometeu-system/src/services/memcard.rs"
]
},
"system/programs": {
"baseline_percent": 55,
"paths": [
"crates/console/prometeu-system/src/programs/"
]
},
"asset/bank": {
"baseline_percent": 86,
"paths": [