Skip to main content
Glama
debug.rs3.29 kB
use std::time::Duration; use dal::{ DalContext, Func, func::{ debug::{ DebugFuncJobState, DebugFuncJobStateRow, dispatch_debug_func, }, runner::FuncRunner, }, }; use dal_test::{ helpers::{ ChangeSetTestHelpers, create_component_for_default_schema_name_in_default_view, }, test, }; use veritech_client::ComponentKind; #[test] async fn test_execute_debug_func(ctx: &mut DalContext) { let code = r#"function debug({ component, debugInput }) { console.log('Debugging'); return { a: component.properties?.domain?.name, b: debugInput }; }"#; let debug_func = Func::new_debug("debug_test", code, "debug"); let component = create_component_for_default_schema_name_in_default_view(ctx, "swifty", "debug it") .await .expect("make debug component"); ChangeSetTestHelpers::commit_and_update_snapshot_to_visibility(ctx) .await .expect("commit and update snapshot"); let properties = component.view(ctx).await.expect("get component view"); let args = serde_json::json!({ "debug_input": "test", "component": { "kind": ComponentKind::Standard, "properties": properties.clone(), "id": component.id(), } }); let (_func_run_id, func_run) = FuncRunner::run_debug(ctx, debug_func, component.id(), args) .await .expect("run debug func"); let mut run_value = func_run .await .expect("get run value") .expect("is sucessful"); let value = run_value.take_value().expect("should have a value"); assert_eq!("debug it", value["output"]["a"]); assert_eq!("test", value["output"]["b"]); } #[test] async fn test_debug_func_job(ctx: &mut DalContext) { let code = r#"function debug({ component, debugInput }) { console.log('Debugging'); return { a: component.properties?.domain?.name, b: debugInput }; }"#; let debug_func = Func::new_debug("debug_test", code, "debug"); let component = create_component_for_default_schema_name_in_default_view(ctx, "swifty", "debug it") .await .expect("make debug component"); let debug_input = serde_json::json!({ "ged": "sparrowhawk", }); let job_state_id = dispatch_debug_func(ctx, component.id(), debug_func, Some(debug_input)) .await .expect("dispatch debug func"); ChangeSetTestHelpers::commit_and_update_snapshot_to_visibility(ctx) .await .expect("commit and update snapshot"); let mut job_state; let max = 10_000; let mut count = 0; loop { job_state = DebugFuncJobStateRow::get_by_id(ctx, job_state_id) .await .expect("get job state"); if job_state.state == DebugFuncJobState::Success { break; } count += 1; if count > max { panic!("timeout"); } tokio::time::sleep(Duration::from_millis(100)).await; } let expected_output = serde_json::json!({ "a": "debug it", "b": { "ged": "sparrowhawk" } }); assert_eq!( expected_output, job_state.result.expect("should have a value")["output"] ); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server