update to latest bstore (with support for an index on a []string: Message.DKIMDomains), and cyclic data types (to be used for Message.Part soon); also adds a context.Context to database operations.

This commit is contained in:
Mechiel Lukkien
2023-05-22 14:40:36 +02:00
parent f6ed860ccb
commit e81930ba20
58 changed files with 1970 additions and 1035 deletions

View File

@ -1,6 +1,7 @@
package store
import (
"context"
"os"
"regexp"
"strings"
@ -16,6 +17,8 @@ import (
"github.com/mjl-/mox/mox-"
)
var ctxbg = context.Background()
func tcheck(t *testing.T, err error, msg string) {
t.Helper()
if err != nil {
@ -66,7 +69,7 @@ func TestMailbox(t *testing.T) {
err := acc.Deliver(xlog, conf.Destinations["mjl"], &m, msgFile, false)
tcheck(t, err, "deliver without consume")
err = acc.DB.Write(func(tx *bstore.Tx) error {
err = acc.DB.Write(ctxbg, func(tx *bstore.Tx) error {
var err error
mbsent, err = bstore.QueryTx[Mailbox](tx).FilterNonzero(Mailbox{Name: "Sent"}).Get()
tcheck(t, err, "sent mailbox")
@ -89,10 +92,10 @@ func TestMailbox(t *testing.T) {
err = acc.Deliver(xlog, conf.Destinations["mjl"], &mconsumed, msgFile, true)
tcheck(t, err, "deliver with consume")
err = acc.DB.Write(func(tx *bstore.Tx) error {
err = acc.DB.Write(ctxbg, func(tx *bstore.Tx) error {
m.Junk = true
l := []Message{m}
err = acc.RetrainMessages(log, tx, l, false)
err = acc.RetrainMessages(ctxbg, log, tx, l, false)
tcheck(t, err, "train as junk")
m = l[0]
return nil
@ -102,18 +105,18 @@ func TestMailbox(t *testing.T) {
m.Junk = false
m.Notjunk = true
jf, _, err := acc.OpenJunkFilter(log)
jf, _, err := acc.OpenJunkFilter(ctxbg, log)
tcheck(t, err, "open junk filter")
err = acc.DB.Write(func(tx *bstore.Tx) error {
return acc.RetrainMessage(log, tx, jf, &m, false)
err = acc.DB.Write(ctxbg, func(tx *bstore.Tx) error {
return acc.RetrainMessage(ctxbg, log, tx, jf, &m, false)
})
tcheck(t, err, "retraining as non-junk")
err = jf.Close()
tcheck(t, err, "close junk filter")
m.Notjunk = false
err = acc.DB.Write(func(tx *bstore.Tx) error {
return acc.RetrainMessages(log, tx, []Message{m}, false)
err = acc.DB.Write(ctxbg, func(tx *bstore.Tx) error {
return acc.RetrainMessages(ctxbg, log, tx, []Message{m}, false)
})
tcheck(t, err, "untraining non-junk")
@ -134,18 +137,18 @@ func TestMailbox(t *testing.T) {
}
acc.WithWLock(func() {
err := acc.DB.Write(func(tx *bstore.Tx) error {
err := acc.DB.Write(ctxbg, func(tx *bstore.Tx) error {
_, _, err := acc.MailboxEnsure(tx, "Testbox", true)
return err
})
tcheck(t, err, "ensure mailbox exists")
err = acc.DB.Read(func(tx *bstore.Tx) error {
err = acc.DB.Read(ctxbg, func(tx *bstore.Tx) error {
_, _, err := acc.MailboxEnsure(tx, "Testbox", true)
return err
})
tcheck(t, err, "ensure mailbox exists")
err = acc.DB.Write(func(tx *bstore.Tx) error {
err = acc.DB.Write(ctxbg, func(tx *bstore.Tx) error {
_, _, err := acc.MailboxEnsure(tx, "Testbox2", false)
tcheck(t, err, "create mailbox")