mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-08-14 20:54:30 +08:00
72 lines
1.7 KiB
Go
72 lines
1.7 KiB
Go
package nats
|
|
|
|
import (
|
|
"net"
|
|
"testing"
|
|
"time"
|
|
|
|
"ragflow/internal/common"
|
|
|
|
"github.com/nats-io/nats-server/v2/server"
|
|
)
|
|
|
|
// TestSyncerTaskStreamPublishesAndFetches verifies the dedicated syncer stream path.
|
|
func TestSyncerTaskStreamPublishesAndFetches(t *testing.T) {
|
|
engine := setupSyncerNATSEngine(t)
|
|
if err := engine.InitSyncerStream(); err != nil {
|
|
t.Fatalf("InitSyncerStream: %v", err)
|
|
}
|
|
if err := engine.InitSyncerConsumer(); err != nil {
|
|
t.Fatalf("InitSyncerConsumer: %v", err)
|
|
}
|
|
if err := engine.PublishSyncerTask("task-1"); err != nil {
|
|
t.Fatalf("PublishSyncerTask: %v", err)
|
|
}
|
|
|
|
handles, err := engine.FetchSyncerTasks(1)
|
|
if err != nil {
|
|
t.Fatalf("FetchSyncerTasks: %v", err)
|
|
}
|
|
if len(handles) != 1 {
|
|
t.Fatalf("handles len = %d, want 1", len(handles))
|
|
}
|
|
message := handles[0].GetMessage()
|
|
if message.TaskID != "task-1" || message.TaskType != common.TaskTypeSyncer {
|
|
t.Fatalf("message = %+v", message)
|
|
}
|
|
if err := handles[0].Ack(); err != nil {
|
|
t.Fatalf("Ack: %v", err)
|
|
}
|
|
}
|
|
|
|
func setupSyncerNATSEngine(t *testing.T) *NatsEngine {
|
|
t.Helper()
|
|
opts := &server.Options{
|
|
Port: -1,
|
|
JetStream: true,
|
|
StoreDir: t.TempDir(),
|
|
NoLog: true,
|
|
NoSigs: true,
|
|
}
|
|
ns, err := server.NewServer(opts)
|
|
if err != nil {
|
|
t.Fatalf("create embedded NATS server: %v", err)
|
|
}
|
|
ns.Start()
|
|
if !ns.ReadyForConnections(10 * time.Second) {
|
|
ns.Shutdown()
|
|
t.Fatal("embedded NATS server did not become ready")
|
|
}
|
|
t.Cleanup(func() {
|
|
ns.Shutdown()
|
|
ns.WaitForShutdown()
|
|
})
|
|
|
|
addr := ns.Addr().(*net.TCPAddr)
|
|
engine := NewNatsEngine("127.0.0.1", addr.Port)
|
|
if err := engine.Init(); err != nil {
|
|
t.Fatalf("NatsEngine.Init: %v", err)
|
|
}
|
|
return engine
|
|
}
|