1 // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 // Copyright by contributors to this project.
3 // SPDX-License-Identifier: (Apache-2.0 OR MIT)
4 
5 use criterion::{BatchSize, BenchmarkId, Criterion};
6 use mls_rs::{test_utils::benchmarks::load_group_states, CipherSuite};
7 
bench(c: &mut Criterion)8 fn bench(c: &mut Criterion) {
9     let cipher_suite = CipherSuite::CURVE25519_AES128;
10     let group_states = load_group_states(cipher_suite);
11     let mut bench_group = c.benchmark_group("group_receive_commit");
12 
13     for (i, mut group_states) in group_states.into_iter().enumerate() {
14         bench_group.bench_with_input(
15             BenchmarkId::new(format!("{cipher_suite:?}"), i),
16             &i,
17             |b, _| {
18                 b.iter_batched_ref(
19                     || {
20                         let commit = group_states.sender.commit(Vec::new()).unwrap();
21                         group_states.sender.clear_pending_commit();
22                         (commit, group_states.receiver.clone())
23                     },
24                     move |(commit, receiver)| {
25                         receiver
26                             .process_incoming_message(commit.commit_message.clone())
27                             .unwrap();
28                     },
29                     BatchSize::SmallInput,
30                 )
31             },
32         );
33     }
34 
35     bench_group.finish();
36 }
37 
38 criterion::criterion_group!(benches, bench);
39 criterion::criterion_main!(benches);
40