Files
runner_rust/tests/e2e_tests.rs
2025-09-09 17:54:09 +02:00

131 lines
4.1 KiB
Rust

use std::process::Command;
use std::time::Duration;
use tokio::time::timeout;
/// Test the SAL runner in script mode with a simple ping script
#[tokio::test]
async fn test_sal_runner_script_mode_ping() {
let output = timeout(
Duration::from_secs(10),
run_sal_runner_script_mode("test_sal_ping")
).await;
match output {
Ok(result) => {
assert!(result.is_ok(), "SAL runner should execute successfully");
let stdout = result.unwrap();
assert!(stdout.contains("pong"),
"Output should contain 'pong' response: {}", stdout);
}
Err(_) => panic!("Test timed out after 10 seconds"),
}
}
/// Test the OSIS runner in script mode with a simple ping script
#[tokio::test]
async fn test_osis_runner_script_mode_ping() {
let output = timeout(
Duration::from_secs(10),
run_osis_runner_script_mode("test_osis_ping")
).await;
match output {
Ok(result) => {
assert!(result.is_ok(), "OSIS runner should execute successfully");
let stdout = result.unwrap();
assert!(stdout.contains("pong"),
"Output should contain 'pong' response: {}", stdout);
}
Err(_) => panic!("Test timed out after 10 seconds"),
}
}
/// Helper function to run SAL runner in script mode
async fn run_sal_runner_script_mode(
runner_id: &str
) -> Result<String, Box<dyn std::error::Error + Send + Sync>> {
let output = Command::new("cargo")
.args(&[
"run", "--bin", "runner_sal", "--",
runner_id,
"-s", "ping"
])
.output()?;
if output.status.success() {
Ok(String::from_utf8_lossy(&output.stdout).to_string())
} else {
let stderr = String::from_utf8_lossy(&output.stderr);
Err(format!("Command failed: {}", stderr).into())
}
}
/// Helper function to run OSIS runner in script mode
async fn run_osis_runner_script_mode(
runner_id: &str
) -> Result<String, Box<dyn std::error::Error + Send + Sync>> {
let output = Command::new("cargo")
.args(&[
"run", "--bin", "runner_osis", "--",
runner_id,
"-s", "ping"
])
.output()?;
if output.status.success() {
Ok(String::from_utf8_lossy(&output.stdout).to_string())
} else {
let stderr = String::from_utf8_lossy(&output.stderr);
Err(format!("Command failed: {}", stderr).into())
}
}
/// Test basic compilation and help output
#[tokio::test]
async fn test_sal_runner_help() {
let output = Command::new("cargo")
.args(&["run", "--bin", "runner_sal", "--", "--help"])
.output()
.expect("Failed to execute command");
assert!(output.status.success(), "Help command should succeed");
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(stdout.contains("Usage") || stdout.contains("USAGE"),
"Help output should contain usage information");
}
/// Test basic compilation and help output for OSIS runner
#[tokio::test]
async fn test_osis_runner_help() {
let output = Command::new("cargo")
.args(&["run", "--bin", "runner_osis", "--", "--help"])
.output()
.expect("Failed to execute command");
assert!(output.status.success(), "Help command should succeed");
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(stdout.contains("Usage") || stdout.contains("USAGE"),
"Help output should contain usage information");
}
/// Test library functionality - job creation and basic operations
#[tokio::test]
async fn test_job_creation_and_serialization() {
use runner_rust::JobBuilder;
let job = JobBuilder::new()
.caller_id("test_caller")
.context_id("test_context")
.payload("ping")
.runner("default")
.executor("rhai")
.build()
.expect("Job creation should succeed");
assert_eq!(job.caller_id, "test_caller");
assert_eq!(job.context_id, "test_context");
assert_eq!(job.payload, "ping");
assert_eq!(job.runner, "default");
assert_eq!(job.executor, "rhai");
}