Skip to content

Commit c5dbe73

Browse files
committed
test: Testing the cross-process event cache store.
1 parent 9004932 commit c5dbe73

File tree

3 files changed

+82
-1
lines changed

3 files changed

+82
-1
lines changed

crates/matrix-sdk-base/src/event_cache_store/integration_tests.rs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,3 +187,80 @@ macro_rules! event_cache_store_integration_tests {
187187
}
188188
};
189189
}
190+
191+
#[allow(unused_macros)]
192+
#[macro_export]
193+
macro_rules! event_cache_store_integration_tests_time {
194+
() => {
195+
mod event_cache_store_integration_tests_time {
196+
use matrix_sdk_test::async_test;
197+
use $crate::event_cache_store::IntoEventCacheStore;
198+
199+
use super::get_event_cache_store;
200+
201+
#[async_test]
202+
async fn test_lease_locks() {
203+
assert!(true);
204+
let event_cache_store =
205+
get_event_cache_store().await.unwrap().into_event_cache_store();
206+
207+
/*
208+
let (_account, store) = get_loaded_store("lease_locks").await;
209+
210+
let acquired0 = store.try_take_leased_lock(0, "key", "alice").await.unwrap();
211+
assert!(acquired0);
212+
213+
// Should extend the lease automatically (same holder).
214+
let acquired2 = store.try_take_leased_lock(300, "key", "alice").await.unwrap();
215+
assert!(acquired2);
216+
217+
// Should extend the lease automatically (same holder + time is ok).
218+
let acquired3 = store.try_take_leased_lock(300, "key", "alice").await.unwrap();
219+
assert!(acquired3);
220+
221+
// Another attempt at taking the lock should fail, because it's taken.
222+
let acquired4 = store.try_take_leased_lock(300, "key", "bob").await.unwrap();
223+
assert!(!acquired4);
224+
225+
// Even if we insist.
226+
let acquired5 = store.try_take_leased_lock(300, "key", "bob").await.unwrap();
227+
assert!(!acquired5);
228+
229+
// That's a nice test we got here, go take a little nap.
230+
tokio::time::sleep(Duration::from_millis(50)).await;
231+
232+
// Still too early.
233+
let acquired55 = store.try_take_leased_lock(300, "key", "bob").await.unwrap();
234+
assert!(!acquired55);
235+
236+
// Ok you can take another nap then.
237+
tokio::time::sleep(Duration::from_millis(250)).await;
238+
239+
// At some point, we do get the lock.
240+
let acquired6 = store.try_take_leased_lock(0, "key", "bob").await.unwrap();
241+
assert!(acquired6);
242+
243+
tokio::time::sleep(Duration::from_millis(1)).await;
244+
245+
// The other gets it almost immediately too.
246+
let acquired7 = store.try_take_leased_lock(0, "key", "alice").await.unwrap();
247+
assert!(acquired7);
248+
249+
tokio::time::sleep(Duration::from_millis(1)).await;
250+
251+
// But when we take a longer lease...
252+
let acquired8 = store.try_take_leased_lock(300, "key", "bob").await.unwrap();
253+
assert!(acquired8);
254+
255+
// It blocks the other user.
256+
let acquired9 = store.try_take_leased_lock(300, "key", "alice").await.unwrap();
257+
assert!(!acquired9);
258+
259+
// We can hold onto our lease.
260+
let acquired10 = store.try_take_leased_lock(300, "key", "bob").await.unwrap();
261+
assert!(acquired10);
262+
*/
263+
}
264+
}
265+
};
266+
}

crates/matrix-sdk-base/src/event_cache_store/memory_store.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,5 @@ mod tests {
168168
}
169169

170170
event_cache_store_integration_tests!();
171+
event_cache_store_integration_tests_time!();
171172
}

crates/matrix-sdk-sqlite/src/event_cache_store.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ mod tests {
254254

255255
use matrix_sdk_base::{
256256
event_cache_store::{EventCacheStore, EventCacheStoreError},
257-
event_cache_store_integration_tests,
257+
event_cache_store_integration_tests, event_cache_store_integration_tests_time,
258258
media::{MediaFormat, MediaRequest, MediaThumbnailSettings},
259259
};
260260
use matrix_sdk_test::async_test;
@@ -278,6 +278,7 @@ mod tests {
278278
}
279279

280280
event_cache_store_integration_tests!();
281+
event_cache_store_integration_tests_time!();
281282

282283
async fn get_event_cache_store_content_sorted_by_last_access(
283284
event_cache_store: &SqliteEventCacheStore,
@@ -359,6 +360,7 @@ mod encrypted_tests {
359360

360361
use matrix_sdk_base::{
361362
event_cache_store::EventCacheStoreError, event_cache_store_integration_tests,
363+
event_cache_store_integration_tests_time,
362364
};
363365
use once_cell::sync::Lazy;
364366
use tempfile::{tempdir, TempDir};
@@ -383,4 +385,5 @@ mod encrypted_tests {
383385
}
384386

385387
event_cache_store_integration_tests!();
388+
event_cache_store_integration_tests_time!();
386389
}

0 commit comments

Comments
 (0)