28 lines
749 B
Go
28 lines
749 B
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestReserveJobRejectsDuplicateActiveNodeJobs(t *testing.T) {
|
|
app := newTestApp(t)
|
|
active := app.newJob("replace", "titan-15", "titan-22", "/dev/sdk")
|
|
|
|
_, err := app.reserveJob("build", "titan-15", "", "")
|
|
if err == nil {
|
|
t.Fatal("expected duplicate job reservation to fail")
|
|
}
|
|
var activeErr *activeNodeJobError
|
|
if !errors.As(err, &activeErr) {
|
|
t.Fatalf("expected activeNodeJobError, got %T", err)
|
|
}
|
|
if activeErr.JobID != active.ID || activeErr.Kind != "replace" {
|
|
t.Fatalf("unexpected active job conflict: %#v", activeErr)
|
|
}
|
|
if !strings.Contains(err.Error(), active.ID) {
|
|
t.Fatalf("expected error to mention active job id %s, got %q", active.ID, err.Error())
|
|
}
|
|
}
|