Skip to content

Commit c7d524c

Browse files
authored
Merge pull request #1044 from rust-lang/log-requests
Log all requests and when they finish
2 parents e15fcaf + c779ae5 commit c7d524c

File tree

7 files changed

+509
-63
lines changed

7 files changed

+509
-63
lines changed

tests/Gemfile.lock

+20-18
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,51 @@ GEM
33
specs:
44
addressable (2.8.6)
55
public_suffix (>= 2.0.2, < 6.0)
6-
capybara (3.39.2)
6+
base64 (0.2.0)
7+
capybara (3.40.0)
78
addressable
89
matrix
910
mini_mime (>= 0.1.3)
10-
nokogiri (~> 1.8)
11+
nokogiri (~> 1.11)
1112
rack (>= 1.6.0)
1213
rack-test (>= 0.6.3)
1314
regexp_parser (>= 1.5, < 3.0)
1415
xpath (~> 3.2)
1516
capybara-screenshot (1.0.26)
1617
capybara (>= 1.0, < 4)
1718
launchy
18-
diff-lcs (1.5.0)
19+
diff-lcs (1.5.1)
1920
launchy (2.5.2)
2021
addressable (~> 2.8)
2122
matrix (0.4.2)
2223
mini_mime (1.1.5)
2324
mini_portile2 (2.8.5)
24-
nokogiri (1.15.5)
25+
nokogiri (1.16.2)
2526
mini_portile2 (~> 2.8.2)
2627
racc (~> 1.4)
2728
public_suffix (5.0.4)
2829
racc (1.7.3)
29-
rack (3.0.8)
30+
rack (3.0.9)
3031
rack-test (2.1.0)
3132
rack (>= 1.3)
32-
regexp_parser (2.8.3)
33+
regexp_parser (2.9.0)
3334
rexml (3.2.6)
34-
rspec (3.12.0)
35-
rspec-core (~> 3.12.0)
36-
rspec-expectations (~> 3.12.0)
37-
rspec-mocks (~> 3.12.0)
38-
rspec-core (3.12.2)
39-
rspec-support (~> 3.12.0)
40-
rspec-expectations (3.12.3)
35+
rspec (3.13.0)
36+
rspec-core (~> 3.13.0)
37+
rspec-expectations (~> 3.13.0)
38+
rspec-mocks (~> 3.13.0)
39+
rspec-core (3.13.0)
40+
rspec-support (~> 3.13.0)
41+
rspec-expectations (3.13.0)
4142
diff-lcs (>= 1.2.0, < 2.0)
42-
rspec-support (~> 3.12.0)
43-
rspec-mocks (3.12.6)
43+
rspec-support (~> 3.13.0)
44+
rspec-mocks (3.13.0)
4445
diff-lcs (>= 1.2.0, < 2.0)
45-
rspec-support (~> 3.12.0)
46-
rspec-support (3.12.1)
46+
rspec-support (~> 3.13.0)
47+
rspec-support (3.13.0)
4748
rubyzip (2.3.2)
48-
selenium-webdriver (4.16.0)
49+
selenium-webdriver (4.17.0)
50+
base64 (~> 0.2)
4951
rexml (~> 3.2, >= 3.2.5)
5052
rubyzip (>= 1.2.2, < 3.0)
5153
websocket (~> 1.0)

ui/Cargo.lock

+101
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ui/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ openssl-probe = "0.1.2"
2121
orchestrator = { path = "../compiler/base/orchestrator" }
2222
prometheus = "0.13.0"
2323
regex = "1.0.0"
24+
rusqlite = { version = "0.30.0", default-features = false, features = ["bundled"] }
2425
serde = { version = "1.0", features = ["rc"] }
2526
serde_derive = "1.0"
2627
serde_json = "1.0"

ui/src/main.rs

