MCPcopy Create free account
hub / github.com/apache/paimon-rust / start_mock_server

Function start_mock_server

crates/paimon/tests/mock_server.rs:694–756  ·  view source on GitHub ↗

Start a mock REST server with configuration. # Arguments `warehouse` - Warehouse path. `data_path` - Data path for storage. `config` - Configuration response containing defaults like prefix. `initial_dbs` - Initial databases to create. # Returns A RESTServer with address and control.

(
    warehouse: String,
    data_path: String,
    config: ConfigResponse,
    initial_dbs: Vec<String>,
)

Source from the content-addressed store, hash-verified

692/// # Returns
693/// A RESTServer with address and control.
694pub async fn start_mock_server(
695 warehouse: String,
696 data_path: String,
697 config: ConfigResponse,
698 initial_dbs: Vec<String>,
699) -> RESTServer {
700 let mut server = RESTServer::new(warehouse, data_path, config, initial_dbs);
701
702 // Build routes based on prefix from config
703 let prefix = server.resource_paths().base_path();
704 let state = Arc::new(server.clone());
705 let app = Router::new()
706 // Config endpoint (for RESTApi initialization)
707 .route("/v1/config", get(RESTServer::get_config))
708 // Database routes
709 .route(
710 &format!("{prefix}/databases"),
711 get(RESTServer::list_databases).post(RESTServer::create_database),
712 )
713 .route(
714 &format!("{prefix}/databases/:name"),
715 get(RESTServer::get_database)
716 .post(RESTServer::alter_database)
717 .delete(RESTServer::drop_database),
718 )
719 .route(
720 &format!("{prefix}/databases/:db/tables"),
721 get(RESTServer::list_tables).post(RESTServer::create_table),
722 )
723 .route(
724 &format!("{prefix}/databases/:db/tables/:table"),
725 get(RESTServer::get_table).delete(RESTServer::drop_table),
726 )
727 .route(
728 &format!("{prefix}/tables/rename"),
729 post(RESTServer::rename_table),
730 )
731 // ECS metadata endpoints (for token loader testing)
732 .route(
733 "/ram/security-credentials/",
734 get(RESTServer::list_ecs_roles),
735 )
736 .route(
737 "/ram/security-credentials/:role",
738 get(RESTServer::get_ecs_metadata),
739 )
740 .layer(Extension(state));
741
742 let listener = tokio::net::TcpListener::bind(("127.0.0.1", 0))
743 .await
744 .expect("bind failed");
745 let addr = listener.local_addr().unwrap();
746
747 let server_handle = tokio::spawn(async move {
748 if let Err(e) = serve(listener, app.into_make_service()).await {
749 eprintln!("mock server error: {e}");
750 }
751 });

Calls 4

base_pathMethod · 0.80
resource_pathsMethod · 0.80
postMethod · 0.80
deleteMethod · 0.45

Tested by

no test coverage detected