Skip to content

Commit d83bade

Browse files
chore(test-suite): gw-stress support batch of ct handles (#1721)
1 parent a578e9a commit d83bade

File tree

7 files changed

+40
-14
lines changed

7 files changed

+40
-14
lines changed

kms-connector/connector-db/docker-compose.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ services:
2121
build:
2222
context: ../..
2323
dockerfile: kms-connector/connector-db/Dockerfile
24+
args:
25+
RUST_IMAGE_VERSION: stable
2426
environment:
2527
DATABASE_URL: postgresql://postgres:postgres@kms-connector-db:5432/kms-connector
2628
depends_on:

test-suite/gateway-stress/src/blockchain/manager.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,16 @@ impl GatewayTestManager {
160160
}
161161

162162
burst_tasks.join_all().await;
163+
163164
let elapsed = session_start.elapsed().as_secs_f64();
164-
info!(
165-
"Handled all burst in {:.2}s. Throughput: {:.2} tps",
166-
elapsed,
167-
(self.config.parallel_requests * (burst_index - 1) as u32) as f64 / elapsed
168-
);
165+
let handle_batch_size = match args.decryption_type {
166+
DecryptionType::Public => self.config.public_ct.len() as u32,
167+
DecryptionType::User => self.config.user_ct.len() as u32,
168+
};
169+
let total_decryption =
170+
self.config.parallel_requests * handle_batch_size * (burst_index - 1) as u32;
171+
let throughput = total_decryption as f64 / elapsed;
172+
info!("Handled all burst in {elapsed:.2}s. Throughput: {throughput:.2} tps");
169173
Ok(())
170174
}
171175

test-suite/gateway-stress/src/db/manager.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ use crate::{
33
cli::{DbBenchmarkArgs, DbTestArgs},
44
config::Config,
55
db::{DbConnector, RequestBuilder, ResponseTracker},
6-
decryption::{BurstResult, types::DecryptionRequest},
6+
decryption::{
7+
BurstResult,
8+
types::{DecryptionRequest, DecryptionType},
9+
},
710
};
811
use anyhow::anyhow;
912
use std::sync::Arc;
@@ -40,6 +43,8 @@ impl DatabaseTestManager {
4043
let connector = DbConnector::connect(db_config, i, request_sender).await?;
4144
let tracker = ResponseTracker::new(
4245
connector.name.clone(),
46+
config.public_ct.len(),
47+
config.user_ct.len(),
4348
request_receiver,
4449
connector.db_pool.clone(),
4550
);
@@ -130,12 +135,16 @@ impl DatabaseTestManager {
130135
}
131136

132137
burst_tasks.join_all().await;
138+
133139
let elapsed = session_start.elapsed().as_secs_f64();
134-
info!(
135-
"Handled all burst in {:.2}s. Throughput: {:.2} tps",
136-
elapsed,
137-
(self.config.parallel_requests * (burst_index - 1) as u32) as f64 / elapsed
138-
);
140+
let handle_batch_size = match args.decryption_type {
141+
DecryptionType::Public => self.config.public_ct.len() as u32,
142+
DecryptionType::User => self.config.user_ct.len() as u32,
143+
};
144+
let total_decryption =
145+
self.config.parallel_requests * handle_batch_size * (burst_index - 1) as u32;
146+
let throughput = total_decryption as f64 / elapsed;
147+
info!("Handled all burst in {elapsed:.2}s. Throughput: {throughput:.2} tps");
139148

140149
if !args.skip_clear_db {
141150
self.clear_databases().await?;

test-suite/gateway-stress/src/db/response_tracker.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,24 @@ const RESPONSE_POLLING: Duration = Duration::from_millis(500);
1313

1414
pub struct ResponseTracker {
1515
name: String,
16+
public_decrypt_ct_handles_batch_size: usize,
17+
user_decrypt_ct_handles_batch_size: usize,
1618
request_receiver: UnboundedReceiver<Vec<DecryptionRequestDbMetadata>>,
1719
db_pool: Pool<Postgres>,
1820
}
1921

2022
impl ResponseTracker {
2123
pub fn new(
2224
name: String,
25+
public_decrypt_ct_handles_batch_size: usize,
26+
user_decrypt_ct_handles_batch_size: usize,
2327
request_receiver: UnboundedReceiver<Vec<DecryptionRequestDbMetadata>>,
2428
db_pool: Pool<Postgres>,
2529
) -> Self {
2630
Self {
2731
name,
32+
public_decrypt_ct_handles_batch_size,
33+
user_decrypt_ct_handles_batch_size,
2834
request_receiver,
2935
db_pool,
3036
}
@@ -44,6 +50,7 @@ impl ResponseTracker {
4450

4551
let burst_start = requests.iter().map(|r| r.created_at).min().unwrap();
4652
let mut interval = interval(RESPONSE_POLLING);
53+
4754
let mut ids_to_process: Vec<Vec<u8>> = requests
4855
.into_iter()
4956
.map(|r| r.id.to_le_bytes_vec())
@@ -60,10 +67,11 @@ impl ResponseTracker {
6067

6168
let burst_end = responses.iter().map(|r| r.created_at).max().unwrap();
6269
let latency = (burst_end - burst_start).as_seconds_f64();
70+
let decryption_number: usize = responses.iter().map(|r| r.handle_batch_size).sum();
6371

6472
let result = BurstResult {
6573
latency,
66-
throughput: responses.len() as f64 / latency,
74+
throughput: decryption_number as f64 / latency,
6775
};
6876
debug!(
6977
latency = result.latency,
@@ -91,6 +99,7 @@ impl ResponseTracker {
9199
responses.push(DecryptionResponseDbMetadata {
92100
id: U256::from_le_slice(&row.decryption_id),
93101
created_at: row.created_at,
102+
handle_batch_size: self.public_decrypt_ct_handles_batch_size,
94103
});
95104
}
96105

@@ -104,6 +113,7 @@ impl ResponseTracker {
104113
responses.push(DecryptionResponseDbMetadata {
105114
id: U256::from_le_slice(&row.decryption_id),
106115
created_at: row.created_at,
116+
handle_batch_size: self.user_decrypt_ct_handles_batch_size,
107117
});
108118
}
109119

test-suite/gateway-stress/src/db/types.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ pub struct DecryptionRequestDbMetadata {
5454
pub struct DecryptionResponseDbMetadata {
5555
pub id: U256,
5656
pub created_at: PrimitiveDateTime,
57+
pub handle_batch_size: usize,
5758
}
5859

5960
impl From<PgRow> for DecryptionRequestDbMetadata {

test-suite/gateway-stress/src/decryption/public.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ where
215215
let latency = burst_start.elapsed().as_secs_f64();
216216
let result = BurstResult {
217217
latency,
218-
throughput: config.parallel_requests as f64 / latency,
218+
throughput: (config.parallel_requests * config.public_ct.len() as u32) as f64 / latency,
219219
};
220220
progress_bar.finish_with_message(format!(
221221
"Handled burst #{} of {} in {:.2}s. Throughput: {:.2} tps",

test-suite/gateway-stress/src/decryption/user.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ where
300300
let latency = burst_start.elapsed().as_secs_f64();
301301
let result = BurstResult {
302302
latency,
303-
throughput: config.parallel_requests as f64 / latency,
303+
throughput: (config.parallel_requests * config.user_ct.len() as u32) as f64 / latency,
304304
};
305305
progress_bar.finish_with_message(format!(
306306
"Handled burst #{} of {} in {:.2}s. Throughput: {:.2} tps",

0 commit comments

Comments
 (0)