Files
rustytorch/crates/training/rtx-distributed/src/distributed_context_tests.rs
T
2026-03-04 00:08:42 +00:00

76 lines
1.8 KiB
Rust

//! Tests for DistributedContext
use super::*;
use crate::backend::Backend;
use crate::distributed_context::DistributedContext;
#[test]
fn test_uninitialized_context() {
let ctx = DistributedContext::uninitialized();
assert!(!ctx.is_initialized());
assert_eq!(ctx.rank(), 0);
assert_eq!(ctx.world_size(), 1);
assert_eq!(ctx.local_rank(), 0);
assert_eq!(ctx.local_world_size(), 1);
assert!(ctx.is_master());
}
#[test]
fn test_default_context() {
let ctx = DistributedContext::default();
assert!(!ctx.is_initialized());
assert!(ctx.is_master());
}
#[test]
fn test_context_rank_queries() {
let ctx = DistributedContext::uninitialized();
assert!(ctx.is_rank(0));
assert!(!ctx.is_rank(1));
assert!(ctx.is_master());
}
#[test]
fn test_context_info_string() {
let ctx = DistributedContext::uninitialized();
let info = ctx.info_string();
assert!(info.contains("Not initialized"));
assert!(info.contains("single GPU"));
}
#[tokio::test]
async fn test_barrier_uninitialized() {
let ctx = DistributedContext::uninitialized();
// Should not fail on uninitialized context
let result = ctx.barrier().await;
assert!(result.is_ok());
}
#[tokio::test]
async fn test_broadcast_uninitialized() {
let ctx = DistributedContext::uninitialized();
let mut data = 42u32;
// Should not fail on uninitialized context
let result = ctx.broadcast(&mut data, 0).await;
assert!(result.is_ok());
assert_eq!(data, 42); // Data should remain unchanged
}
#[test]
fn test_backend_access() {
let ctx = DistributedContext::uninitialized();
let backend = ctx.backend();
// Should have some backend set
assert!(matches!(
backend,
Backend::Nccl | Backend::Rccl | Backend::Mpi | Backend::Cpu
));
}