Skip to content

Commit 8c8faaf

Browse files
authored
RUST-1888 Remove incidental mutability from EventBuffer (#1111)
1 parent c3f4835 commit 8c8faaf

File tree

10 files changed

+82
-181
lines changed

10 files changed

+82
-181
lines changed

src/client/session/test.rs

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -383,17 +383,14 @@ async fn session_usage() {
383383
return;
384384
}
385385

386-
#[allow(deprecated)]
387386
async fn session_usage_test<F, G>(command_name: &str, operation: F)
388387
where
389388
F: Fn(EventClient) -> G,
390389
G: Future<Output = ()>,
391390
{
392391
let client = Client::test_builder().monitor_events().build().await;
393392
operation(client.clone()).await;
394-
let mut events = client.events.clone();
395-
#[allow(deprecated)]
396-
let (command_started, _) = events.get_successful_command_execution(command_name);
393+
let (command_started, _) = client.events.get_successful_command_execution(command_name);
397394
assert!(
398395
command_started.command.get("lsid").is_some(),
399396
"implicit session not passed to {}",
@@ -427,11 +424,7 @@ async fn implicit_session_returned_after_immediate_exhaust() {
427424
let mut cursor = coll.find(doc! {}).await.expect("find should succeed");
428425
assert!(matches!(cursor.next().await, Some(Ok(_))));
429426

430-
#[allow(deprecated)]
431-
let (find_started, _) = {
432-
let mut events = client.events.clone();
433-
events.get_successful_command_execution("find")
434-
};
427+
let (find_started, _) = client.events.get_successful_command_execution("find");
435428
let session_id = find_started
436429
.command
437430
.get("lsid")
@@ -480,11 +473,7 @@ async fn implicit_session_returned_after_exhaust_by_get_more() {
480473
assert!(matches!(cursor.next().await, Some(Ok(_))));
481474
}
482475

483-
#[allow(deprecated)]
484-
let (find_started, _) = {
485-
let mut events = client.events.clone();
486-
events.get_successful_command_execution("find")
487-
};
476+
let (find_started, _) = client.events.get_successful_command_execution("find");
488477

489478
let session_id = find_started
490479
.command
@@ -545,6 +534,8 @@ async fn find_and_getmore_share_session() {
545534
coll: &Collection<Document>,
546535
read_preference: ReadPreference,
547536
) {
537+
client.events.clone().clear_cached_events();
538+
548539
let options = FindOptions::builder()
549540
.batch_size(2)
550541
.selection_criteria(SelectionCriteria::ReadPreference(read_preference.clone()))
@@ -582,17 +573,14 @@ async fn find_and_getmore_share_session() {
582573
});
583574
}
584575

585-
let mut events = client.events.clone();
586-
#[allow(deprecated)]
587-
let (find_started, _) = events.get_successful_command_execution("find");
576+
let (find_started, _) = client.events.get_successful_command_execution("find");
588577
let session_id = find_started
589578
.command
590579
.get("lsid")
591580
.expect("find should use implicit session");
592581
assert!(session_id != &Bson::Null);
593582

594-
#[allow(deprecated)]
595-
let (command_started, _) = events.get_successful_command_execution("getMore");
583+
let (command_started, _) = client.events.get_successful_command_execution("getMore");
596584
let getmore_session_id = command_started
597585
.command
598586
.get("lsid")

src/client/session/test/causal_consistency.rs

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,8 @@ async fn first_read_no_after_cluser_time() {
144144
}
145145

146146
for op in all_session_ops().filter(|o| o.is_read) {
147+
client.events.clone().clear_cached_events();
148+
147149
let mut session = client
148150
.start_session()
149151
.causal_consistency(true)
@@ -160,10 +162,7 @@ async fn first_read_no_after_cluser_time() {
160162
.await
161163
.unwrap_or_else(|e| panic!("{} failed: {}", name, e));
162164
#[allow(deprecated)]
163-
let (started, _) = {
164-
let mut events = client.events.clone();
165-
events.get_successful_command_execution(name)
166-
};
165+
let (started, _) = client.events.get_successful_command_execution(name);
167166

168167
// assert that no read concern was set.
169168
started.command.get_document("readConcern").unwrap_err();
@@ -181,6 +180,8 @@ async fn first_op_update_op_time() {
181180
}
182181

183182
for op in all_session_ops() {
183+
client.events.clone().clear_cached_events();
184+
184185
let mut session = client
185186
.start_session()
186187
.causal_consistency(true)
@@ -197,15 +198,12 @@ async fn first_op_update_op_time() {
197198
.await
198199
.unwrap();
199200

200-
#[allow(deprecated)]
201-
let event = {
202-
let mut events = client.events.clone();
203-
events
204-
.get_command_events(&[name])
205-
.into_iter()
206-
.find(|e| matches!(e, CommandEvent::Succeeded(_) | CommandEvent::Failed(_)))
207-
.unwrap_or_else(|| panic!("no event found for {}", name))
208-
};
201+
let event = client
202+
.events
203+
.get_command_events(&[name])
204+
.into_iter()
205+
.find(|e| matches!(e, CommandEvent::Succeeded(_) | CommandEvent::Failed(_)))
206+
.unwrap_or_else(|| panic!("no event found for {}", name));
209207

210208
match event {
211209
CommandEvent::Succeeded(s) => {
@@ -490,11 +488,7 @@ async fn omit_cluster_time_standalone() {
490488

491489
coll.find_one(doc! {}).await.unwrap();
492490

493-
#[allow(deprecated)]
494-
let (started, _) = {
495-
let mut events = client.events.clone();
496-
events.get_successful_command_execution("find")
497-
};
491+
let (started, _) = client.events.get_successful_command_execution("find");
498492
started.command.get_document("$clusterTime").unwrap_err();
499493
}
500494

@@ -513,9 +507,6 @@ async fn cluster_time_sent_in_commands() {
513507

514508
coll.find_one(doc! {}).await.unwrap();
515509

516-
#[allow(deprecated)]
517-
let mut events = client.events.clone();
518-
#[allow(deprecated)]
519-
let (started, _) = events.get_successful_command_execution("find");
510+
let (started, _) = client.events.get_successful_command_execution("find");
520511
started.command.get_document("$clusterTime").unwrap();
521512
}

src/test/change_stream.rs

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -82,18 +82,15 @@ async fn tracks_resume_token() -> Result<()> {
8282
tokens.push(stream.resume_token().unwrap().parsed()?);
8383
}
8484

85-
#[allow(deprecated)]
86-
let events: Vec<_> = {
87-
let mut events = client.events.clone();
88-
events
89-
.get_command_events(&["aggregate", "getMore"])
90-
.into_iter()
91-
.filter_map(|ev| match ev {
92-
CommandEvent::Succeeded(s) => Some(s),
93-
_ => None,
94-
})
95-
.collect()
96-
};
85+
let events: Vec<_> = client
86+
.events
87+
.get_command_events(&["aggregate", "getMore"])
88+
.into_iter()
89+
.filter_map(|ev| match ev {
90+
CommandEvent::Succeeded(s) => Some(s),
91+
_ => None,
92+
})
93+
.collect();
9794
let mut expected = vec![];
9895
// Token from `aggregate`
9996
if let Some(initial) = events[0]
@@ -229,11 +226,7 @@ async fn empty_batch_not_closed() -> Result<()> {
229226
coll.insert_one(doc! {}).await?;
230227
stream.next().await.transpose()?;
231228

232-
#[allow(deprecated)]
233-
let events = {
234-
let mut events = client.events.clone();
235-
events.get_command_events(&["aggregate", "getMore"])
236-
};
229+
let events = client.events.get_command_events(&["aggregate", "getMore"]);
237230
let cursor_id = match &events[1] {
238231
CommandEvent::Succeeded(CommandSucceededEvent { reply, .. }) => {
239232
reply.get_document("cursor")?.get_i64("id")?
@@ -315,11 +308,7 @@ async fn resume_start_at_operation_time() -> Result<()> {
315308
coll.insert_one(doc! { "_id": 2 }).await?;
316309
stream.next().await.transpose()?;
317310

318-
#[allow(deprecated)]
319-
let events = {
320-
let mut events = client.events.clone();
321-
events.get_command_events(&["aggregate"])
322-
};
311+
let events = client.events.get_command_events(&["aggregate"]);
323312
assert_eq!(events.len(), 4);
324313

325314
fn has_saot(command: &Document) -> Result<bool> {
@@ -362,11 +351,7 @@ async fn batch_end_resume_token() -> Result<()> {
362351

363352
assert_eq!(stream.next_if_any().await?, None);
364353
let token = stream.resume_token().unwrap().parsed()?;
365-
#[allow(deprecated)]
366-
let commands = {
367-
let mut events = client.events.clone();
368-
events.get_command_events(&["aggregate", "getMore"])
369-
};
354+
let commands = client.events.get_command_events(&["aggregate", "getMore"]);
370355
assert!(matches!(commands.last(), Some(
371356
CommandEvent::Succeeded(CommandSucceededEvent {
372357
reply,

src/test/coll.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -696,10 +696,7 @@ async fn no_read_preference_to_standalone() {
696696
.await
697697
.unwrap();
698698

699-
#[allow(deprecated)]
700-
let mut events = client.events.clone();
701-
#[allow(deprecated)]
702-
let command_started = events.get_successful_command_execution("find").0;
699+
let command_started = client.events.get_successful_command_execution("find").0;
703700

704701
assert!(!command_started.command.contains_key("$readPreference"));
705702
}

src/test/cursor.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -138,15 +138,12 @@ async fn batch_exhaustion() {
138138
assert_eq!(4, v.len());
139139

140140
// Assert that the last `getMore` response always has id 0, i.e. is exhausted.
141-
#[allow(deprecated)]
142-
let replies: Vec<_> = {
143-
let mut events = client.events.clone();
144-
events
145-
.get_command_events(&["getMore"])
146-
.into_iter()
147-
.filter_map(|e| e.as_command_succeeded().map(|e| e.reply.clone()))
148-
.collect()
149-
};
141+
let replies: Vec<_> = client
142+
.events
143+
.get_command_events(&["getMore"])
144+
.into_iter()
145+
.filter_map(|e| e.as_command_succeeded().map(|e| e.reply.clone()))
146+
.collect();
150147
let last = replies.last().unwrap();
151148
let cursor = last.get_document("cursor").unwrap();
152149
let id = cursor.get_i64("id").unwrap();

src/test/spec/retryable_reads.rs

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -200,11 +200,7 @@ async fn retry_read_different_mongos() {
200200
.find(doc! {})
201201
.await;
202202
assert!(result.is_err());
203-
#[allow(deprecated)]
204-
let events = {
205-
let mut events = client.events.clone();
206-
events.get_command_events(&["find"])
207-
};
203+
let events = client.events.get_command_events(&["find"]);
208204
assert!(
209205
matches!(
210206
&events[..],
@@ -261,11 +257,7 @@ async fn retry_read_same_mongos() {
261257
.find(doc! {})
262258
.await;
263259
assert!(result.is_ok(), "{:?}", result);
264-
#[allow(deprecated)]
265-
let events = {
266-
let mut events = client.events.clone();
267-
events.get_command_events(&["find"])
268-
};
260+
let events = client.events.get_command_events(&["find"]);
269261
assert!(
270262
matches!(
271263
&events[..],

src/test/spec/retryable_writes.rs

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@ async fn transaction_ids_excluded() {
4545

4646
let coll = client.init_db_and_coll(function_name!(), "coll").await;
4747

48-
#[allow(deprecated)]
49-
let mut events = client.events.clone();
50-
let mut excludes_txn_number = move |command_name: &str| -> bool {
51-
#[allow(deprecated)]
52-
let (started, _) = events.get_successful_command_execution(command_name);
53-
!started.command.contains_key("txnNumber")
48+
let excludes_txn_number = {
49+
let events = client.events.clone();
50+
move |command_name: &str| -> bool {
51+
let (started, _) = events.get_successful_command_execution(command_name);
52+
events.clone().clear_cached_events();
53+
!started.command.contains_key("txnNumber")
54+
}
5455
};
5556

5657
coll.update_many(doc! {}, doc! { "$set": doc! { "x": 1 } })
@@ -93,12 +94,13 @@ async fn transaction_ids_included() {
9394

9495
let coll = client.init_db_and_coll(function_name!(), "coll").await;
9596

96-
#[allow(deprecated)]
97-
let mut events = client.events.clone();
98-
let mut includes_txn_number = move |command_name: &str| -> bool {
99-
#[allow(deprecated)]
100-
let (started, _) = events.get_successful_command_execution(command_name);
101-
started.command.contains_key("txnNumber")
97+
let includes_txn_number = {
98+
let events = client.events.clone();
99+
move |command_name: &str| -> bool {
100+
let (started, _) = events.get_successful_command_execution(command_name);
101+
events.clone().clear_cached_events();
102+
started.command.contains_key("txnNumber")
103+
}
102104
};
103105

104106
coll.insert_one(doc! { "x": 1 }).await.unwrap();
@@ -454,11 +456,7 @@ async fn retry_write_different_mongos() {
454456
.insert_one(doc! {})
455457
.await;
456458
assert!(result.is_err());
457-
#[allow(deprecated)]
458-
let events = {
459-
let mut events = client.events.clone();
460-
events.get_command_events(&["insert"])
461-
};
459+
let events = client.events.get_command_events(&["insert"]);
462460
assert!(
463461
matches!(
464462
&events[..],
@@ -516,11 +514,7 @@ async fn retry_write_same_mongos() {
516514
.insert_one(doc! {})
517515
.await;
518516
assert!(result.is_ok(), "{:?}", result);
519-
#[allow(deprecated)]
520-
let events = {
521-
let mut events = client.events.clone();
522-
events.get_command_events(&["insert"])
523-
};
517+
let events = client.events.get_command_events(&["insert"]);
524518
assert!(
525519
matches!(
526520
&events[..],

src/test/spec/write_error.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,7 @@ async fn details() {
3030
ErrorKind::Write(WriteFailure::WriteError(e)) => e,
3131
_ => panic!("expected WriteError, got {:?}", err.kind),
3232
};
33-
#[allow(deprecated)]
34-
let (_, event) = {
35-
let mut events = client.events.clone();
36-
events.get_successful_command_execution("insert")
37-
};
33+
let (_, event) = client.events.get_successful_command_execution("insert");
3834
assert_eq!(write_err.code, 121 /* DocumentValidationFailure */);
3935
assert_eq!(
4036
&write_err.details.unwrap(),

src/test/util/event.rs

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,16 @@ use crate::{
66
bson::doc,
77
event::{
88
cmap::CmapEvent,
9-
command::{CommandEvent, CommandStartedEvent, CommandSucceededEvent},
9+
command::{CommandEvent, CommandSucceededEvent},
1010
sdam::SdamEvent,
1111
},
1212
test::get_client_options,
1313
Client,
1414
};
1515

16+
#[cfg(feature = "in-use-encryption-unstable")]
17+
use crate::event::command::CommandStartedEvent;
18+
1619
#[derive(Clone, Debug, From, Serialize)]
1720
#[serde(untagged)]
1821
#[allow(clippy::large_enum_variant)]
@@ -89,21 +92,6 @@ impl CommandEvent {
8992
}
9093
}
9194

92-
pub(crate) fn request_id(&self) -> i32 {
93-
match self {
94-
CommandEvent::Started(event) => event.request_id,
95-
CommandEvent::Failed(event) => event.request_id,
96-
CommandEvent::Succeeded(event) => event.request_id,
97-
}
98-
}
99-
100-
pub(crate) fn as_command_started(&self) -> Option<&CommandStartedEvent> {
101-
match self {
102-
CommandEvent::Started(e) => Some(e),
103-
_ => None,
104-
}
105-
}
106-
10795
pub(crate) fn as_command_succeeded(&self) -> Option<&CommandSucceededEvent> {
10896
match self {
10997
CommandEvent::Succeeded(e) => Some(e),

0 commit comments

Comments
 (0)