mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-07 01:47:47 +08:00
fix(usage): calibrate active elapsed clock efficiently
This commit is contained in:
@@ -7,6 +7,7 @@ use crate::tests::{
|
||||
build_state_with_execution_runtime_override, json, start_server, AppState, Arc, Body,
|
||||
FrontdoorCorsConfig, Mutex, Request, Router, StatusCode, FRONTDOOR_MANIFEST_PATH, READYZ_PATH,
|
||||
};
|
||||
use aether_contracts::USAGE_SERVER_NOW_UNIX_MS_HEADER;
|
||||
use aether_crypto::DEVELOPMENT_ENCRYPTION_KEY;
|
||||
use aether_data::repository::auth::InMemoryAuthApiKeySnapshotRepository;
|
||||
use aether_data::repository::candidate_selection::InMemoryMinimalCandidateSelectionReadRepository;
|
||||
@@ -440,12 +441,19 @@ async fn gateway_adds_cors_headers_to_proxied_responses() {
|
||||
.expect("allow origin header"),
|
||||
"http://localhost:3000"
|
||||
);
|
||||
assert_eq!(
|
||||
response_headers
|
||||
.get("access-control-expose-headers")
|
||||
.expect("expose headers header"),
|
||||
"*"
|
||||
);
|
||||
let expose_headers = response_headers
|
||||
.get("access-control-expose-headers")
|
||||
.expect("expose headers header")
|
||||
.to_str()
|
||||
.expect("expose headers should be valid ASCII");
|
||||
assert!(expose_headers
|
||||
.split(',')
|
||||
.map(str::trim)
|
||||
.any(|header| header == "*"));
|
||||
assert!(expose_headers
|
||||
.split(',')
|
||||
.map(str::trim)
|
||||
.any(|header| header.eq_ignore_ascii_case(USAGE_SERVER_NOW_UNIX_MS_HEADER)));
|
||||
assert_eq!(
|
||||
*execution_runtime_hits.lock().expect("mutex should lock"),
|
||||
1
|
||||
|
||||
@@ -11,10 +11,10 @@ use super::{
|
||||
};
|
||||
use crate::data::GatewayDataState;
|
||||
use crate::tests::{
|
||||
any, build_router, build_router_with_state, json, start_server, to_bytes, AppState, Arc, Body,
|
||||
Json, Mutex, Request, Router, StatusCode, CONTROL_ROUTE_FAMILY_HEADER,
|
||||
CONTROL_ROUTE_KIND_HEADER, TRUSTED_ADMIN_SESSION_ID_HEADER, TRUSTED_ADMIN_USER_ID_HEADER,
|
||||
TRUSTED_ADMIN_USER_ROLE_HEADER,
|
||||
any, assert_usage_server_now_header_between, build_router, build_router_with_state, json,
|
||||
start_server, to_bytes, unix_epoch_millis_for_tests, AppState, Arc, Body, Json, Mutex, Request,
|
||||
Router, StatusCode, CONTROL_ROUTE_FAMILY_HEADER, CONTROL_ROUTE_KIND_HEADER,
|
||||
TRUSTED_ADMIN_SESSION_ID_HEADER, TRUSTED_ADMIN_USER_ID_HEADER, TRUSTED_ADMIN_USER_ROLE_HEADER,
|
||||
};
|
||||
use aether_crypto::{encrypt_python_fernet_plaintext, DEVELOPMENT_ENCRYPTION_KEY};
|
||||
use aether_data::repository::announcements::{AnnouncementListQuery, AnnouncementReadRepository};
|
||||
@@ -5345,6 +5345,7 @@ async fn gateway_handles_users_me_usage_locally_without_proxying_upstream() {
|
||||
})
|
||||
.await;
|
||||
|
||||
let client_send_unix_ms = unix_epoch_millis_for_tests();
|
||||
let response = reqwest::Client::new()
|
||||
.get(format!(
|
||||
"{gateway_url}/api/users/me/usage?limit=10&offset=0&search=renamed-key"
|
||||
@@ -5355,9 +5356,17 @@ async fn gateway_handles_users_me_usage_locally_without_proxying_upstream() {
|
||||
.send()
|
||||
.await
|
||||
.expect("request should succeed");
|
||||
let client_receive_unix_ms = unix_epoch_millis_for_tests();
|
||||
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
let response_headers = response.headers().clone();
|
||||
assert_usage_server_now_header_between(
|
||||
&response_headers,
|
||||
client_send_unix_ms,
|
||||
client_receive_unix_ms,
|
||||
);
|
||||
let payload: serde_json::Value = response.json().await.expect("json body should parse");
|
||||
assert!(payload.get("server_now_unix_ms").is_none());
|
||||
assert_eq!(payload["total_requests"], 2);
|
||||
assert_eq!(payload["total_input_tokens"], 240);
|
||||
assert_eq!(payload["pagination"]["total"], 3);
|
||||
@@ -5667,6 +5676,7 @@ async fn gateway_handles_users_me_usage_active_locally_without_proxying_upstream
|
||||
)
|
||||
.await;
|
||||
|
||||
let client_send_unix_ms = unix_epoch_millis_for_tests();
|
||||
let response = reqwest::Client::new()
|
||||
.get(format!("{gateway_url}/api/users/me/usage/active"))
|
||||
.header("authorization", format!("Bearer {access_token}"))
|
||||
@@ -5675,9 +5685,17 @@ async fn gateway_handles_users_me_usage_active_locally_without_proxying_upstream
|
||||
.send()
|
||||
.await
|
||||
.expect("request should succeed");
|
||||
let client_receive_unix_ms = unix_epoch_millis_for_tests();
|
||||
|
||||
assert_eq!(response.status(), StatusCode::OK);
|
||||
let response_headers = response.headers().clone();
|
||||
assert_usage_server_now_header_between(
|
||||
&response_headers,
|
||||
client_send_unix_ms,
|
||||
client_receive_unix_ms,
|
||||
);
|
||||
let payload: serde_json::Value = response.json().await.expect("json body should parse");
|
||||
assert!(payload.get("server_now_unix_ms").is_none());
|
||||
let requests = payload["requests"].as_array().expect("requests array");
|
||||
assert_eq!(requests.len(), 2);
|
||||
assert_eq!(requests[0]["status"], "streaming");
|
||||
|
||||
Reference in New Issue
Block a user