Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Ensure cargo bench still functions. #14943

Merged
merged 5 commits into from
Jan 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -566,6 +566,29 @@ jobs:

- run: cargo test

# We want to ensure that the cargo benchmarks still compile, which requires a
# nightly compiler.
cargo-bench:
if: ${{ needs.changes.outputs.rust == 'true' }}
runs-on: ubuntu-latest
needs:
- linting-done
- changes

steps:
- uses: actions/checkout@v3

- name: Install Rust
# There don't seem to be versioned releases of this action per se: for each rust
# version there is a branch which gets constantly rebased on top of master.
# We pin to a specific commit for paranoia's sake.
uses: dtolnay/rust-toolchain@e645b0cf01249a964ec099494d38d2da0f0b349f
with:
toolchain: nightly-2022-12-01
- uses: Swatinem/rust-cache@v2

- run: cargo bench --no-run

# a job which marks all the other jobs as complete, thus allowing PRs to be merged.
tests-done:
if: ${{ always() }}
Expand All @@ -577,6 +600,7 @@ jobs:
- portdb
- complement
- cargo-test
- cargo-bench
runs-on: ubuntu-latest
steps:
- uses: matrix-org/done-action@v2
Expand All @@ -588,3 +612,4 @@ jobs:
skippable: |
lint-newsfile
cargo-test
cargo-bench
1 change: 1 addition & 0 deletions changelog.d/14943.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Experimental support for [MSC3952](https://github.com/matrix-org/matrix-spec-proposals/pull/3952): intentional mentions.
10 changes: 10 additions & 0 deletions rust/benches/evaluator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
// limitations under the License.

#![feature(test)]
use std::collections::BTreeSet;
use synapse::push::{
evaluator::PushRuleEvaluator, Condition, EventMatchCondition, FilteredPushRules, PushRules,
};
Expand All @@ -32,6 +33,8 @@ fn bench_match_exact(b: &mut Bencher) {

let eval = PushRuleEvaluator::py_new(
flattened_keys,
BTreeSet::new(),
false,
10,
Some(0),
Default::default(),
Expand Down Expand Up @@ -68,6 +71,8 @@ fn bench_match_word(b: &mut Bencher) {

let eval = PushRuleEvaluator::py_new(
flattened_keys,
BTreeSet::new(),
false,
10,
Some(0),
Default::default(),
Expand Down Expand Up @@ -104,6 +109,8 @@ fn bench_match_word_miss(b: &mut Bencher) {

let eval = PushRuleEvaluator::py_new(
flattened_keys,
BTreeSet::new(),
false,
10,
Some(0),
Default::default(),
Expand Down Expand Up @@ -140,6 +147,8 @@ fn bench_eval_message(b: &mut Bencher) {

let eval = PushRuleEvaluator::py_new(
flattened_keys,
BTreeSet::new(),
false,
10,
Some(0),
Default::default(),
Expand All @@ -156,6 +165,7 @@ fn bench_eval_message(b: &mut Bencher) {
false,
false,
false,
false,
);

b.iter(|| eval.run(&rules, Some("bob"), Some("person")));
Expand Down