fetch_ml/tests/unit/queue/filesystem_fallback_test.go
Jeremie Fraeys 1dcc1e11d5
chore(build): update build system, scripts, and additional tests
- Update Makefile with native build targets (preparing for C++)
- Add profiler and performance regression detector commands
- Update CI/testing scripts
- Add additional unit tests for API, jupyter, queue, manifest
2026-02-12 12:05:55 -05:00

66 lines
1.6 KiB
Go

package queue_test
import (
"os"
"path/filepath"
"testing"
"time"
"github.com/google/uuid"
"github.com/jfraeys/fetch_ml/internal/queue"
)
func TestBackendFallbackToFilesystemWhenRedisUnavailable(t *testing.T) {
root := t.TempDir()
fsPath := filepath.Join(root, "queue-fs")
b, err := queue.NewBackend(queue.BackendConfig{
Backend: queue.QueueBackendRedis,
RedisAddr: "127.0.0.1:0",
FallbackToFilesystem: true,
FilesystemPath: fsPath,
})
if err != nil {
t.Fatalf("expected fallback backend, got error: %v", err)
}
if _, ok := b.(*queue.FilesystemQueue); !ok {
t.Fatalf("expected filesystem backend, got %T", b)
}
task := &queue.Task{
ID: uuid.New().String(),
JobName: "job-1",
Args: "--epochs 1",
Status: "queued",
Priority: 5,
CreatedAt: time.Now().UTC(),
UserID: "local",
Username: "local",
CreatedBy: "local",
Metadata: map[string]string{"commit_id": "deadbeef"},
}
if err := b.AddTask(task); err != nil {
t.Fatalf("add task: %v", err)
}
p := filepath.Join(fsPath, "pending", "entries", task.ID+".json")
if _, err := os.Stat(p); err != nil {
t.Fatalf("expected pending task file %s to exist: %v", p, err)
}
}
func TestBackendFilesystemDirect(t *testing.T) {
root := t.TempDir()
fsPath := filepath.Join(root, "queue-fs")
b, err := queue.NewBackend(queue.BackendConfig{
Backend: queue.QueueBackendFS,
FilesystemPath: fsPath,
})
if err != nil {
t.Fatalf("expected filesystem backend, got error: %v", err)
}
if _, ok := b.(*queue.FilesystemQueue); !ok {
t.Fatalf("expected filesystem backend, got %T", b)
}
}