Fixup tests for LQ to prevent >60s tests (#3768)
This commit is contained in:
parent
722e7e61b2
commit
390b2496fe
2 changed files with 45 additions and 19 deletions
|
@ -6,6 +6,8 @@ use futures::TryStreamExt;
|
||||||
use surrealdb::Action;
|
use surrealdb::Action;
|
||||||
use surrealdb::Notification;
|
use surrealdb::Notification;
|
||||||
|
|
||||||
|
const LQ_TIMEOUT: Duration = Duration::from_secs(10);
|
||||||
|
|
||||||
#[test_log::test(tokio::test)]
|
#[test_log::test(tokio::test)]
|
||||||
async fn live_select_table() {
|
async fn live_select_table() {
|
||||||
let (permit, db) = new_db().await;
|
let (permit, db) = new_db().await;
|
||||||
|
@ -21,7 +23,8 @@ async fn live_select_table() {
|
||||||
// Create a record
|
// Create a record
|
||||||
let created: Vec<RecordId> = db.create(table).await.unwrap();
|
let created: Vec<RecordId> = db.create(table).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// The returned record should match the created record
|
// The returned record should match the created record
|
||||||
assert_eq!(created, vec![notification.data.clone()]);
|
assert_eq!(created, vec![notification.data.clone()]);
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
@ -31,7 +34,8 @@ async fn live_select_table() {
|
||||||
let _: Option<RecordId> =
|
let _: Option<RecordId> =
|
||||||
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// It should be updated
|
// It should be updated
|
||||||
assert_eq!(notification.action, Action::Update);
|
assert_eq!(notification.action, Action::Update);
|
||||||
|
|
||||||
|
@ -52,7 +56,7 @@ async fn live_select_table() {
|
||||||
// Create a record
|
// Create a record
|
||||||
db.create(Resource::from(&table)).await.unwrap();
|
db.create(Resource::from(&table)).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification = users.next().await.unwrap();
|
let notification = tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap();
|
||||||
// The returned record should be an object
|
// The returned record should be an object
|
||||||
assert!(notification.data.is_object());
|
assert!(notification.data.is_object());
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
@ -77,7 +81,8 @@ async fn live_select_record_id() {
|
||||||
// Create a record
|
// Create a record
|
||||||
let created: Option<RecordId> = db.create(record_id).await.unwrap();
|
let created: Option<RecordId> = db.create(record_id).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.try_next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// The returned record should match the created record
|
// The returned record should match the created record
|
||||||
assert_eq!(created, Some(notification.data.clone()));
|
assert_eq!(created, Some(notification.data.clone()));
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
@ -87,14 +92,16 @@ async fn live_select_record_id() {
|
||||||
let _: Option<RecordId> =
|
let _: Option<RecordId> =
|
||||||
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.try_next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// It should be updated
|
// It should be updated
|
||||||
assert_eq!(notification.action, Action::Update);
|
assert_eq!(notification.action, Action::Update);
|
||||||
|
|
||||||
// Delete the record
|
// Delete the record
|
||||||
let _: Option<RecordId> = db.delete(¬ification.data.id).await.unwrap();
|
let _: Option<RecordId> = db.delete(¬ification.data.id).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.try_next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// It should be deleted
|
// It should be deleted
|
||||||
assert_eq!(notification.action, Action::Delete);
|
assert_eq!(notification.action, Action::Delete);
|
||||||
}
|
}
|
||||||
|
@ -108,7 +115,8 @@ async fn live_select_record_id() {
|
||||||
// Create a record
|
// Create a record
|
||||||
db.create(Resource::from(record_id)).await.unwrap();
|
db.create(Resource::from(record_id)).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification = users.next().await.unwrap();
|
let notification: Notification<Value> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap();
|
||||||
// The returned record should be an object
|
// The returned record should be an object
|
||||||
assert!(notification.data.is_object());
|
assert!(notification.data.is_object());
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
@ -133,7 +141,8 @@ async fn live_select_record_ranges() {
|
||||||
// Create a record
|
// Create a record
|
||||||
let created: Option<RecordId> = db.create((table, "jane")).await.unwrap();
|
let created: Option<RecordId> = db.create((table, "jane")).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.try_next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// The returned record should match the created record
|
// The returned record should match the created record
|
||||||
assert_eq!(created, Some(notification.data.clone()));
|
assert_eq!(created, Some(notification.data.clone()));
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
@ -143,14 +152,16 @@ async fn live_select_record_ranges() {
|
||||||
let _: Option<RecordId> =
|
let _: Option<RecordId> =
|
||||||
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.try_next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// It should be updated
|
// It should be updated
|
||||||
assert_eq!(notification.action, Action::Update);
|
assert_eq!(notification.action, Action::Update);
|
||||||
|
|
||||||
// Delete the record
|
// Delete the record
|
||||||
let _: Option<RecordId> = db.delete(¬ification.data.id).await.unwrap();
|
let _: Option<RecordId> = db.delete(¬ification.data.id).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.try_next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// It should be deleted
|
// It should be deleted
|
||||||
assert_eq!(notification.action, Action::Delete);
|
assert_eq!(notification.action, Action::Delete);
|
||||||
}
|
}
|
||||||
|
@ -165,7 +176,8 @@ async fn live_select_record_ranges() {
|
||||||
// Create a record
|
// Create a record
|
||||||
db.create(Resource::from((table, "job"))).await.unwrap();
|
db.create(Resource::from((table, "job"))).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification = users.next().await.unwrap();
|
let notification: Notification<Value> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap();
|
||||||
// The returned record should be an object
|
// The returned record should be an object
|
||||||
assert!(notification.data.is_object());
|
assert!(notification.data.is_object());
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
@ -195,7 +207,8 @@ async fn live_select_query() {
|
||||||
// Create a record
|
// Create a record
|
||||||
let created: Vec<RecordId> = db.create(table).await.unwrap();
|
let created: Vec<RecordId> = db.create(table).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// The returned record should match the created record
|
// The returned record should match the created record
|
||||||
assert_eq!(created, vec![notification.data.clone()]);
|
assert_eq!(created, vec![notification.data.clone()]);
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
@ -205,14 +218,17 @@ async fn live_select_query() {
|
||||||
let _: Option<RecordId> =
|
let _: Option<RecordId> =
|
||||||
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.next().await.unwrap().unwrap();
|
let notification =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
|
|
||||||
// It should be updated
|
// It should be updated
|
||||||
assert_eq!(notification.action, Action::Update);
|
assert_eq!(notification.action, Action::Update);
|
||||||
|
|
||||||
// Delete the record
|
// Delete the record
|
||||||
let _: Option<RecordId> = db.delete(¬ification.data.id).await.unwrap();
|
let _: Option<RecordId> = db.delete(¬ification.data.id).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// It should be deleted
|
// It should be deleted
|
||||||
assert_eq!(notification.action, Action::Delete);
|
assert_eq!(notification.action, Action::Delete);
|
||||||
}
|
}
|
||||||
|
@ -231,7 +247,8 @@ async fn live_select_query() {
|
||||||
// Create a record
|
// Create a record
|
||||||
db.create(Resource::from(&table)).await.unwrap();
|
db.create(Resource::from(&table)).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification = users.next().await.unwrap();
|
let notification = tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap();
|
||||||
|
|
||||||
// The returned record should be an object
|
// The returned record should be an object
|
||||||
assert!(notification.data.is_object());
|
assert!(notification.data.is_object());
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
@ -252,7 +269,8 @@ async fn live_select_query() {
|
||||||
// Create a record
|
// Create a record
|
||||||
let created: Vec<RecordId> = db.create(table).await.unwrap();
|
let created: Vec<RecordId> = db.create(table).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// The returned record should match the created record
|
// The returned record should match the created record
|
||||||
assert_eq!(created, vec![notification.data.clone()]);
|
assert_eq!(created, vec![notification.data.clone()]);
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
@ -262,14 +280,16 @@ async fn live_select_query() {
|
||||||
let _: Option<RecordId> =
|
let _: Option<RecordId> =
|
||||||
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
db.update(¬ification.data.id).content(json!({"foo": "bar"})).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// It should be updated
|
// It should be updated
|
||||||
assert_eq!(notification.action, Action::Update);
|
assert_eq!(notification.action, Action::Update);
|
||||||
|
|
||||||
// Delete the record
|
// Delete the record
|
||||||
let _: Option<RecordId> = db.delete(¬ification.data.id).await.unwrap();
|
let _: Option<RecordId> = db.delete(¬ification.data.id).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification: Notification<RecordId> = users.next().await.unwrap().unwrap();
|
let notification: Notification<RecordId> =
|
||||||
|
tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap().unwrap();
|
||||||
// It should be deleted
|
// It should be deleted
|
||||||
assert_eq!(notification.action, Action::Delete);
|
assert_eq!(notification.action, Action::Delete);
|
||||||
}
|
}
|
||||||
|
@ -290,7 +310,7 @@ async fn live_select_query() {
|
||||||
// Create a record
|
// Create a record
|
||||||
db.create(Resource::from(&table)).await.unwrap();
|
db.create(Resource::from(&table)).await.unwrap();
|
||||||
// Pull the notification
|
// Pull the notification
|
||||||
let notification = users.next().await.unwrap();
|
let notification = tokio::time::timeout(LQ_TIMEOUT, users.next()).await.unwrap().unwrap();
|
||||||
// The returned record should be an object
|
// The returned record should be an object
|
||||||
assert!(notification.data.is_object());
|
assert!(notification.data.is_object());
|
||||||
// It should be newly created
|
// It should be newly created
|
||||||
|
|
|
@ -670,6 +670,12 @@ mod cli_integration {
|
||||||
let output = remove_debug_info(output).replace('\n', "");
|
let output = remove_debug_info(output).replace('\n', "");
|
||||||
// TODO: when enabling the feature flag, turn these to `create` not `update`
|
// TODO: when enabling the feature flag, turn these to `create` not `update`
|
||||||
let allowed = [
|
let allowed = [
|
||||||
|
// Delete these
|
||||||
|
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 1 }, { changes: [{ update: { id: thing:one } }], versionstamp: 2 }]]",
|
||||||
|
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 1 }, { changes: [{ update: { id: thing:one } }], versionstamp: 3 }]]",
|
||||||
|
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 2 }, { changes: [{ update: { id: thing:one } }], versionstamp: 3 }]]",
|
||||||
|
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 2 }, { changes: [{ update: { id: thing:one } }], versionstamp: 4 }]]",
|
||||||
|
// Keep these
|
||||||
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 65536 }, { changes: [{ update: { id: thing:one } }], versionstamp: 131072 }]]",
|
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 65536 }, { changes: [{ update: { id: thing:one } }], versionstamp: 131072 }]]",
|
||||||
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 65536 }, { changes: [{ update: { id: thing:one } }], versionstamp: 196608 }]]",
|
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 65536 }, { changes: [{ update: { id: thing:one } }], versionstamp: 196608 }]]",
|
||||||
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 131072 }, { changes: [{ update: { id: thing:one } }], versionstamp: 196608 }]]",
|
"[[{ changes: [{ define_table: { name: 'thing' } }], versionstamp: 131072 }, { changes: [{ update: { id: thing:one } }], versionstamp: 196608 }]]",
|
||||||
|
|
Loading…
Reference in a new issue