From 4046095b8b22051f0916be6bb7fa46ba8590157f Mon Sep 17 00:00:00 2001 From: hosted-fornet Date: Wed, 19 Jun 2024 11:42:33 -0700 Subject: [PATCH] tester: update to place setup processes where tester can access --- kinode/packages/tester/pkg/manifest.json | 7 +- kinode/packages/tester/tester/src/lib.rs | 87 +++++++++++++----------- 2 files changed, 52 insertions(+), 42 deletions(-) diff --git a/kinode/packages/tester/pkg/manifest.json b/kinode/packages/tester/pkg/manifest.json index f5f7d6ea..84872cbd 100644 --- a/kinode/packages/tester/pkg/manifest.json +++ b/kinode/packages/tester/pkg/manifest.json @@ -5,10 +5,15 @@ "on_exit": "Restart", "request_networking": true, "request_capabilities": [ + "eth:distro:sys", + "http_client:distro:sys", + "http_server:distro:sys", "kernel:distro:sys", "kv:distro:sys", - "http_server:distro:sys", "sqlite:distro:sys", + "state:distro:sys", + "terminal:distro:sys", + "timer:distro:sys", "vfs:distro:sys" ], "grant_capabilities": [ diff --git a/kinode/packages/tester/tester/src/lib.rs b/kinode/packages/tester/tester/src/lib.rs index 8e2d0e65..20f440e1 100644 --- a/kinode/packages/tester/tester/src/lib.rs +++ b/kinode/packages/tester/tester/src/lib.rs @@ -19,6 +19,9 @@ wit_bindgen::generate!({ additional_derives: [PartialEq, serde::Deserialize, serde::Serialize, process_macros::SerdeJsonInto], }); +const SETUP_PATH: &str = "/tester:sys/setup"; +const TESTS_PATH: &str = "/tester:sys/tests"; + fn make_vfs_address(our: &Address) -> anyhow::Result
{ Ok(Address { node: our.node.clone(), @@ -193,51 +196,53 @@ fn handle_message(our: &Address, node_names: &mut Vec) -> anyhow::Result call_init!(init); fn init(our: Address) { let mut node_names: Vec = Vec::new(); - match Request::new() - .target(make_vfs_address(&our).unwrap()) - .body( - serde_json::to_vec(&vfs::VfsRequest { - path: "/tester:sys/tests".into(), - action: vfs::VfsAction::CreateDrive, - }) - .unwrap(), - ) - .send_and_await_response(5) - { - Err(_) => { - fail!("tester"); - } - Ok(r) => { - if r.is_err() { + for path in [SETUP_PATH, TESTS_PATH] { + match Request::new() + .target(make_vfs_address(&our).unwrap()) + .body( + serde_json::to_vec(&vfs::VfsRequest { + path: path.into(), + action: vfs::VfsAction::CreateDrive, + }) + .unwrap(), + ) + .send_and_await_response(5) + { + Err(_) => { fail!("tester"); } + Ok(r) => { + if r.is_err() { + fail!("tester"); + } + } } - } - // orchestrate tests using external scripts - // -> must give drive cap to rpc - let sent = Request::new() - .target(("our", "kernel", "distro", "sys")) - .body( - serde_json::to_vec(&kt::KernelCommand::GrantCapabilities { - target: ProcessId::new(Some("http_server"), "distro", "sys"), - capabilities: vec![kt::Capability { - issuer: Address::new( - our.node.clone(), - ProcessId::new(Some("vfs"), "distro", "sys"), - ), - params: serde_json::json!({ - "kind": "write", - "drive": "/tester:sys/tests", - }) - .to_string(), - }], - }) - .unwrap(), - ) - .send(); - if sent.is_err() { - fail!("tester"); + // orchestrate tests using external scripts + // -> must give drive cap to rpc + let sent = Request::new() + .target(("our", "kernel", "distro", "sys")) + .body( + serde_json::to_vec(&kt::KernelCommand::GrantCapabilities { + target: ProcessId::new(Some("http_server"), "distro", "sys"), + capabilities: vec![kt::Capability { + issuer: Address::new( + our.node.clone(), + ProcessId::new(Some("vfs"), "distro", "sys"), + ), + params: serde_json::json!({ + "kind": "write", + "drive": path, + }) + .to_string(), + }], + }) + .unwrap(), + ) + .send(); + if sent.is_err() { + fail!("tester"); + } } loop {