mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 09:45:31 +00:00
aquatic http load test: register response types
This commit is contained in:
parent
1c6f22db85
commit
d6f9c2637c
1 changed files with 31 additions and 22 deletions
|
|
@ -81,31 +81,11 @@ impl Connection {
|
|||
state.statistics.bytes_received
|
||||
.fetch_add(self.bytes_read, Ordering::SeqCst);
|
||||
|
||||
let res_response = Response::from_bytes(
|
||||
&self.read_buffer[..self.bytes_read]
|
||||
);
|
||||
let interesting_bytes = &self.read_buffer[..self.bytes_read];
|
||||
|
||||
self.bytes_read = 0;
|
||||
|
||||
match res_response {
|
||||
Ok(Response::Announce(_)) => {
|
||||
state.statistics.responses_announce
|
||||
.fetch_add(1, Ordering::SeqCst);
|
||||
},
|
||||
Ok(Response::Scrape(_)) => {
|
||||
state.statistics.responses_scrape
|
||||
.fetch_add(1, Ordering::SeqCst);
|
||||
},
|
||||
Ok(Response::Failure(_)) => {
|
||||
state.statistics.responses_failure
|
||||
.fetch_add(1, Ordering::SeqCst);
|
||||
},
|
||||
Err(err) => {
|
||||
eprintln!("response from bytes error: {}", err);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
Self::register_response_type(state, interesting_bytes);
|
||||
|
||||
self.send_request(
|
||||
config,
|
||||
|
|
@ -114,6 +94,35 @@ impl Connection {
|
|||
);
|
||||
}
|
||||
|
||||
/// Ultra-crappy byte searches to determine response type with some degree
|
||||
/// of certainty.
|
||||
fn register_response_type(
|
||||
state: &LoadTestState,
|
||||
response_bytes: &[u8],
|
||||
){
|
||||
for chunk in response_bytes.windows(12){
|
||||
if chunk == b"e8:intervali" {
|
||||
state.statistics.responses_announce.fetch_add(1, Ordering::SeqCst);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
for chunk in response_bytes.windows(9){
|
||||
if chunk == b"d5:filesd" {
|
||||
state.statistics.responses_scrape.fetch_add(1, Ordering::SeqCst);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
for chunk in response_bytes.windows(18){
|
||||
if chunk == b"d14:failure_reason" {
|
||||
state.statistics.responses_failure.fetch_add(1, Ordering::SeqCst);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn send_request(
|
||||
&mut self,
|
||||
config: &Config,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue