fetch_ml/tests/unit/jupyter/ws_jupyter_errorcode_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

76 lines
1.9 KiB
Go

package jupyter_test
import (
"testing"
"github.com/jfraeys/fetch_ml/internal/api"
"github.com/jfraeys/fetch_ml/internal/queue"
)
func TestJupyterTaskErrorCode(t *testing.T) {
tests := []struct {
name string
task *queue.Task
expected byte
}{
{
name: "nil task",
task: nil,
expected: api.ErrorCodeUnknownError,
},
{
name: "cancelled task",
task: &queue.Task{Status: "cancelled", Error: "user cancelled"},
expected: api.ErrorCodeJobCancelled,
},
{
name: "oom",
task: &queue.Task{Status: "failed", Error: "out of memory"},
expected: api.ErrorCodeOutOfMemory,
},
{
name: "disk full",
task: &queue.Task{Status: "failed", Error: "no space left on device"},
expected: api.ErrorCodeDiskFull,
},
{
name: "rate limit",
task: &queue.Task{Status: "failed", Error: "rate limit exceeded"},
expected: api.ErrorCodeServiceUnavailable,
},
{
name: "timeout",
task: &queue.Task{Status: "failed", Error: "context deadline exceeded"},
expected: api.ErrorCodeTimeout,
},
{
name: "network error",
task: &queue.Task{Status: "failed", Error: "connection refused"},
expected: api.ErrorCodeNetworkError,
},
{
name: "queue not configured",
task: &queue.Task{Status: "failed", Error: "task queue not configured"},
expected: api.ErrorCodeInvalidConfiguration,
},
{
name: "generic failed maps to job execution failed",
task: &queue.Task{Status: "failed", Error: "something went wrong"},
expected: api.ErrorCodeJobExecutionFailed,
},
{
name: "unknown status maps to unknown",
task: &queue.Task{Status: "running", Error: ""},
expected: api.ErrorCodeUnknownError,
},
}
for _, tt := range tests {
tt := tt
t.Run(tt.name, func(t *testing.T) {
if got := api.JupyterTaskErrorCode(tt.task); got != tt.expected {
t.Fatalf("expected error code %d, got %d", tt.expected, got)
}
})
}
}