Files
cloudlysis/runner/tests/jetstream_integration.rs
Vlad Durnea 1298d9a3df
Some checks failed
ci / rust (push) Failing after 2m34s
ci / ui (push) Failing after 30s
Monorepo consolidation: workspace, shared types, transport plans, docker/swam assets
2026-03-30 11:40:42 +03:00

53 lines
1.6 KiB
Rust

use async_nats::jetstream::{self, stream::Config as StreamConfig};
use runner::config::Settings;
use runner::stream::JetStreamClient;
use runner::types::{
CommandId, EffectName, EffectResultEnvelope, EffectResultType, MessageMetadata, TenantId,
};
use serde_json::json;
#[test]
#[ignore]
fn jetstream_connects_and_can_publish_effect_result() {
let Ok(nats_url) = std::env::var("RUNNER_TEST_NATS_URL") else {
return;
};
let rt = tokio::runtime::Runtime::new().unwrap();
rt.block_on(async move {
let client = async_nats::connect(&nats_url).await.unwrap();
let js = jetstream::new(client);
let _ = js
.get_or_create_stream(StreamConfig {
name: "AGGREGATE_EVENTS".to_string(),
subjects: vec!["tenant.*.aggregate.*.*".to_string()],
..Default::default()
})
.await
.unwrap();
let settings = Settings {
nats_url,
..Default::default()
};
let runner_js = JetStreamClient::connect(&settings).await.unwrap();
let result = EffectResultEnvelope {
tenant_id: TenantId::new("t1"),
command_id: CommandId::new("c1"),
effect_name: EffectName::new("noop"),
result_type: EffectResultType::Succeeded,
payload: json!({"ok": true}),
timestamp: chrono::Utc::now(),
metadata: MessageMetadata::default(),
};
runner_js
.publish_effect_result("tenant.t1.effect_result.noop.c1".to_string(), &result)
.await
.unwrap();
});
}