Fix purge and enterprise tests

This commit is contained in:
mdecimus
2025-05-18 09:47:46 +02:00
parent 65fe4b1b49
commit 7e76bcd7f1
8 changed files with 46 additions and 48 deletions

View File

@@ -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

View File

@@ -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"

View File

@@ -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)
}