Fix purge and enterprise tests
This commit is contained in:
@@ -47,23 +47,23 @@ use super::{JMAPTest, ManagementApi, delivery::AssertResult};
|
||||
const METRICS_CONFIG: &str = r#"
|
||||
[metrics.alerts.expected]
|
||||
enable = true
|
||||
condition = "domain_count > 1 && cluster_error > 3"
|
||||
condition = "domain_count > 1 && cluster_publisher_error > 3"
|
||||
|
||||
[metrics.alerts.expected.notify.event]
|
||||
enable = true
|
||||
message = "Yikes! Found %{cluster.error}% cluster errors!"
|
||||
message = "Yikes! Found %{cluster.publisher-error}% cluster errors!"
|
||||
|
||||
[metrics.alerts.expected.notify.email]
|
||||
enable = true
|
||||
from-name = "Alert Subsystem"
|
||||
from-addr = "alert@example.com"
|
||||
to = ["jdoe@example.com"]
|
||||
subject = "Found %{cluster.error}% cluster errors"
|
||||
body = "Sorry for the bad news, but we found %{domain.count}% domains and %{cluster.error}% cluster errors."
|
||||
subject = "Found %{cluster.publisher-error}% cluster errors"
|
||||
body = "Sorry for the bad news, but we found %{domain.count}% domains and %{cluster.publisher-error}% cluster errors."
|
||||
|
||||
[metrics.alerts.unexpected]
|
||||
enable = true
|
||||
condition = "domain_count < 1 || cluster_error < 3"
|
||||
condition = "domain_count < 1 || cluster_publisher_error < 3"
|
||||
|
||||
[metrics.alerts.unexpected.notify.event]
|
||||
enable = true
|
||||
|
||||
@@ -101,7 +101,7 @@ async fn jmap_tests_() {
|
||||
.await;
|
||||
|
||||
webhooks::test(&mut params).await;
|
||||
/*email_query::test(&mut params, delete).await;
|
||||
email_query::test(&mut params, delete).await;
|
||||
email_get::test(&mut params).await;
|
||||
email_set::test(&mut params).await;
|
||||
email_parse::test(&mut params).await;
|
||||
@@ -119,7 +119,7 @@ async fn jmap_tests_() {
|
||||
event_source::test(&mut params).await;
|
||||
push_subscription::test(&mut params).await;
|
||||
sieve_script::test(&mut params).await;
|
||||
vacation_response::test(&mut params).await;*/
|
||||
vacation_response::test(&mut params).await;
|
||||
email_submission::test(&mut params).await;
|
||||
websocket::test(&mut params).await;
|
||||
quota::test(&mut params).await;
|
||||
@@ -907,8 +907,8 @@ attempts.interval = "500ms"
|
||||
[jmap.email]
|
||||
auto-expunge = "1s"
|
||||
|
||||
[jmap.protocol.changes]
|
||||
max-history = "1s"
|
||||
[changes]
|
||||
max-history = "1"
|
||||
|
||||
[store."auth"]
|
||||
type = "sqlite"
|
||||
|
||||
@@ -87,7 +87,9 @@ pub async fn test(params: &mut JMAPTest) {
|
||||
}
|
||||
|
||||
if pass == 1 {
|
||||
changes = get_changes(&server).await;
|
||||
let (changes_, is_truncated) = get_changes(&server).await;
|
||||
assert!(!is_truncated);
|
||||
changes = changes_;
|
||||
tokio::time::sleep(std::time::Duration::from_secs(1)).await;
|
||||
} else {
|
||||
break;
|
||||
@@ -142,14 +144,16 @@ pub async fn test(params: &mut JMAPTest) {
|
||||
.assert_contains("\"Junk Mail\" (MESSAGES 1)");
|
||||
|
||||
// Compare changes
|
||||
let new_changes = get_changes(&server).await;
|
||||
let (new_changes, is_truncated) = get_changes(&server).await;
|
||||
assert!(!changes.is_empty());
|
||||
assert!(!new_changes.is_empty());
|
||||
for change in changes {
|
||||
assert!(is_truncated);
|
||||
for change in &changes {
|
||||
assert!(
|
||||
!new_changes.contains(&change),
|
||||
"Change {:?} was not purged",
|
||||
change
|
||||
!new_changes.contains(change),
|
||||
"Change {change:?} was not purged, expected {} changes, got {}",
|
||||
changes.len(),
|
||||
new_changes.len()
|
||||
);
|
||||
}
|
||||
|
||||
@@ -164,8 +168,9 @@ pub async fn test(params: &mut JMAPTest) {
|
||||
assert_is_empty(server).await;
|
||||
}
|
||||
|
||||
async fn get_changes(server: &Server) -> AHashSet<(u64, u8)> {
|
||||
async fn get_changes(server: &Server) -> (AHashSet<(u64, u8)>, bool) {
|
||||
let mut changes = AHashSet::new();
|
||||
let mut is_truncated = false;
|
||||
server
|
||||
.core
|
||||
.storage
|
||||
@@ -183,17 +188,20 @@ async fn get_changes(server: &Server) -> AHashSet<(u64, u8)> {
|
||||
change_id: u64::MAX,
|
||||
},
|
||||
)
|
||||
.ascending()
|
||||
.no_values(),
|
||||
|key, _| {
|
||||
changes.insert((
|
||||
key.deserialize_be_u64(key.len() - U64_LEN).unwrap(),
|
||||
key[U32_LEN],
|
||||
));
|
||||
.ascending(),
|
||||
|key, value| {
|
||||
if !value.is_empty() {
|
||||
changes.insert((
|
||||
key.deserialize_be_u64(key.len() - U64_LEN).unwrap(),
|
||||
key[U32_LEN],
|
||||
));
|
||||
} else {
|
||||
is_truncated = true;
|
||||
}
|
||||
Ok(true)
|
||||
},
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
changes
|
||||
(changes, is_truncated)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user