@@ -187,3 +187,80 @@ macro_rules! event_cache_store_integration_tests {
187
187
}
188
188
} ;
189
189
}
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
+ }
0 commit comments