Testing Performance

This commit is contained in:
Sarah Jamie Lewis 2021-05-07 14:21:18 -07:00
parent cc4d5ee428
commit dfbcd473b3
3 changed files with 24 additions and 21 deletions

View File

@ -92,7 +92,7 @@ func (ta *TokenboardServer) Listen() {
// Because we have set the sync capability any new messages that arrive after this point will just // Because we have set the sync capability any new messages that arrive after this point will just
// need to do a basic lookup from the last seen message // need to do a basic lookup from the last seen message
newMessages := ta.LegacyMessageStore.FetchMessagesFrom(lastSignature) newMessages := ta.LegacyMessageStore.FetchMessagesFrom(lastSignature)
for _, message := range newMessages[len(messages):] { for _, message := range newMessages {
data, _ = json.Marshal(groups.Message{MessageType: groups.NewMessageMessage, NewMessage: &groups.NewMessage{EGM: *message}}) data, _ = json.Marshal(groups.Message{MessageType: groups.NewMessageMessage, NewMessage: &groups.NewMessage{EGM: *message}})
ta.connection.Send(data) ta.connection.Send(data)
} }

View File

@ -34,17 +34,11 @@ func (s *SqliteMessageStore) Close() {
// AddMessage implements the MessageStoreInterface AddMessage for sqlite message store // AddMessage implements the MessageStoreInterface AddMessage for sqlite message store
func (s *SqliteMessageStore) AddMessage(message groups.EncryptedGroupMessage) { func (s *SqliteMessageStore) AddMessage(message groups.EncryptedGroupMessage) {
tx, err := s.database.Begin()
if err != nil {
log.Errorf("%q", err)
return
}
stmt, err := s.preparedInsertStatement.Exec(base64.StdEncoding.EncodeToString(message.Signature), base64.StdEncoding.EncodeToString(message.Ciphertext)) stmt, err := s.preparedInsertStatement.Exec(base64.StdEncoding.EncodeToString(message.Signature), base64.StdEncoding.EncodeToString(message.Ciphertext))
if err != nil { if err != nil {
log.Errorf("%v %q", stmt, err) log.Errorf("%v %q", stmt, err)
return return
} }
tx.Commit()
} }
// FetchMessages implements the MessageStoreInterface FetchMessages for sqlite message store // FetchMessages implements the MessageStoreInterface FetchMessages for sqlite message store

View File

@ -6,35 +6,44 @@ import (
"git.openprivacy.ca/openprivacy/log" "git.openprivacy.ca/openprivacy/log"
"os" "os"
"testing" "testing"
"time"
) )
func TestMessageStore(t *testing.T) { func TestMessageStore(t *testing.T) {
os.Remove("../testcwtchmessages.db") filename := "/home/sarah/testcwtchmessages.db"
os.Remove(filename)
log.SetLevel(log.LevelDebug) log.SetLevel(log.LevelDebug)
db, err := InitializeSqliteMessageStore("../testcwtchmessages.db") db, err := InitializeSqliteMessageStore(filename)
if err != nil { if err != nil {
t.Fatalf("Error: %v", err) t.Fatalf("Error: %v", err)
} }
numMessages := 100 numMessages := 100
t.Logf("Populating Database") t.Logf("Generating Data...")
var messages []groups.EncryptedGroupMessage
for i := 0; i < numMessages; i++ { for i := 0; i < numMessages; i++ {
buf := make([]byte, 4) buf := make([]byte, 4)
binary.PutUvarint(buf, uint64(i)) binary.PutUvarint(buf, uint64(i))
db.AddMessage(groups.EncryptedGroupMessage{ messages = append(messages, groups.EncryptedGroupMessage{
Signature: append([]byte("Hello world"), buf...), Signature: append([]byte("Hello world"), buf...),
Ciphertext: []byte("Hello world"), Ciphertext: []byte("Hello world"),
}) })
t.Logf("Inserted %v", i)
} }
// Wait for inserts to complete..
messages := db.FetchMessages() t.Logf("Populating Database")
start := time.Now()
for _, message := range messages { for _, message := range messages {
t.Logf("Message: %v", message) db.AddMessage(message)
} }
if len(messages) != numMessages { 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") t.Fatalf("Incorrect number of messages returned")
} }
@ -45,11 +54,11 @@ func TestMessageStore(t *testing.T) {
buf := make([]byte, 4) buf := make([]byte, 4)
binary.PutUvarint(buf, uint64(numToFetch)) binary.PutUvarint(buf, uint64(numToFetch))
sig := append([]byte("Hello world"), buf...) sig := append([]byte("Hello world"), buf...)
messages = db.FetchMessagesFrom(sig) fetchedMessages = db.FetchMessagesFrom(sig)
for _, message := range messages { //for _, message := range fetchedMessages {
t.Logf("Message: %v", message) // t.Logf("Message: %v", message)
} //}
if len(messages) != numToFetch { if len(fetchedMessages) != numToFetch {
t.Fatalf("Incorrect number of messages returned : %v", len(messages)) t.Fatalf("Incorrect number of messages returned : %v", len(messages))
} }