add tests and fix job impl
This commit is contained in:
130
tests/e2e_tests.rs
Normal file
130
tests/e2e_tests.rs
Normal file
@@ -0,0 +1,130 @@
|
||||
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");
|
||||
}
|
Reference in New Issue
Block a user