mirror of
https://github.com/YGGverse/aquatic.git
synced 2026-03-31 17:55:36 +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
|
state.statistics.bytes_received
|
||||||
.fetch_add(self.bytes_read, Ordering::SeqCst);
|
.fetch_add(self.bytes_read, Ordering::SeqCst);
|
||||||
|
|
||||||
let res_response = Response::from_bytes(
|
let interesting_bytes = &self.read_buffer[..self.bytes_read];
|
||||||
&self.read_buffer[..self.bytes_read]
|
|
||||||
);
|
|
||||||
|
|
||||||
self.bytes_read = 0;
|
self.bytes_read = 0;
|
||||||
|
|
||||||
match res_response {
|
Self::register_response_type(state, interesting_bytes);
|
||||||
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.send_request(
|
self.send_request(
|
||||||
config,
|
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(
|
pub fn send_request(
|
||||||
&mut self,
|
&mut self,
|
||||||
config: &Config,
|
config: &Config,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue