From fe5c844a21028289be33a750eb8c6e0c1a46c18d Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Fri, 8 Aug 2025 16:10:49 -0400 Subject: [PATCH] Add test --- server/message_cache.go | 4 ++-- server/message_cache_test.go | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/server/message_cache.go b/server/message_cache.go index 64561d02..902cac1c 100644 --- a/server/message_cache.go +++ b/server/message_cache.go @@ -8,8 +8,8 @@ import ( "net/netip" "path/filepath" "strings" - "time" "sync" + "time" _ "github.com/mattn/go-sqlite3" // SQLite driver "heckel.io/ntfy/v2/log" @@ -283,8 +283,8 @@ var ( type messageCache struct { db *sql.DB queue *util.BatchingQueue[*message] - mu sync.Mutex nop bool + mu sync.Mutex } // newSqliteCache creates a SQLite file-backed cache diff --git a/server/message_cache_test.go b/server/message_cache_test.go index 778f28fe..f0a02b2e 100644 --- a/server/message_cache_test.go +++ b/server/message_cache_test.go @@ -3,8 +3,10 @@ package server import ( "database/sql" "fmt" + "github.com/stretchr/testify/assert" "net/netip" "path/filepath" + "sync" "testing" "time" @@ -90,6 +92,26 @@ func testCacheMessages(t *testing.T, c *messageCache) { require.Empty(t, messages) } +func TestSqliteCache_MessagesLock(t *testing.T) { + testCacheMessagesLock(t, newSqliteTestCache(t)) +} + +func TestMemCache_MessagesLock(t *testing.T) { + testCacheMessagesLock(t, newMemTestCache(t)) +} + +func testCacheMessagesLock(t *testing.T, c *messageCache) { + var wg sync.WaitGroup + for i := 0; i < 5000; i++ { + wg.Add(1) + go func() { + assert.Nil(t, c.AddMessage(newDefaultMessage("mytopic", "test message"))) + wg.Done() + }() + } + wg.Wait() +} + func TestSqliteCache_MessagesScheduled(t *testing.T) { testCacheMessagesScheduled(t, newSqliteTestCache(t)) }