Skip to content

Commit 90605fc

Browse files
committed
refactor: take out some boilerplate
1 parent d842831 commit 90605fc

File tree

1 file changed

+27
-55
lines changed

1 file changed

+27
-55
lines changed

src/lighthouse.rs

+27-55
Original file line numberDiff line numberDiff line change
@@ -1019,6 +1019,23 @@ mod tests {
10191019
#[tokio::test]
10201020

10211021
async fn test_lighthouse_join_during_shrink() -> Result<()> {
1022+
fn create_member(id: &str, addr_num: &str, step: i64, shrink_only: bool) -> QuorumMember {
1023+
QuorumMember {
1024+
replica_id: id.to_string(),
1025+
address: format!("addr{}", addr_num),
1026+
store_address: format!("store{}", addr_num),
1027+
step,
1028+
world_size: 1,
1029+
shrink_only,
1030+
}
1031+
}
1032+
1033+
fn create_request(member: &QuorumMember) -> tonic::Request<LighthouseQuorumRequest> {
1034+
tonic::Request::new(LighthouseQuorumRequest {
1035+
requester: Some(member.clone()),
1036+
})
1037+
}
1038+
10221039
let opt = LighthouseOpt {
10231040
min_replicas: 2,
10241041
bind: "[::]:0".to_string(),
@@ -1034,29 +1051,9 @@ mod tests {
10341051
// Create client to interact with lighthouse
10351052
let mut client = lighthouse_client_new(lighthouse.address()).await?;
10361053

1037-
// First quorum
1038-
let mut member0 = QuorumMember {
1039-
replica_id: "replica0".to_string(),
1040-
address: "addr1".to_string(),
1041-
store_address: "store1".to_string(),
1042-
step: 1,
1043-
world_size: 1,
1044-
shrink_only: false,
1045-
};
1046-
let mut member1 = QuorumMember {
1047-
replica_id: "replica1".to_string(),
1048-
address: "addr2".to_string(),
1049-
store_address: "store2".to_string(),
1050-
step: 1,
1051-
world_size: 1,
1052-
shrink_only: false,
1053-
};
1054-
let mut first_request = tonic::Request::new(LighthouseQuorumRequest {
1055-
requester: Some(member0.clone()),
1056-
});
1057-
let mut second_request = tonic::Request::new(LighthouseQuorumRequest {
1058-
requester: Some(member1.clone()),
1059-
});
1054+
// 1. First quorum
1055+
let mut first_request = create_request(&create_member("replica0", "1", 1, false));
1056+
let mut second_request = create_request(&create_member("replica1", "2", 1, false));
10601057

10611058
tokio::spawn({
10621059
let mut client = client.clone();
@@ -1069,33 +1066,16 @@ mod tests {
10691066
assert_eq!(first_quorum.participants[1].replica_id, "replica1");
10701067
assert_eq!(first_quorum.participants[1].step, 1);
10711068

1072-
// 2nd Quorum without joiner
1073-
let member2 = QuorumMember {
1074-
replica_id: "joiner".to_string(),
1075-
address: "addr3".to_string(),
1076-
store_address: "store3".to_string(),
1077-
step: 1,
1078-
world_size: 1,
1079-
shrink_only: false,
1080-
};
1081-
let joining_request = tonic::Request::new(LighthouseQuorumRequest {
1082-
requester: Some(member2.clone()),
1083-
});
1069+
// 2. Quorum without joiner
1070+
let joining_request = create_request(&create_member("joiner", "3", 1, false));
10841071
let joining_task = tokio::spawn({
10851072
let mut client = client.clone();
10861073
async move { client.quorum(joining_request).await }
10871074
});
10881075

10891076
// Try to shrink only
1090-
member0.step = 2;
1091-
member1.step = 2;
1092-
member0.shrink_only = true;
1093-
first_request = tonic::Request::new(LighthouseQuorumRequest {
1094-
requester: Some(member0.clone()),
1095-
});
1096-
second_request = tonic::Request::new(LighthouseQuorumRequest {
1097-
requester: Some(member1.clone()),
1098-
});
1077+
first_request = create_request(&create_member("replica0", "1", 2, true));
1078+
second_request = create_request(&create_member("replica1", "2", 2, false));
10991079

11001080
tokio::spawn({
11011081
let mut client = client.clone();
@@ -1112,17 +1092,9 @@ mod tests {
11121092
assert_eq!(second_quorum.participants[1].replica_id, "replica1");
11131093
assert_eq!(second_quorum.participants[1].step, 2);
11141094

1115-
// Quorum 3 with joiner
1116-
member0.step = 3;
1117-
member1.step = 3;
1118-
member0.shrink_only = false;
1119-
1120-
first_request = tonic::Request::new(LighthouseQuorumRequest {
1121-
requester: Some(member0.clone()),
1122-
});
1123-
second_request = tonic::Request::new(LighthouseQuorumRequest {
1124-
requester: Some(member1.clone()),
1125-
});
1095+
// 3. Quorum with joiner
1096+
first_request = create_request(&create_member("replica0", "1", 3, false));
1097+
second_request = create_request(&create_member("replica1", "2", 3, false));
11261098

11271099
tokio::spawn({
11281100
let mut client = client.clone();

0 commit comments

Comments
 (0)