|
|
@@ -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))
|
|
|
}
|