ws load test: send answers regarding correct info_hash

This commit is contained in:
Joakim Frostegård 2024-01-08 19:09:17 +01:00
parent d4c95d89c0
commit 2279e8390e

View file

@ -6,7 +6,7 @@ use std::{
time::Duration, time::Duration,
}; };
use aquatic_ws_protocol::{InMessage, OfferId, OutMessage, PeerId, RtcAnswer, RtcAnswerType}; use aquatic_ws_protocol::{InMessage, OfferId, OutMessage, PeerId, RtcAnswer, RtcAnswerType, InfoHash};
use async_tungstenite::{client_async, WebSocketStream}; use async_tungstenite::{client_async, WebSocketStream};
use futures::{SinkExt, StreamExt}; use futures::{SinkExt, StreamExt};
use futures_rustls::{client::TlsStream, TlsConnector}; use futures_rustls::{client::TlsStream, TlsConnector};
@ -66,7 +66,7 @@ struct Connection {
rng: SmallRng, rng: SmallRng,
can_send: bool, can_send: bool,
peer_id: PeerId, peer_id: PeerId,
send_answer: Option<(PeerId, OfferId)>, send_answer: Option<(InfoHash, PeerId, OfferId)>,
stream: WebSocketStream<TlsStream<TcpStream>>, stream: WebSocketStream<TlsStream<TcpStream>>,
} }
@ -131,7 +131,8 @@ impl Connection {
// If self.send_answer is set and request is announce request, make // If self.send_answer is set and request is announce request, make
// the request an offer answer // the request an offer answer
let request = if let InMessage::AnnounceRequest(mut r) = request { let request = if let InMessage::AnnounceRequest(mut r) = request {
if let Some((peer_id, offer_id)) = self.send_answer { if let Some((info_hash, peer_id, offer_id)) = self.send_answer {
r.info_hash = info_hash;
r.answer_to_peer_id = Some(peer_id); r.answer_to_peer_id = Some(peer_id);
r.answer_offer_id = Some(offer_id); r.answer_offer_id = Some(offer_id);
r.answer = Some(RtcAnswer { r.answer = Some(RtcAnswer {
@ -142,13 +143,13 @@ impl Connection {
r.offers = None; r.offers = None;
} }
self.send_answer = None;
InMessage::AnnounceRequest(r) InMessage::AnnounceRequest(r)
} else { } else {
request request
}; };
self.send_answer = None;
self.stream.send(request.to_ws_message()).await?; self.stream.send(request.to_ws_message()).await?;
self.load_test_state self.load_test_state
@ -190,7 +191,7 @@ impl Connection {
.responses_offer .responses_offer
.fetch_add(1, Ordering::Relaxed); .fetch_add(1, Ordering::Relaxed);
self.send_answer = Some((offer.peer_id, offer.offer_id)); self.send_answer = Some((offer.info_hash, offer.peer_id, offer.offer_id));
self.can_send = true; self.can_send = true;
} }