in perftests/scheduler_simulator/fake_worker_cli.go [33:95]
func (fw *FakeWorker) Run(cmd *runner.Command) (runner.RunStatus, error) {
fw.cmdId = cmd.TaskID
if len(cmd.Argv) != 3 {
return runner.RunStatus{
RunID: runner.RunID(fw.cmdId),
State: fw.state,
LogTags: tags.LogTags{},
StdoutRef: "",
StderrRef: "",
SnapshotID: "",
ExitCode: 1,
Error: "",
}, fmt.Errorf("expected cmd's Argv to have 3 entries: <anything>, <task duration>")
}
duration, err := strconv.Atoi(cmd.Argv[1])
if err != nil {
return runner.RunStatus{
RunID: runner.RunID(fw.cmdId),
State: fw.state,
LogTags: tags.LogTags{},
StdoutRef: "",
StderrRef: "",
SnapshotID: "",
ExitCode: 1,
Error: "",
}, fmt.Errorf("didn't get a valid (int) task duration value from cmd.Argv's first param:%s", cmd.Argv[1])
}
exitCode, err := strconv.Atoi(cmd.Argv[2])
if err != nil {
return runner.RunStatus{
RunID: runner.RunID(fw.cmdId),
State: fw.state,
LogTags: tags.LogTags{},
StdoutRef: "",
StderrRef: "",
SnapshotID: "",
ExitCode: 1,
Error: "",
}, fmt.Errorf("didn't get a valid (int) exit code value from cmd.Argv's first param:%s", cmd.Argv[2])
}
fw.state = runner.RUNNING
go func(fw *FakeWorker) {
t := time.NewTicker(time.Duration(duration) * time.Second)
<-t.C
t.Stop()
fw.doneCh <- true
}(fw)
<-fw.doneCh // pause till done
fw.state = runner.COMPLETE
rs := runner.RunStatus{
RunID: runner.RunID(fw.cmdId),
State: fw.state,
LogTags: tags.LogTags{},
StdoutRef: "",
StderrRef: "",
SnapshotID: "",
ExitCode: errors.ExitCode(exitCode),
Error: "",
}
return rs, nil
}