use mlmf::{SimpleDistributedManager, ShardingStrategy};
use std::net::{SocketAddr, IpAddr, Ipv4Addr};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("๐งช Testing MLMF Distributed Integration");
println!("=======================================");
println!("\n1๏ธโฃ Testing Distributed Manager Creation");
let node_addresses = vec![
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8084),
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8085),
];
let manager = SimpleDistributedManager::create_cluster_deployment(
"./models/test",
"test-model".to_string(),
node_addresses,
ShardingStrategy::LayerSharding { layers_per_shard: 3 },
).await?;
println!("โ
Distributed manager created successfully");
let status = manager.get_cluster_status().await;
println!("\n2๏ธโฃ Cluster Status Check");
println!("โ
Nodes: {}/{} healthy", status.healthy_nodes, status.total_nodes);
println!("โ
Models: {}", status.total_models);
println!("โ
Health: {:?}", status.cluster_health);
let models = manager.list_models().await;
println!("\n3๏ธโฃ Model Listing");
println!("โ
Available models: {:?}", models);
if let Some(model_info) = manager.get_model_info("test-model").await {
println!("\n4๏ธโฃ Model Information");
println!("โ
Model ID: {}", model_info.model_id);
println!("โ
Shards: {}", model_info.shards.len());
println!("โ
Status: {:?}", model_info.status);
}
println!("\n๐ All distributed integration tests passed!");
println!(" The distributed system is ready for production deployment.");
Ok(())
}