fetch_ml/tests/unit/worker/test_helpers.go
Jeremie Fraeys 713dba896c
refactor: Add test compatibility methods to worker package
- Added ComputeTaskProvenance function (delegates to integrity.ProvenanceCalculator)
- Added Worker.VerifyDatasetSpecs method
- Added Worker.EnforceTaskProvenance method (placeholder)
- Added Worker.VerifySnapshot method (placeholder)
- All methods added for backward compatibility with existing tests

Build status: Compiles successfully
2026-02-17 16:55:22 -05:00

71 lines
2 KiB
Go

// Package worker provides test helpers for the worker package
package worker
import (
"context"
"log/slog"
"github.com/jfraeys/fetch_ml/internal/jupyter"
"github.com/jfraeys/fetch_ml/internal/logging"
"github.com/jfraeys/fetch_ml/internal/metrics"
"github.com/jfraeys/fetch_ml/internal/queue"
"github.com/jfraeys/fetch_ml/internal/worker/lifecycle"
)
// NewTestWorker creates a minimal Worker for testing purposes.
// It initializes only the fields needed for unit tests.
func NewTestWorker(cfg *Config) *Worker {
if cfg == nil {
cfg = &Config{}
}
logger := logging.NewLogger(slog.LevelInfo, false)
metricsObj := &metrics.Metrics{}
return &Worker{
id: "test-worker",
config: cfg,
logger: logger,
metrics: metricsObj,
health: lifecycle.NewHealthMonitor(),
}
}
// NewTestWorkerWithQueue creates a test Worker with a queue client.
// This is useful for testing queue-related functionality.
func NewTestWorkerWithQueue(cfg *Config, queueClient queue.Backend) *Worker {
w := NewTestWorker(cfg)
// Note: In the simplified architecture, the queue is managed by the RunLoop.
// This helper creates a basic worker; queue integration would need RunLoop setup.
_ = queueClient // Acknowledge parameter - full integration requires RunLoop
return w
}
// NewTestWorkerWithJupyter creates a test Worker with Jupyter manager.
// This is useful for testing Jupyter service functionality.
func NewTestWorkerWithJupyter(cfg *Config, jupyterMgr *jupyter.ServiceManager) *Worker {
w := NewTestWorker(cfg)
w.jupyter = jupyterMgr
return w
}
// ResolveDatasets resolves dataset paths for a task.
// This is a test helper that provides basic dataset resolution.
func ResolveDatasets(ctx context.Context, w *Worker, task *queue.Task) ([]string, error) {
if task.DatasetSpecs == nil {
return nil, nil
}
dataDir := w.config.DataDir
if dataDir == "" {
dataDir = "/tmp/data" // Default for tests
}
var paths []string
for _, spec := range task.DatasetSpecs {
path := dataDir + "/" + spec.Name
paths = append(paths, path)
}
return paths, nil
}