Unverified Commit dc01313d authored by Chang Su's avatar Chang Su Committed by GitHub
Browse files

[router] Add rustfmt and set group imports by default (#11732)

parent 7a7f99be
use serde_json::{from_str, json, to_string}; use serde_json::{from_str, json, to_string};
use sglang_router_rs::protocols::common::GenerationRequest; use sglang_router_rs::protocols::{common::GenerationRequest, embedding::EmbeddingRequest};
use sglang_router_rs::protocols::embedding::EmbeddingRequest;
#[test] #[test]
fn test_embedding_request_serialization_string_input() { fn test_embedding_request_serialization_string_input() {
......
use std::collections::HashMap;
use serde_json::{from_str, to_string, Number, Value}; use serde_json::{from_str, to_string, Number, Value};
use sglang_router_rs::protocols::common::{GenerationRequest, StringOrArray, UsageInfo}; use sglang_router_rs::protocols::{
use sglang_router_rs::protocols::rerank::{ common::{GenerationRequest, StringOrArray, UsageInfo},
RerankRequest, RerankResponse, RerankResult, V1RerankReqInput, rerank::{RerankRequest, RerankResponse, RerankResult, V1RerankReqInput},
}; };
use std::collections::HashMap;
use validator::Validate; use validator::Validate;
#[test] #[test]
......
mod common; mod common;
use std::sync::Arc;
use common::mock_worker::{HealthStatus, MockWorker, MockWorkerConfig, WorkerType}; use common::mock_worker::{HealthStatus, MockWorker, MockWorkerConfig, WorkerType};
use futures_util::StreamExt; use futures_util::StreamExt;
use reqwest::Client; use reqwest::Client;
use serde_json::json; use serde_json::json;
use sglang_router_rs::config::{RouterConfig, RoutingMode}; use sglang_router_rs::{
use sglang_router_rs::core::WorkerManager; config::{RouterConfig, RoutingMode},
use sglang_router_rs::routers::{RouterFactory, RouterTrait}; core::WorkerManager,
use std::sync::Arc; routers::{RouterFactory, RouterTrait},
};
/// Test context that manages mock workers /// Test context that manages mock workers
struct TestContext { struct TestContext {
......
//! Comprehensive integration tests for OpenAI backend functionality //! Comprehensive integration tests for OpenAI backend functionality
use std::{
collections::HashMap,
sync::{
atomic::{AtomicUsize, Ordering},
Arc,
},
};
use axum::{ use axum::{
body::Body, body::Body,
extract::Request, extract::Request,
...@@ -26,13 +34,10 @@ use sglang_router_rs::{ ...@@ -26,13 +34,10 @@ use sglang_router_rs::{
}, },
routers::{openai::OpenAIRouter, RouterTrait}, routers::{openai::OpenAIRouter, RouterTrait},
}; };
use std::collections::HashMap; use tokio::{
use std::sync::{ net::TcpListener,
atomic::{AtomicUsize, Ordering}, time::{sleep, Duration},
Arc,
}; };
use tokio::net::TcpListener;
use tokio::time::{sleep, Duration};
use tower::ServiceExt; use tower::ServiceExt;
mod common; mod common;
...@@ -962,8 +967,7 @@ fn oracle_config_validation_accepts_wallet_alias() { ...@@ -962,8 +967,7 @@ fn oracle_config_validation_accepts_wallet_alias() {
/// Test that RouterManager delegates /v1/models to OpenAI router in single-router mode /// Test that RouterManager delegates /v1/models to OpenAI router in single-router mode
#[tokio::test] #[tokio::test]
async fn test_router_manager_delegates_models_to_openai_router() { async fn test_router_manager_delegates_models_to_openai_router() {
use sglang_router_rs::routers::router_manager::RouterManager; use sglang_router_rs::{routers::router_manager::RouterManager, server::ServerConfig};
use sglang_router_rs::server::ServerConfig;
// Start a mock OpenAI server // Start a mock OpenAI server
let mock_server = MockOpenAIServer::new().await; let mock_server = MockOpenAIServer::new().await;
......
#[cfg(test)] #[cfg(test)]
mod test_pd_routing { mod test_pd_routing {
use serde_json::json; use serde_json::json;
use sglang_router_rs::config::{ use sglang_router_rs::{
CircuitBreakerConfig, ConnectionMode, PolicyConfig, RetryConfig, RouterConfig, RoutingMode, config::{
CircuitBreakerConfig, ConnectionMode, PolicyConfig, RetryConfig, RouterConfig,
RoutingMode,
},
core::{BasicWorkerBuilder, Worker, WorkerType},
routers::{http::pd_types::PDSelectionPolicy, RouterFactory},
}; };
use sglang_router_rs::core::{BasicWorkerBuilder, Worker, WorkerType};
use sglang_router_rs::routers::http::pd_types::PDSelectionPolicy;
use sglang_router_rs::routers::RouterFactory;
#[derive(Debug)] #[derive(Debug)]
struct PDRequest { struct PDRequest {
...@@ -201,14 +203,18 @@ mod test_pd_routing { ...@@ -201,14 +203,18 @@ mod test_pd_routing {
}; };
let app_context = { let app_context = {
use sglang_router_rs::core::{LoadMonitor, WorkerRegistry};
use sglang_router_rs::data_connector::{
MemoryConversationItemStorage, MemoryConversationStorage, MemoryResponseStorage,
};
use sglang_router_rs::middleware::TokenBucket;
use sglang_router_rs::policies::PolicyRegistry;
use std::sync::{Arc, OnceLock}; use std::sync::{Arc, OnceLock};
use sglang_router_rs::{
core::{LoadMonitor, WorkerRegistry},
data_connector::{
MemoryConversationItemStorage, MemoryConversationStorage,
MemoryResponseStorage,
},
middleware::TokenBucket,
policies::PolicyRegistry,
};
let client = reqwest::Client::new(); let client = reqwest::Client::new();
// Initialize rate limiter // Initialize rate limiter
...@@ -421,6 +427,7 @@ mod test_pd_routing { ...@@ -421,6 +427,7 @@ mod test_pd_routing {
#[tokio::test] #[tokio::test]
async fn test_background_load_monitoring() { async fn test_background_load_monitoring() {
use std::collections::HashMap; use std::collections::HashMap;
use tokio::sync::watch; use tokio::sync::watch;
let (tx, rx) = watch::channel(HashMap::new()); let (tx, rx) = watch::channel(HashMap::new());
...@@ -466,6 +473,7 @@ mod test_pd_routing { ...@@ -466,6 +473,7 @@ mod test_pd_routing {
#[tokio::test] #[tokio::test]
async fn test_watch_channel_behavior() { async fn test_watch_channel_behavior() {
use std::collections::HashMap; use std::collections::HashMap;
use tokio::sync::watch; use tokio::sync::watch;
let (tx, rx1) = watch::channel(HashMap::new()); let (tx, rx1) = watch::channel(HashMap::new());
......
...@@ -4,13 +4,13 @@ ...@@ -4,13 +4,13 @@
//! implementation works correctly with real-world tokenizer files. //! implementation works correctly with real-world tokenizer files.
mod common; mod common;
use common::{ensure_tokenizer_cached, EXPECTED_HASHES, TEST_PROMPTS}; use std::sync::Arc;
use common::{ensure_tokenizer_cached, EXPECTED_HASHES, TEST_PROMPTS};
use sglang_router_rs::tokenizer::{ use sglang_router_rs::tokenizer::{
factory, huggingface::HuggingFaceTokenizer, sequence::Sequence, stop::*, stream::DecodeStream, factory, huggingface::HuggingFaceTokenizer, sequence::Sequence, stop::*, stream::DecodeStream,
traits::*, traits::*,
}; };
use std::sync::Arc;
const LONG_TEST_PROMPTS: [(&str, &str); 6] = [ const LONG_TEST_PROMPTS: [(&str, &str); 6] = [
("Tell me about the following text.", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."), ("Tell me about the following text.", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."),
...@@ -318,6 +318,7 @@ fn test_thread_safety() { ...@@ -318,6 +318,7 @@ fn test_thread_safety() {
#[test] #[test]
fn test_chat_template_discovery() { fn test_chat_template_discovery() {
use std::fs; use std::fs;
use tempfile::TempDir; use tempfile::TempDir;
// Create a temporary directory with test files // Create a temporary directory with test files
...@@ -366,6 +367,7 @@ fn test_chat_template_discovery() { ...@@ -366,6 +367,7 @@ fn test_chat_template_discovery() {
#[test] #[test]
fn test_load_chat_template_from_local_file() { fn test_load_chat_template_from_local_file() {
use std::fs; use std::fs;
use tempfile::TempDir; use tempfile::TempDir;
// Test 1: Load tokenizer with explicit chat template path // Test 1: Load tokenizer with explicit chat template path
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment