metis/pkg/service/remote_error_test.go

62 lines
1.8 KiB
Go
Raw Normal View History

package service
import (
"path/filepath"
"testing"
"time"
)
func TestRemoteWorkflowErrorBranches(t *testing.T) {
kube := fakeKubeServer(t)
installKubeFactory(t, kube)
app := newTestApp(t)
app.settings.Namespace = "maintenance"
app.settings.RunnerImageARM64 = ""
if _, err := app.RefreshDevices("titan-22"); err == nil {
t.Fatal("expected RefreshDevices to fail without runner image")
}
job := app.newJob("build", "titan-15", "", "")
app.runBuild(job, false)
if got := app.job(job.ID); got == nil || got.Status != JobError {
t.Fatalf("expected build job error, got %#v", got)
}
job = app.newJob("flash", "titan-15", "titan-22", "/dev/sdz")
if err := app.flashArtifact(job.ID, "registry.example/metis/titan-15"); err == nil {
t.Fatal("expected flashArtifact error")
}
app.setJob(job.ID, func(j *Job) {
j.Status = JobRunning
j.Stage = "build"
j.StageStartedAt = time.Now().Add(-30 * time.Second)
})
app.heartbeatRemoteJob(job.ID)
if got := app.job(job.ID); got == nil || got.ProgressPct == 0 {
t.Fatalf("expected heartbeat progress, got %#v", got)
}
}
func TestRemoteWorkflowMissingRunnerImageBranch(t *testing.T) {
kube := fakeKubeServer(t)
harbor := fakeHarborServer(t, true)
installKubeFactory(t, kube)
app := newTestApp(t)
app.settings.Namespace = "maintenance"
app.settings.RunnerImageARM64 = ""
app.settings.HarborAPIBase = harbor.URL + "/api/v2.0"
app.settings.HarborUsername = "admin"
app.settings.HarborPassword = "pw"
app.settings.HarborProject = "metis"
app.settings.HarborRegistry = "registry.example"
app.settings.ArtifactStatePath = filepath.Join(t.TempDir(), "artifacts.json")
job := app.newJob("build", "titan-15", "", "")
app.runBuild(job, false)
if got := app.job(job.ID); got == nil || got.Status != JobError {
t.Fatalf("expected build job error, got %#v", got)
}
}