package fairshare import ( "fmt" "testing" log "github.com/hashicorp/go-hclog" uuid "github.com/hashicorp/go-uuid" ) type testJob struct { id string ex func(id string) error onFail func(error) } // TODO maybe define these function types func (t *testJob) GetID() string { return t.id } func (t *testJob) Execute() error { return t.ex(t.GetID()) } func (t *testJob) OnFailure(err error) { t.onFail(err) } func newTestJob(t *testing.T, id string, ex func(string) error, onFail func(error)) testJob { t.Helper() if ex == nil { t.Errorf("ex cannot be nil") } if onFail == nil { t.Errorf("onFail cannot be nil") } return testJob{ id: id, ex: ex, onFail: onFail, } } func newDefaultTestJob(t *testing.T, id string) testJob { ex := func(_ string) error { return nil } onFail := func(_ error) {} return newTestJob(t, id, ex, onFail) } func newTestLogger(name string) log.Logger { guid, err := uuid.GenerateUUID() if err != nil { guid = "no-guid" } return log.New(&log.LoggerOptions{ Name: fmt.Sprintf("%s-%s", name, guid), Level: log.LevelFromString("TRACE"), }) } func GetNumWorkers(j *JobManager) int { return j.workerPool.numWorkers }