+23-7
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const DEFAULT_PORT: u16 = 5000;
1717
mod env;
1818
mod gist;
1919
mod metrics;
20+
mod request_database;
2021
mod sandbox;
2122
mod server_axum;
2223

@@ -43,6 +44,7 @@ struct Config {
4344
gh_token: Option<String>,
4445
metrics_token: Option<String>,
4546
feature_flags: FeatureFlags,
47+
request_db_path: Option<PathBuf>,
4648
port: u16,
4749
root: PathBuf,
4850
}
@@ -98,12 +100,15 @@ impl Config {
98100

99101
let feature_flags = FeatureFlags {};
100102

103+
let request_db_path = env::var_os("PLAYGROUND_REQUEST_DATABASE").map(Into::into);
104+
101105
Self {
102106
address,
103107
cors_enabled,
104108
gh_token,
105109
metrics_token,
106110
feature_flags,
111+
request_db_path,
107112
port,
108113
root,
109114
}
@@ -129,6 +134,17 @@ impl Config {
129134
GhToken::new(&self.gh_token)
130135
}
131136

137+
fn request_database(&self) -> request_database::Database {
138+
use request_database::Database;
139+
140+
let request_db = match &self.request_db_path {
141+
Some(path) => Database::initialize(path),
142+
None => Database::initialize_memory(),
143+
};
144+
145+
request_db.expect("Unable to open request log database")
146+
}
147+
132148
fn server_socket_addr(&self) -> SocketAddr {
133149
let address = self.address.parse().expect("Invalid address");
134150
SocketAddr::new(address, self.port)
@@ -293,7 +309,7 @@ struct ErrorJson {
293309
error: String,
294310
}
295311

296-
#[derive(Debug, Clone, Deserialize)]
312+
#[derive(Debug, Clone, Serialize, Deserialize)]
297313
struct CompileRequest {
298314
target: String,
299315
#[serde(rename = "assemblyFlavor")]
@@ -324,7 +340,7 @@ struct CompileResponse {
324340
stderr: String,
325341
}
326342

327-
#[derive(Debug, Clone, Deserialize)]
343+
#[derive(Debug, Clone, Serialize, Deserialize)]
328344
struct ExecuteRequest {
329345
channel: String,
330346
mode: String,
@@ -347,7 +363,7 @@ struct ExecuteResponse {
347363
stderr: String,
348364
}
349365

350-
#[derive(Debug, Clone, Deserialize)]
366+
#[derive(Debug, Clone, Serialize, Deserialize)]
351367
struct FormatRequest {
352368
#[serde(default)]
353369
channel: Option<String>,
@@ -366,7 +382,7 @@ struct FormatResponse {
366382
stderr: String,
367383
}
368384

369-
#[derive(Debug, Clone, Deserialize)]
385+
#[derive(Debug, Clone, Serialize, Deserialize)]
370386
struct ClippyRequest {
371387
#[serde(default)]
372388
channel: Option<String>,
@@ -385,7 +401,7 @@ struct ClippyResponse {
385401
stderr: String,
386402
}
387403

388-
#[derive(Debug, Clone, Deserialize)]
404+
#[derive(Debug, Clone, Serialize, Deserialize)]
389405
struct MiriRequest {
390406
code: String,
391407
#[serde(default)]
@@ -400,7 +416,7 @@ struct MiriResponse {
400416
stderr: String,
401417
}
402418

403-
#[derive(Debug, Clone, Deserialize)]
419+
#[derive(Debug, Clone, Serialize, Deserialize)]
404420
struct MacroExpansionRequest {
405421
code: String,
406422
#[serde(default)]
@@ -462,7 +478,7 @@ struct MetaGistResponse {
462478
code: String,
463479
}
464480

465-
#[derive(Debug, Clone, Deserialize)]
481+
#[derive(Debug, Clone, Serialize, Deserialize)]
466482
struct EvaluateRequest {
467483
version: String,
468484
optimize: String,

0 commit comments

Comments
 (0)