- 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
76 lines
1.9 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|