本文整理汇总了Golang中github.com/diffeo/go-coordinate/coordinate.Attempt.WorkUnit方法的典型用法代码示例。如果您正苦于以下问题:Golang Attempt.WorkUnit方法的具体用法?Golang Attempt.WorkUnit怎么用?Golang Attempt.WorkUnit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/diffeo/go-coordinate/coordinate.Attempt
的用法示例。
在下文中一共展示了Attempt.WorkUnit方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: attemptMap
// attemptMap turns a single attempt into the map returned by
// GetChildWorkUnits().
func attemptMap(attempt coordinate.Attempt) (map[string]interface{}, error) {
// First try to swap out attempt for its work unit's actual
// active attempt.
workUnit := attempt.WorkUnit()
activeAttempt, err := workUnit.ActiveAttempt()
if err != nil {
return nil, err
}
if activeAttempt != nil {
attempt = activeAttempt
}
// Collect extra data we need and build the result
data, err := attempt.Data()
if err != nil {
return nil, err
}
expires, err := attempt.ExpirationTime()
if err != nil {
return nil, err
}
result := map[string]interface{}{
"work_spec_name": workUnit.WorkSpec().Name(),
"work_unit_key": []byte(workUnit.Name()),
"work_unit_data": data,
"worker_id": attempt.Worker().Name(),
"expires": expires.Unix(),
}
return result, nil
}
示例2: getWorkTuple
func getWorkTuple(attempt coordinate.Attempt) (cborrpc.PythonTuple, error) {
data, err := attempt.Data()
if err != nil {
return cborrpc.PythonTuple{}, err
}
workUnit := attempt.WorkUnit()
return cborrpc.PythonTuple{Items: []interface{}{
workUnit.WorkSpec().Name(),
[]byte(workUnit.Name()),
data,
}}, nil
}
示例3: attemptURLBuilder
func (api *restAPI) attemptURLBuilder(namespace coordinate.Namespace, attempt coordinate.Attempt, startTime time.Time, err error) *urlBuilder {
unit := attempt.WorkUnit()
spec := unit.WorkSpec()
worker := attempt.Worker()
if err == nil {
return buildURLs(api.Router,
"namespace", namespace.Name(),
"spec", spec.Name(),
"unit", unit.Name(),
"worker", worker.Name(),
"start", startTime.Format(time.RFC3339),
)
}
return &urlBuilder{Error: err}
}
示例4: AttemptMatches
// AttemptMatches checks that two attempts are attempting the same thing.
func AttemptMatches(t *testing.T, expected, actual coordinate.Attempt) bool {
return (assert.Equal(t, expected.Worker().Name(), actual.Worker().Name()) &&
assert.Equal(t, expected.WorkUnit().Name(), actual.WorkUnit().Name()) &&
assert.Equal(t, expected.WorkUnit().WorkSpec().Name(), actual.WorkUnit().WorkSpec().Name()))
}
示例5: TestChainingDuplicate
// TestChainingDuplicate tests that work unit chaining still works
// even when the same output work unit is generated twice (it should
// get retried).
func TestChainingDuplicate(t *testing.T) {
var (
err error
one, two coordinate.WorkSpec
attempt coordinate.Attempt
)
sts := SimpleTestSetup{
NamespaceName: "TestChainingDuplicate",
WorkerName: "worker",
}
sts.SetUp(t)
defer sts.TearDown(t)
one, err = sts.Namespace.SetWorkSpec(map[string]interface{}{
"name": "one",
"then": "two",
"priority": 1,
})
if !assert.NoError(t, err) {
return
}
two, err = sts.Namespace.SetWorkSpec(map[string]interface{}{
"name": "two",
"priority": 2,
})
if !assert.NoError(t, err) {
return
}
_, err = one.AddWorkUnit("a", map[string]interface{}{}, coordinate.WorkUnitMeta{})
assert.NoError(t, err)
_, err = one.AddWorkUnit("b", map[string]interface{}{}, coordinate.WorkUnitMeta{})
assert.NoError(t, err)
sts.WorkSpec = one
attempt = sts.RequestOneAttempt(t)
assert.Equal(t, "a", attempt.WorkUnit().Name())
err = attempt.Finish(map[string]interface{}{
"output": []string{"z"},
})
assert.NoError(t, err)
sts.WorkSpec = two
attempt = sts.RequestOneAttempt(t)
assert.Equal(t, "z", attempt.WorkUnit().Name())
err = attempt.Finish(map[string]interface{}{})
assert.NoError(t, err)
sts.WorkSpec = one
attempt = sts.RequestOneAttempt(t)
assert.Equal(t, "b", attempt.WorkUnit().Name())
err = attempt.Finish(map[string]interface{}{
"output": []string{"z"},
})
assert.NoError(t, err)
sts.WorkSpec = two
attempt = sts.RequestOneAttempt(t)
assert.Equal(t, "z", attempt.WorkUnit().Name())
err = attempt.Finish(map[string]interface{}{})
assert.NoError(t, err)
sts.RequestNoAttempts(t)
}