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 {