76 lines
1.8 KiB
Rust
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
|
|
));
|
|
}
|