test fixes
This commit is contained in:
parent
446044c4e6
commit
deaababb1e
@ -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(())
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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,
|
||||
};
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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": [
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user