Skip to content

Commit

Permalink
test(crypto): CRP-2384 better names for Nodes::receivers and some o…
Browse files Browse the repository at this point in the history
…ther fns
  • Loading branch information
altkdf committed Jan 30, 2024
1 parent 2571e41 commit 6cddb86
Show file tree
Hide file tree
Showing 7 changed files with 267 additions and 144 deletions.
11 changes: 8 additions & 3 deletions rs/consensus/src/ecdsa/complaints.rs
Expand Up @@ -1744,7 +1744,7 @@ mod tests {

let crypto = env
.nodes
.receivers(&idkg_transcript)
.filter_by_receivers(&idkg_transcript)
.next()
.unwrap()
.crypto();
Expand Down Expand Up @@ -1786,7 +1786,12 @@ mod tests {
let env = CanisterThresholdSigTestEnvironment::new(3, &mut rng);
let (_, _, transcript) = create_corrupted_transcript(&env, &mut rng);

let crypto = env.nodes.receivers(&transcript).next().unwrap().crypto();
let crypto = env
.nodes
.filter_by_receivers(&transcript)
.next()
.unwrap()
.crypto();
let (ecdsa_pool, complaint_handler) =
create_complaint_dependencies_with_crypto(pool_config, logger, Some(crypto));

Expand All @@ -1808,7 +1813,7 @@ mod tests {
let env = CanisterThresholdSigTestEnvironment::new(3, &mut rng);
let (complainer, _, t) = create_corrupted_transcript(&env, &mut rng);

let mut components = env.nodes.receivers(&t);
let mut components = env.nodes.filter_by_receivers(&t);

let complainer_crypto = components.next().unwrap().crypto();
let remaining_nodes: Vec<_> = components.collect();
Expand Down
17 changes: 13 additions & 4 deletions rs/consensus/src/ecdsa/signer.rs
Expand Up @@ -872,7 +872,12 @@ mod tests {
AlgorithmId::ThresholdEcdsaSecp256k1,
&mut rng,
);
let crypto = env.nodes.receivers(&sig_inputs).next().unwrap().crypto();
let crypto = env
.nodes
.filter_by_receivers(&sig_inputs)
.next()
.unwrap()
.crypto();
let (_, signer) =
create_signer_dependencies_with_crypto(pool_config, logger, Some(crypto));
let mut uid_generator = EcdsaUIDGenerator::new(subnet_test_id(1), Height::new(0));
Expand Down Expand Up @@ -1227,8 +1232,12 @@ mod tests {
);

let metrics = EcdsaPayloadMetrics::new(MetricsRegistry::new());
let crypto: Arc<dyn ConsensusCrypto> =
env.nodes.receivers(&sig_inputs).next().unwrap().crypto();
let crypto: Arc<dyn ConsensusCrypto> = env
.nodes
.filter_by_receivers(&sig_inputs)
.next()
.unwrap()
.crypto();

{
let sig_builder = EcdsaSignatureBuilderImpl::new(
Expand All @@ -1247,7 +1256,7 @@ mod tests {
// Generate signature shares and add to validated
let change_set = env
.nodes
.receivers(&sig_inputs)
.filter_by_receivers(&sig_inputs)
.map(|receiver| {
receiver.load_input_transcripts(&sig_inputs);
let share = receiver
Expand Down
10 changes: 7 additions & 3 deletions rs/consensus/src/ecdsa/test_utils.rs
Expand Up @@ -757,7 +757,11 @@ pub(crate) fn create_valid_transcript<R: Rng + CryptoRng>(
let dealings = env
.nodes
.support_dealings_from_all_receivers(dealings, &params);
let dealer = env.nodes.dealers(&params).next().expect("Empty dealers");
let dealer = env
.nodes
.filter_by_dealers(&params)
.next()
.expect("Empty dealers");
let idkg_transcript = dealer.create_transcript_or_panic(&params, &dealings);
(dealer.id(), params, idkg_transcript)
}
Expand Down Expand Up @@ -788,7 +792,7 @@ pub(crate) fn get_dealings_and_support(
let supports = dealings
.iter()
.flat_map(|(_, dealing)| {
env.nodes.receivers(&params).map(|signer| {
env.nodes.filter_by_receivers(&params).map(|signer| {
let c: Arc<dyn ConsensusCrypto> = signer.crypto();
let sig_share = c
.sign(dealing, signer.id(), params.registry_version())
Expand Down Expand Up @@ -841,7 +845,7 @@ pub(crate) fn create_dealing_with_payload<R: Rng + CryptoRng>(
&receivers,
rng,
);
let dealer = env.nodes.dealers(&params).next().unwrap();
let dealer = env.nodes.filter_by_dealers(&params).next().unwrap();
let dealing = dealer.create_dealing_or_panic(&params);
let mut content = create_dealing_content(transcript_id);
content.internal_dealing_raw = dealing.content.internal_dealing_raw;
Expand Down
30 changes: 21 additions & 9 deletions rs/crypto/benches/idkg.rs
Expand Up @@ -121,7 +121,9 @@ fn bench_verify_dealing_public<M: Measurement, R: RngCore + CryptoRng>(
group.bench_function(format!("verify_dealing_public_{mode}"), |bench| {
bench.iter_batched_ref(
|| {
let receiver = env.nodes.random_receiver(params.receivers(), rng);
let receiver = env
.nodes
.random_filtered_by_receivers(params.receivers(), rng);
let dealer = env.nodes.random_dealer(&params, rng);
let dealing = create_dealing(dealer, &params);
(receiver, dealing)
Expand All @@ -146,7 +148,9 @@ fn bench_verify_dealing_private<M: Measurement, R: RngCore + CryptoRng>(
group.bench_function(format!("verify_dealing_private_{mode}"), |bench| {
bench.iter_batched_ref(
|| {
let receiver = env.nodes.random_receiver(params.receivers(), rng);
let receiver = env
.nodes
.random_filtered_by_receivers(params.receivers(), rng);
let dealer = env.nodes.random_dealer(&params, rng);
let dealing = create_dealing(dealer, &params);
(receiver, dealing)
Expand Down Expand Up @@ -246,7 +250,9 @@ fn bench_create_transcript<M: Measurement, R: RngCore + CryptoRng>(
group.bench_function(format!("create_transcript_{mode}"), |bench| {
bench.iter_batched_ref(
|| {
let receiver = env.nodes.random_receiver(params.receivers(), rng);
let receiver = env
.nodes
.random_filtered_by_receivers(params.receivers(), rng);
let dealings = env.nodes.create_dealings(&params);
let dealings_with_receivers_support = env
.nodes
Expand Down Expand Up @@ -277,7 +283,9 @@ fn bench_verify_transcript<M: Measurement, R: RngCore + CryptoRng>(
let dealings_with_receivers_support = env
.nodes
.support_dealings_from_all_receivers(dealings, &params);
let receiver = env.nodes.random_receiver(params.receivers(), rng);
let receiver = env
.nodes
.random_filtered_by_receivers(params.receivers(), rng);
let transcript =
create_transcript_or_panic(receiver, &params, &dealings_with_receivers_support);
let other_receiver = other_receiver_or_same_if_only_one(
Expand Down Expand Up @@ -312,7 +320,9 @@ fn bench_load_transcript<M: Measurement, R: RngCore + CryptoRng>(
let dealings_with_receivers_support = env
.nodes
.support_dealings_from_all_receivers(dealings, &params);
let receiver = env.nodes.random_receiver(params.receivers(), rng);
let receiver = env
.nodes
.random_filtered_by_receivers(params.receivers(), rng);
let transcript =
create_transcript_or_panic(receiver, &params, &dealings_with_receivers_support);
let other_receiver = other_receiver_or_same_if_only_one(
Expand Down Expand Up @@ -344,7 +354,9 @@ fn bench_retain_active_transcripts<M: Measurement, R: RngCore + CryptoRng>(
// For this benchmark we need a node which acts as receiver in *all* created transcripts.
// This is the case because all nodes in CanisterThresholdSigTestEnvironment act as receivers
// and all involved IDkgTranscriptParams include all nodes from CanisterThresholdSigTestEnvironment.
let receiver = env.nodes.random_receiver(&key_transcript.receivers, rng);
let receiver = env
.nodes
.random_filtered_by_receivers(&key_transcript.receivers, rng);
load_transcript_or_panic(receiver, &key_transcript);

let num_transcripts_to_delete = num_pre_sig_quadruples * 4;
Expand Down Expand Up @@ -418,7 +430,7 @@ fn bench_open_transcript<M: Measurement, R: RngCore + CryptoRng>(
let complaint_context =
context.setup_outputs_for_complaint(&env, test_case.alg, rng);
let opener = {
env.nodes.random_receiver_excluding(
env.nodes.random_filtered_by_receivers_excluding(
complaint_context.complainer,
complaint_context.transcript.receivers.clone(),
rng,
Expand Down Expand Up @@ -462,7 +474,7 @@ fn bench_verify_opening<M: Measurement, R: RngCore + CryptoRng>(
verifier,
complainer,
} = complaint_context;
let opener = env.nodes.random_receiver_excluding(
let opener = env.nodes.random_filtered_by_receivers_excluding(
complainer,
transcript.receivers.clone(),
rng,
Expand Down Expand Up @@ -721,7 +733,7 @@ fn other_receiver_or_same_if_only_one<'a, R: RngCore + CryptoRng>(
match receivers.get().len() {
0 => panic!("IDkgReceivers is guaranteed to be non-empty"),
1 => nodes.iter().next().expect("one node"),
_ => nodes.random_receiver_excluding(exclusion, receivers, rng),
_ => nodes.random_filtered_by_receivers_excluding(exclusion, receivers, rng),
}
}

Expand Down
12 changes: 9 additions & 3 deletions rs/crypto/benches/tecdsa.rs
Expand Up @@ -55,7 +55,9 @@ fn bench_sign_share<M: Measurement, R: RngCore + CryptoRng>(
let (dealers, receivers) =
env.choose_dealers_and_receivers(&IDkgParticipants::AllNodesAsDealersAndReceivers, rng);
let key_transcript = generate_key_transcript(&env, &dealers, &receivers, test_case.alg(), rng);
let signer = env.nodes.random_receiver(&key_transcript.receivers, rng);
let signer = env
.nodes
.random_filtered_by_receivers(&key_transcript.receivers, rng);

group.bench_function(format!("sign_share_{vault_type:?}"), |bench| {
bench.iter_batched_ref(
Expand Down Expand Up @@ -118,10 +120,14 @@ fn bench_verify_sig_share<M: Measurement, R: RngCore + CryptoRng>(
test_case.alg(),
rng,
);
let signer = env.nodes.random_receiver(&key_transcript.receivers, rng);
let signer = env
.nodes
.random_filtered_by_receivers(&key_transcript.receivers, rng);
signer.load_input_transcripts(&inputs);
let sig_share = sign_share(signer, &inputs);
let verifier = env.nodes.random_receiver(&key_transcript.receivers, rng);
let verifier = env
.nodes
.random_filtered_by_receivers(&key_transcript.receivers, rng);
(verifier, signer.id(), inputs, sig_share)
},
|(verifier, signer_id, inputs, sig_share)| {
Expand Down

0 comments on commit 6cddb86

Please sign in to comment.