Improved cache memory layout
This commit is contained in:
@@ -8,7 +8,7 @@ use std::time::Duration;
|
||||
|
||||
use email::{
|
||||
mailbox::{INBOX_ID, JUNK_ID},
|
||||
message::cache::{MessageCache, MessageCacheAccess},
|
||||
message::cache::{MessageCacheAccess, MessageCacheFetch},
|
||||
};
|
||||
use jmap_proto::types::{collection::Collection, id::Id};
|
||||
|
||||
|
||||
@@ -148,7 +148,7 @@ pub async fn test(params: &mut JMAPTest) {
|
||||
batch.update_document(id as u32).log_delete(None);
|
||||
}
|
||||
LogAction::UpdateChild(id) => {
|
||||
batch.log_child_update(Collection::Email, id as u32);
|
||||
batch.log_parent_update(Collection::Email, id as u32);
|
||||
}
|
||||
LogAction::Move(old_id, new_id) => {
|
||||
batch
|
||||
|
||||
@@ -11,7 +11,7 @@ use crate::{
|
||||
store::{deflate_test_resource, query::FIELDS},
|
||||
};
|
||||
|
||||
use ::email::{mailbox::Mailbox, message::cache::MessageCache};
|
||||
use ::email::{mailbox::Mailbox, message::cache::MessageCacheFetch};
|
||||
use ahash::AHashSet;
|
||||
use common::{config::jmap::settings::SpecialUse, storage::index::ObjectIndexBuilder};
|
||||
use jmap_client::{
|
||||
@@ -19,12 +19,12 @@ use jmap_client::{
|
||||
core::query::{Comparator, Filter},
|
||||
email,
|
||||
};
|
||||
use jmap_proto::types::{collection::Collection, id::Id, property::Property};
|
||||
use jmap_proto::types::{collection::Collection, id::Id};
|
||||
use mail_parser::{DateTime, HeaderName};
|
||||
|
||||
use store::{
|
||||
ahash::AHashMap,
|
||||
write::{BatchBuilder, ValueClass, now},
|
||||
write::{BatchBuilder, now},
|
||||
};
|
||||
|
||||
use super::JMAPTest;
|
||||
@@ -73,24 +73,6 @@ pub async fn test(params: &mut JMAPTest, insert: bool) {
|
||||
println!("Inserting JMAP Mail query test messages...");
|
||||
create(client).await;
|
||||
|
||||
// Remove mailboxes
|
||||
let mut batch = BatchBuilder::new();
|
||||
batch
|
||||
.with_account_id(account_id)
|
||||
.with_collection(Collection::Mailbox);
|
||||
for mailbox_id in 1545..3010 {
|
||||
batch
|
||||
.delete_document(mailbox_id)
|
||||
.clear(ValueClass::Property(Property::EmailIds.into()));
|
||||
}
|
||||
server
|
||||
.core
|
||||
.storage
|
||||
.data
|
||||
.write(batch.build_all())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(
|
||||
params
|
||||
.server
|
||||
@@ -98,7 +80,7 @@ pub async fn test(params: &mut JMAPTest, insert: bool) {
|
||||
.await
|
||||
.unwrap()
|
||||
.items
|
||||
.values()
|
||||
.iter()
|
||||
.map(|m| m.thread_id)
|
||||
.collect::<AHashSet<_>>()
|
||||
.len(),
|
||||
@@ -797,6 +779,27 @@ pub async fn create(client: &mut Client) {
|
||||
|
||||
total_messages += 1;
|
||||
|
||||
let mut keywords = Vec::new();
|
||||
for keyword in [
|
||||
values_str["medium"].to_string(),
|
||||
values_str["artistRole"].to_string(),
|
||||
values_str["accession_number"][0..1].to_string(),
|
||||
format!(
|
||||
"N{}",
|
||||
&values_str["accession_number"][values_str["accession_number"].len() - 1..]
|
||||
),
|
||||
] {
|
||||
if keyword == "attributed to"
|
||||
|| keyword == "T"
|
||||
|| keyword == "N0"
|
||||
|| keyword == "N"
|
||||
|| keyword == "artist"
|
||||
|| keyword == "Bronze"
|
||||
{
|
||||
keywords.push(keyword);
|
||||
}
|
||||
}
|
||||
|
||||
client
|
||||
.email_import(
|
||||
format!(
|
||||
@@ -821,15 +824,7 @@ pub async fn create(client: &mut Client) {
|
||||
Id::new(values_int["year"] as u64).to_string(),
|
||||
Id::new((values_int["acquisitionYear"] + 1000) as u64).to_string(),
|
||||
],
|
||||
[
|
||||
values_str["medium"].to_string(),
|
||||
values_str["artistRole"].to_string(),
|
||||
values_str["accession_number"][0..1].to_string(),
|
||||
format!(
|
||||
"N{}",
|
||||
&values_str["accession_number"][values_str["accession_number"].len() - 1..]
|
||||
),
|
||||
]
|
||||
keywords
|
||||
.into(),
|
||||
Some(values_int["year"] as i64),
|
||||
)
|
||||
|
||||
@@ -373,8 +373,8 @@ pub async fn jmap_tests() {
|
||||
)
|
||||
.await;
|
||||
|
||||
webhooks::test(&mut params).await;
|
||||
//email_query::test(&mut params, delete).await;
|
||||
/*webhooks::test(&mut params).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;
|
||||
@@ -382,8 +382,8 @@ pub async fn jmap_tests() {
|
||||
email_changes::test(&mut params).await;
|
||||
email_query_changes::test(&mut params).await;
|
||||
email_copy::test(&mut params).await;
|
||||
thread_get::test(&mut params).await;
|
||||
//thread_merge::test(&mut params).await;
|
||||
thread_get::test(&mut params).await;*/
|
||||
thread_merge::test(&mut params).await;
|
||||
mailbox::test(&mut params).await;
|
||||
delivery::test(&mut params).await;
|
||||
auth_acl::test(&mut params).await;
|
||||
|
||||
@@ -10,7 +10,7 @@ use directory::{QueryBy, backend::internal::manage::ManageDirectory};
|
||||
use email::{
|
||||
mailbox::{INBOX_ID, JUNK_ID, TRASH_ID},
|
||||
message::{
|
||||
cache::{MessageCache, MessageCacheAccess},
|
||||
cache::{MessageCacheAccess, MessageCacheFetch},
|
||||
delete::EmailDeletion,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@ use crate::jmap::{mailbox::destroy_all_mailboxes_no_wait, wait_for_index};
|
||||
use common::Server;
|
||||
use directory::backend::internal::manage::ManageDirectory;
|
||||
use email::message::{
|
||||
cache::{MessageCache, MessageCacheAccess},
|
||||
cache::{MessageCacheAccess, MessageCacheFetch},
|
||||
metadata::MessageData,
|
||||
};
|
||||
use futures::future::join_all;
|
||||
@@ -223,7 +223,7 @@ async fn email_tests(server: Server, client: Arc<Client>) {
|
||||
.await
|
||||
.unwrap()
|
||||
.in_mailbox(mailbox_id)
|
||||
.map(|(id, _)| id),
|
||||
.map(|m| m.document_id),
|
||||
);
|
||||
let mut email_ids_check = email_ids_in_mailbox.clone();
|
||||
email_ids_check &= &email_ids;
|
||||
|
||||
Reference in New Issue
Block a user