func()

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
}