server/storage/message_store_test.go

67 lines
1.6 KiB
Go
Raw Permalink Normal View History

2021-05-07 18:36:34 +00:00
package storage
import (
"cwtch.im/cwtch/protocol/groups"
2021-05-07 20:43:15 +00:00
"encoding/binary"
"git.openprivacy.ca/openprivacy/log"
2021-05-07 18:36:34 +00:00
"os"
"testing"
2021-05-07 21:21:18 +00:00
"time"
2021-05-07 18:36:34 +00:00
)
func TestMessageStore(t *testing.T) {
2021-05-07 21:33:45 +00:00
filename := "../testcwtchmessages.db"
2021-05-07 21:21:18 +00:00
os.Remove(filename)
log.SetLevel(log.LevelDebug)
2021-05-07 21:21:18 +00:00
db, err := InitializeSqliteMessageStore(filename)
if err != nil {
t.Fatalf("Error: %v", err)
2021-05-07 18:36:34 +00:00
}
2021-05-07 20:43:15 +00:00
numMessages := 100
2021-05-07 18:36:34 +00:00
2021-05-07 21:21:18 +00:00
t.Logf("Generating Data...")
var messages []groups.EncryptedGroupMessage
2021-05-07 20:43:15 +00:00
for i := 0; i < numMessages; i++ {
buf := make([]byte, 4)
binary.PutUvarint(buf, uint64(i))
2021-05-07 21:21:18 +00:00
messages = append(messages, groups.EncryptedGroupMessage{
2021-05-07 20:43:15 +00:00
Signature: append([]byte("Hello world"), buf...),
Ciphertext: []byte("Hello world"),
})
}
2021-05-07 18:36:34 +00:00
2021-05-07 21:21:18 +00:00
t.Logf("Populating Database")
start := time.Now()
for _, message := range messages {
2021-05-07 21:21:18 +00:00
db.AddMessage(message)
2021-05-07 18:36:34 +00:00
}
2021-05-07 21:21:18 +00:00
t.Logf("Time to Insert: %v", time.Since(start))
// Wait for inserts to complete..
fetchedMessages := db.FetchMessages()
//for _, message := range fetchedMessages {
//t.Logf("Message: %v", message)
//}
if len(fetchedMessages) != numMessages {
t.Fatalf("Incorrect number of messages returned")
2021-05-07 18:36:34 +00:00
}
2021-05-07 20:43:15 +00:00
t.Logf("Testing FetchMessagesFrom...")
numToFetch := numMessages / 2
buf := make([]byte, 4)
binary.PutUvarint(buf, uint64(numToFetch))
sig := append([]byte("Hello world"), buf...)
2021-05-07 21:21:18 +00:00
fetchedMessages = db.FetchMessagesFrom(sig)
//for _, message := range fetchedMessages {
// t.Logf("Message: %v", message)
//}
if len(fetchedMessages) != numToFetch {
2021-05-07 20:43:15 +00:00
t.Fatalf("Incorrect number of messages returned : %v", len(messages))
}
db.Close()
2021-05-07 18:36:34 +00:00
}