100 lines
2.9 KiB
Rust
100 lines
2.9 KiB
Rust
use makepad_live_id::LiveId;
|
|
use makepad_studio_hub::log_store::{
|
|
AppendLogEntry, LogQuery, LogStore, ProfilerQuery, ProfilerStore, SAMPLE_TYPE_EVENT,
|
|
SAMPLE_TYPE_GPU,
|
|
};
|
|
use makepad_studio_protocol::hub_protocol::{ClientId, EventSample, GPUSample, LogSource, QueryId};
|
|
use makepad_studio_protocol::LogLevel;
|
|
|
|
#[test]
|
|
fn log_store_filters_by_build_source_and_pattern() {
|
|
let build_a = QueryId::new(ClientId(1), 1);
|
|
let build_b = QueryId::new(ClientId(2), 1);
|
|
let mut store = LogStore::default();
|
|
|
|
store.append(AppendLogEntry {
|
|
build_id: Some(build_a),
|
|
level: LogLevel::Log,
|
|
source: LogSource::Cargo,
|
|
message: "compile ok".to_string(),
|
|
file_name: None,
|
|
line: None,
|
|
column: None,
|
|
timestamp: Some(1.0),
|
|
});
|
|
store.append(AppendLogEntry {
|
|
build_id: Some(build_b),
|
|
level: LogLevel::Warning,
|
|
source: LogSource::Studio,
|
|
message: "lint warning".to_string(),
|
|
file_name: Some("repo/src/lib.rs".to_string()),
|
|
line: Some(10),
|
|
column: Some(3),
|
|
timestamp: Some(2.0),
|
|
});
|
|
|
|
let query = LogQuery {
|
|
build_id: Some(build_b),
|
|
level: Some("warning".to_string()),
|
|
source: Some(LogSource::Studio),
|
|
file: Some("repo/src/lib.rs".to_string()),
|
|
pattern: Some("lint".to_string()),
|
|
since_index: Some(1),
|
|
};
|
|
let results = store.query(&query);
|
|
assert_eq!(results.len(), 1);
|
|
assert_eq!(results[0].0, 1);
|
|
assert_eq!(results[0].1.source, LogSource::Studio);
|
|
}
|
|
|
|
#[test]
|
|
fn profiler_store_filters_and_downsamples() {
|
|
let build = QueryId::new(ClientId(4), 9);
|
|
let mut store = ProfilerStore::default();
|
|
|
|
for i in 0..20 {
|
|
store.append_event(
|
|
Some(build),
|
|
EventSample {
|
|
at: i as f64,
|
|
label: LiveId::from_str("event.tick"),
|
|
..Default::default()
|
|
},
|
|
);
|
|
}
|
|
for i in 0..10 {
|
|
store.append_gpu(
|
|
Some(build),
|
|
GPUSample {
|
|
at: i as f64,
|
|
label: LiveId::from_str("gpu.frame"),
|
|
..Default::default()
|
|
},
|
|
);
|
|
}
|
|
|
|
let query = ProfilerQuery {
|
|
build_id: Some(build),
|
|
sample_type: Some(SAMPLE_TYPE_EVENT),
|
|
time_start: Some(4.0),
|
|
time_end: Some(15.0),
|
|
max_samples: Some(5),
|
|
};
|
|
let (events, gpu, gc, total) = store.query(&query);
|
|
assert!(!events.is_empty());
|
|
assert!(events.len() <= 5);
|
|
assert!(gpu.is_empty());
|
|
assert!(gc.is_empty());
|
|
assert_eq!(total, 12);
|
|
|
|
let gpu_query = ProfilerQuery {
|
|
build_id: Some(build),
|
|
sample_type: Some(SAMPLE_TYPE_GPU),
|
|
time_start: None,
|
|
time_end: None,
|
|
max_samples: Some(3),
|
|
};
|
|
let (_events, gpu, _gc, total) = store.query(&gpu_query);
|
|
assert_eq!(gpu.len(), 3);
|
|
assert_eq!(total, 10);
|
|
}
|