fix: defer blocked deliveries, claim owner token
This commit is contained in:
@@ -189,6 +189,33 @@ mod identity {
|
||||
|
||||
assert!(envelope.id().is_none());
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
async fn defer_reschedules_without_counting_an_attempt() {
|
||||
let (q, pool) = queue().await;
|
||||
q.publish(&event()).await.unwrap();
|
||||
let envelope = q.consume().next().await.unwrap().unwrap();
|
||||
|
||||
envelope
|
||||
.defer(std::time::Duration::from_secs(600))
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let (status, attempts, claimed, due_in): (String, i32, Option<String>, i64) =
|
||||
sqlx::query_as(
|
||||
"SELECT status, attempts, claimed_at,
|
||||
CAST(strftime('%s', next_attempt_at) AS INTEGER)
|
||||
- CAST(strftime('%s', 'now') AS INTEGER)
|
||||
FROM event_queue",
|
||||
)
|
||||
.fetch_one(&pool)
|
||||
.await
|
||||
.unwrap();
|
||||
assert_eq!(status, "pending");
|
||||
assert_eq!(attempts, 0, "a deferral is not a failed attempt");
|
||||
assert!(claimed.is_none(), "claim is released");
|
||||
assert!((595..=600).contains(&due_in), "due in {due_in}s");
|
||||
}
|
||||
}
|
||||
|
||||
mod lease {
|
||||
|
||||
Reference in New Issue
Block a user