- 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
71 lines
2 KiB
Go
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
|
|
}
|