clusterflux-public/scripts/sdk-spawn-runtime-smoke.js
Clusterflux release dry run 6f52bb46cd Public dry run dryrun-a43e907efd9d
Source commit: a43e907efd9d1561c23fe73499478e881f868355

Public tree identity: sha256:453dea30195485dd8939f575a69b39f4bb7acd84c4df23f8aa29b55d044f2673
2026-07-15 01:54:51 +02:00

49 lines
1.6 KiB
JavaScript
Executable file

#!/usr/bin/env node
const assert = require("assert");
const cp = require("child_process");
const fs = require("fs");
const path = require("path");
const repo = path.resolve(__dirname, "..");
const sdk = fs.readFileSync(path.join(repo, "crates/clusterflux-sdk/src/lib.rs"), "utf8");
const productRuntime = fs.readFileSync(
path.join(repo, "crates/clusterflux-sdk/src/sdk_runtime.rs"),
"utf8"
);
assert.match(sdk, /pub struct RuntimeSpawnEvent/);
assert.match(sdk, /pub debugger_visible: bool/);
assert.match(sdk, /fn register_runtime_thread/);
assert.match(sdk, /register_runtime_thread\(id, self\.name, self\.env\)/);
assert.match(sdk, /pub fn debugger_visible\(&self\) -> bool/);
assert.match(sdk, /ProductRuntimeConfig::from_env\(\)/);
assert.match(sdk, /start_remote_task\(\s*config,\s*task_id/);
assert.match(sdk, /start_guest_host_task/);
assert.match(sdk, /join_remote_task\(remote\)/);
assert.match(productRuntime, /let spec = TaskSpec \{/);
assert.match(productRuntime, /CoordinatorNodeWasm/);
assert.match(productRuntime, /task_start_v1/);
assert.match(productRuntime, /task_join_v1/);
assert.match(productRuntime, /command_run_v1/);
assert.match(productRuntime, /"task_spec": spec/);
assert.match(productRuntime, /remote_completion_observed/);
assert.match(productRuntime, /TaskJoinState::Pending/);
assert.doesNotMatch(
productRuntime,
/entry\s*\(/,
"product runtime must not invoke the submitted local Rust closure"
);
cp.execFileSync(
"cargo",
[
"test",
"-p",
"clusterflux-sdk",
"spawn_task_start_registers_debugger_visible_runtime_thread",
],
{ cwd: repo, stdio: "inherit" }
);
console.log("SDK spawn runtime smoke passed");