#![allow(dead_code)]
use crate::model_registry::ModelRegistry;
use std::sync::Arc;
pub fn create_integrated_registry() -> ModelRegistry {
let registry = ModelRegistry::new();
println!("Shimmy production registry initialized");
registry
}
pub fn setup_production_server() -> Arc<()> {
Arc::new(())
}
#[cfg(test)]
mod tests {
use super::*;
use std::sync::Arc;
#[test]
fn test_create_integrated_registry() {
let registry = create_integrated_registry();
let models = registry.list();
assert!(models.is_empty(), "New integrated registry should be empty");
assert_eq!(registry.list().len(), 0);
}
#[test]
fn test_create_integrated_registry_is_functional() {
let mut registry = create_integrated_registry();
use crate::model_registry::ModelEntry;
use std::path::PathBuf;
let test_entry = ModelEntry {
name: "test-integration-model".to_string(),
base_path: PathBuf::from("/test/path"),
lora_path: None,
template: Some("chatml".to_string()),
ctx_len: Some(4096),
n_threads: Some(4),
};
registry.register(test_entry);
let models = registry.list();
assert_eq!(models.len(), 1);
assert_eq!(models[0].name, "test-integration-model");
let retrieved = registry.get("test-integration-model");
assert!(retrieved.is_some());
assert_eq!(retrieved.unwrap().name, "test-integration-model");
}
#[test]
fn test_create_integrated_registry_multiple_calls() {
let registry1 = create_integrated_registry();
let registry2 = create_integrated_registry();
assert_eq!(registry1.list().len(), 0);
assert_eq!(registry2.list().len(), 0);
let mut registry1_mut = registry1;
let registry2_immut = registry2;
use crate::model_registry::ModelEntry;
use std::path::PathBuf;
let test_entry = ModelEntry {
name: "test-model".to_string(),
base_path: PathBuf::from("/test"),
lora_path: None,
template: None,
ctx_len: None,
n_threads: None,
};
registry1_mut.register(test_entry);
assert_eq!(registry1_mut.list().len(), 1);
assert_eq!(registry2_immut.list().len(), 0);
}
#[test]
fn test_create_integrated_registry_stdout_capture() {
let registry = create_integrated_registry();
assert!(registry.list().is_empty());
}
#[test]
fn test_setup_production_server() {
let server = setup_production_server();
drop(server); }
#[test]
fn test_setup_production_server_arc_properties() {
let server = setup_production_server();
let server_clone = Arc::clone(&server);
assert_eq!(Arc::strong_count(&server), 2);
drop(server_clone);
assert_eq!(Arc::strong_count(&server), 1);
}
#[test]
fn test_setup_production_server_multiple_calls() {
let server1 = setup_production_server();
let server2 = setup_production_server();
assert_eq!(Arc::strong_count(&server1), 1);
assert_eq!(Arc::strong_count(&server2), 1);
}
#[test]
fn test_integration_functions_work_together() {
let registry = create_integrated_registry();
let server = setup_production_server();
assert!(registry.list().is_empty());
let mut registry_mut = registry;
let _server_ref = Arc::clone(&server);
use crate::model_registry::ModelEntry;
use std::path::PathBuf;
let production_model = ModelEntry {
name: "production-model".to_string(),
base_path: PathBuf::from("/opt/models/production"),
lora_path: Some(PathBuf::from("/opt/models/lora")),
template: Some("llama3".to_string()),
ctx_len: Some(8192),
n_threads: Some(8),
};
registry_mut.register(production_model);
assert_eq!(registry_mut.list().len(), 1);
assert_eq!(registry_mut.list()[0].name, "production-model");
assert_eq!(registry_mut.list()[0].ctx_len, Some(8192));
}
#[test]
fn test_registry_advanced_functionality() {
let mut registry = create_integrated_registry();
registry.refresh_discovered_models();
registry.auto_register_discovered();
let all_models = registry.list_all_available();
assert!(all_models.is_empty() || !all_models.is_empty()); }
#[test]
fn test_registry_model_spec_conversion() {
let mut registry = create_integrated_registry();
use crate::model_registry::ModelEntry;
use std::path::PathBuf;
let test_model = ModelEntry {
name: "spec-test-model".to_string(),
base_path: PathBuf::from("/models/spec-test"),
lora_path: None,
template: Some("chatml".to_string()),
ctx_len: Some(2048),
n_threads: Some(2),
};
registry.register(test_model);
let spec = registry.to_spec("spec-test-model");
assert!(spec.is_some());
let spec = spec.unwrap();
assert_eq!(spec.name, "spec-test-model");
assert_eq!(spec.ctx_len, 2048);
assert_eq!(spec.template, Some("chatml".to_string()));
let missing_spec = registry.to_spec("non-existent-model");
assert!(missing_spec.is_none());
}
}