Skip to content

Commit c1724fc

Browse files
committed
bak
1 parent 5268ecc commit c1724fc

File tree

4 files changed

+95
-24
lines changed

4 files changed

+95
-24
lines changed

.github/workflows/spa-server-ci.yml

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ jobs:
1414
- uses: actions/checkout@v3
1515
with:
1616
submodules: true
17-
- run: rustup toolchain install stable
1817
- uses: Swatinem/rust-cache@v2
1918
- name: run integration test
2019
# --show-output

server/src/admin_server.rs

+42-17
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::acme::ACMEManager;
1+
use crate::acme::ACMEManager;
22
use crate::admin_server::request::{
33
DeleteDomainVersionOption, DomainWithOptVersionOption, DomainWithVersionOption,
44
GetDomainOption, GetDomainPositionOption, UpdateUploadingStatusOption, UploadFileOption,
@@ -44,19 +44,20 @@ impl AdminServer {
4444

4545
fn routes(&self) -> impl Filter<Extract = impl warp::Reply, Error = warp::Rejection> + Clone {
4646
self.auth().and(
47-
warp::get().and(
48-
self.get_domain_info()
49-
.or(self.get_domain_upload_path())
50-
.or(self.get_files_metadata())
51-
.or(self.get_acme_cert_info())
52-
)
53-
.or(warp::post().and(
54-
self.update_domain_version()
55-
.or(self.reload_server())
56-
.or(self.change_upload_status())
57-
.or(self.upload_file())
58-
.or(self.remove_domain_version())
59-
)),
47+
warp::get()
48+
.and(
49+
self.get_domain_info()
50+
.or(self.get_domain_upload_path())
51+
.or(self.get_files_metadata())
52+
.or(self.get_acme_cert_info()),
53+
)
54+
.or(warp::post().and(
55+
self.update_domain_version()
56+
.or(self.reload_server())
57+
.or(self.change_upload_status())
58+
.or(self.upload_file())
59+
.or(self.remove_domain_version()),
60+
)),
6061
)
6162
}
6263

@@ -130,7 +131,7 @@ impl AdminServer {
130131

131132
fn change_upload_status(
132133
&self,
133-
) -> impl Filter<Extract = (impl warp::Reply,), Error = Rejection> + Clone {
134+
) -> impl Filter<Extract = (impl warp::Reply,), Error = Rejection> + Clone {
134135
warp::path!("files" / "upload_status")
135136
.and(with(self.domain_storage.clone()))
136137
.and(with(self.acme_manager.clone()))
@@ -182,7 +183,9 @@ impl AdminServer {
182183
.map(service::remove_domain_version)
183184
}
184185

185-
fn get_acme_cert_info(&self) -> impl Filter<Extract = (impl warp::Reply,), Error = Rejection> + Clone {
186+
fn get_acme_cert_info(
187+
&self,
188+
) -> impl Filter<Extract = (impl warp::Reply,), Error = Rejection> + Clone {
186189
warp::path!("cert" / "acme")
187190
.and(with(self.acme_manager.clone()))
188191
.and(warp::query::<GetDomainOption>())
@@ -296,7 +299,10 @@ pub mod service {
296299
acme_manager: Arc<ACMEManager>,
297300
param: UpdateUploadingStatusOption,
298301
) -> Result<Response, Infallible> {
299-
let resp = match storage.update_uploading_status(param.domain, param.version, param.status, &acme_manager).await {
302+
let resp = match storage
303+
.update_uploading_status(param.domain, param.version, param.status, &acme_manager)
304+
.await
305+
{
300306
Ok(_) => Response::default(),
301307
Err(e) => {
302308
let mut resp = Response::new(Body::from(e.to_string()));
@@ -406,6 +412,25 @@ pub mod service {
406412
};
407413
Ok(resp)
408414
}
415+
/*
416+
pub(super) async fn revoke_version(
417+
domain_storage: Arc<DomainStorage>,
418+
query: DomainWithVersionOption,
419+
) -> Result<Response, Infallible>{
420+
let DomainWithVersionOption {
421+
domain, version
422+
} = query;
423+
let resp = match domain_storage.get_domain_info_by_domain(&domain) {
424+
Some(info)=> {
425+
info
426+
}
427+
None => {
428+
not_found()
429+
}
430+
};
431+
Ok(resp)
432+
}
433+
*/
409434
}
410435

411436
pub mod request {

tests/tests/common.rs

+19-5
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@ use reqwest::{ClientBuilder, StatusCode, Url};
44
use spa_client::api::API;
55
use std::path::{Path, PathBuf};
66
use std::{env, fs, io};
7+
//use tokio::sync::oneshot;
78
use tokio::task::JoinHandle;
8-
use tracing::{error, Level};
9+
use tracing::{debug, error, Level};
910
use tracing_subscriber::EnvFilter;
1011

1112
pub const LOCAL_HOST: &str = "local.fornetcode.com";
@@ -49,13 +50,26 @@ pub fn run_server_with_config(config_file_name: &str) -> JoinHandle<()> {
4950
)
5051
.with_test_writer()
5152
.try_init();
52-
53-
return tokio::spawn(async {
53+
//let (tx, rx) = oneshot::channel::<()>();
54+
tokio::spawn(async move {
5455
let result = spa_server::run_server().await;
5556
if result.is_err() {
56-
error!("spa server run error: {:?}", result.unwrap_err())
57+
error!("spa server run error: {:?}", result.unwrap_err());
58+
} else {
59+
debug!("spa server finish");
5760
}
58-
});
61+
// tokio::select! {
62+
// _ = rx => {
63+
// debug!("stop server")
64+
// }
65+
// result = spa_server::run_server() => {
66+
// if result.is_err() {
67+
// error!("spa server run error: {:?}", result.unwrap_err());
68+
// }
69+
// }
70+
// }
71+
})
72+
//tx
5973
}
6074
pub fn run_server() -> JoinHandle<()> {
6175
run_server_with_config("server_config.conf")

tests/tests/starter.rs

+34-1
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ use reqwest::header::LOCATION;
22
use reqwest::redirect::Policy;
33
use reqwest::{ClientBuilder, StatusCode};
44
use std::time::Duration;
5+
use tokio::time::sleep;
6+
use tracing::log::debug;
57

68
mod common;
79
use crate::common::*;
810
use common::run_server;
11+
use spa_server::config::get_host_path_from_domain;
912

1013
#[tokio::test(flavor = "multi_thread", worker_threads = 3)]
1114
async fn start_server_and_client_upload_file() {
@@ -139,9 +142,38 @@ async fn evoke_cache_when_serving_new_version() {
139142
}
140143

141144
// This must run after evoke_cache_when_serving_new_index
142-
#[ignore]
143145
#[tokio::test(flavor = "multi_thread", worker_threads = 3)]
144146
async fn cold_start_server_and_serving_files() {
147+
clean_web_domain_dir(LOCAL_HOST);
148+
let domain = format!("{LOCAL_HOST}/27");
149+
let domain = &domain;
150+
let request_prefix = format!("http://{LOCAL_HOST}:8080/27");
151+
let request_prefix = &request_prefix;
152+
let sender = run_server();
153+
154+
tokio::time::sleep(Duration::from_secs(1)).await;
155+
156+
upload_file_and_check(domain, request_prefix, 1, vec![]).await;
157+
upload_file_and_check(domain, request_prefix, 2, vec![]).await;
158+
upload_file_and_check(domain, request_prefix, 3, vec![]).await;
159+
upload_file_and_check(domain, request_prefix, 4, vec![]).await;
160+
let mut wait_count = 0;
161+
sender.abort();
162+
163+
debug!("begin to loop server close");
164+
165+
let (api, _) = get_client_api("client_config.conf");
166+
loop {
167+
assert!(wait_count < 10, "10 seconds server does not stop");
168+
sleep(Duration::from_secs(1)).await;
169+
let cert_info = api
170+
.get_domain_info(Some(get_host_path_from_domain(domain).0.to_string()))
171+
.await;
172+
if cert_info.is_err() {
173+
break;
174+
}
175+
wait_count += 1;
176+
}
145177
let domain = format!("{LOCAL_HOST}/27");
146178
let domain = &domain;
147179
let request_prefix = format!("http://{LOCAL_HOST}:8080/27");
@@ -152,6 +184,7 @@ async fn cold_start_server_and_serving_files() {
152184
assert_files(domain, request_prefix, 4, vec!["index.html", "4.html"]).await;
153185
assert_files(domain, request_prefix, 2, vec!["2.html"]).await;
154186
assert_files_no_exists(request_prefix, vec!["1.html"]).await;
187+
//sender.send(()).unwrap();
155188
}
156189

157190
#[tokio::test]

0 commit comments

Comments
 (0)