in src/results.rs [359:444]
fn test_time_to_first_token_percentile() {
let request = Arc::from(TextGenerationRequest {
id: None,
prompt: "test".to_string(),
num_prompt_tokens: 10,
num_decode_tokens: None,
});
let mut response1 = TextGenerationAggregatedResponse::new(request.clone());
response1.start_time = Some(tokio::time::Instant::now());
response1.end_time =
Some(tokio::time::Instant::now() + tokio::time::Duration::from_millis(100));
response1.num_generated_tokens = 100;
response1.failed = false;
response1.times_to_tokens = vec![
Duration::from_millis(100),
Duration::from_millis(200),
Duration::from_millis(300),
Duration::from_millis(400),
Duration::from_millis(500),
];
let mut response2 = TextGenerationAggregatedResponse::new(request.clone());
response2.start_time = Some(tokio::time::Instant::now());
response2.end_time =
Some(tokio::time::Instant::now() + tokio::time::Duration::from_millis(200));
response2.num_generated_tokens = 100;
response2.failed = false;
response2.times_to_tokens = vec![
Duration::from_millis(600),
Duration::from_millis(700),
Duration::from_millis(800),
Duration::from_millis(900),
Duration::from_millis(1000),
];
let mut response3 = TextGenerationAggregatedResponse::new(request.clone());
response3.start_time = Some(tokio::time::Instant::now());
response3.end_time =
Some(tokio::time::Instant::now() + tokio::time::Duration::from_millis(300));
response3.num_generated_tokens = 100;
response3.failed = false;
response3.times_to_tokens = vec![
Duration::from_millis(1100),
Duration::from_millis(1200),
Duration::from_millis(1300),
Duration::from_millis(1400),
Duration::from_millis(1500),
];
let mut response4 = TextGenerationAggregatedResponse::new(request.clone());
response4.start_time = Some(tokio::time::Instant::now());
response4.end_time =
Some(tokio::time::Instant::now() + tokio::time::Duration::from_millis(300));
response4.num_generated_tokens = 100;
response4.failed = false;
response4.times_to_tokens = vec![
Duration::from_millis(1600),
Duration::from_millis(1700),
Duration::from_millis(1800),
Duration::from_millis(1900),
Duration::from_millis(2000),
];
let mut results = BenchmarkResults::new(
"test".to_string(),
ExecutorType::ConstantArrivalRate,
ExecutorConfig {
max_vus: 0,
duration: Default::default(),
rate: None,
},
);
results.add_response(response1);
results.add_response(response2);
results.add_response(response3);
results.add_response(response4);
assert_eq!(
results.time_to_first_token_percentile(0.9).unwrap(),
Duration::from_millis(1450)
);
assert_eq!(
results.time_to_first_token_percentile(0.5).unwrap(),
Duration::from_millis(850)
);
}