本文整理汇总了Golang中github.com/dmaze/goordinate/coordinate.WorkSpec.SetMeta方法的典型用法代码示例。如果您正苦于以下问题:Golang WorkSpec.SetMeta方法的具体用法?Golang WorkSpec.SetMeta怎么用?Golang WorkSpec.SetMeta使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/dmaze/goordinate/coordinate.WorkSpec
的用法示例。
在下文中一共展示了WorkSpec.SetMeta方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestMetaContinuous
// TestMetaContinuous specifically checks that you cannot enable the
// "continuous" flag on non-continuous work specs.
func (s *Suite) TestMetaContinuous(c *check.C) {
var (
err error
spec coordinate.WorkSpec
meta coordinate.WorkSpecMeta
)
// ...also...
spec, err = s.Namespace.SetWorkSpec(map[string]interface{}{
"name": "spec",
"min_gb": 1,
})
c.Assert(err, check.IsNil)
meta, err = spec.Meta(false)
c.Assert(err, check.IsNil)
c.Check(meta.Continuous, check.Equals, false)
c.Check(meta.CanBeContinuous, check.Equals, false)
meta.Continuous = true
err = spec.SetMeta(meta)
c.Assert(err, check.IsNil)
meta, err = spec.Meta(false)
c.Assert(err, check.IsNil)
// Cannot set the "continuous" flag
c.Check(meta.Continuous, check.Equals, false)
c.Check(meta.CanBeContinuous, check.Equals, false)
}
示例2: ControlWorkSpec
// ControlWorkSpec makes changes to a work spec that are not directly
// reflected in the work spec definition. This allows work specs to
// be paused or to stop generating new continuous jobs.
// ControlWorkSpecOptions has a complete listing of what can be done.
func (jobs *JobServer) ControlWorkSpec(workSpecName string, options map[string]interface{}) (bool, string, error) {
var (
cwsOptions ControlWorkSpecOptions
decoder *mapstructure.Decoder
err error
metadata mapstructure.Metadata
workSpec coordinate.WorkSpec
wsMeta coordinate.WorkSpecMeta
)
workSpec, err = jobs.Namespace.WorkSpec(workSpecName)
if err == nil {
// We care a lot about "false" vs. not present for
// these things. Manually create the decoder.
config := mapstructure.DecoderConfig{
Result: &cwsOptions,
Metadata: &metadata,
}
decoder, err = mapstructure.NewDecoder(&config)
}
if err == nil {
err = decoder.Decode(options)
}
// Get the existing metadata, then change it based on what
// we got provided
if err == nil {
wsMeta, err = workSpec.Meta(false)
}
if err == nil {
for _, key := range metadata.Keys {
switch key {
case "Continuous":
wsMeta.Continuous = cwsOptions.Continuous
case "Status":
wsMeta.Paused = cwsOptions.Status == Paused
case "Weight":
wsMeta.Weight = cwsOptions.Weight
case "Interval":
wsMeta.Interval = time.Duration(cwsOptions.Interval) * time.Second
case "MaxRunning":
wsMeta.MaxRunning = cwsOptions.MaxRunning
}
}
}
if err == nil {
err = workSpec.SetMeta(wsMeta)
}
return err == nil, "", err
}
示例3: TestSetMeta
// TestSetMeta tests the basic SetMeta() call and a couple of its
// documented oddities.
func (s *Suite) TestSetMeta(c *check.C) {
var (
err error
spec coordinate.WorkSpec
meta coordinate.WorkSpecMeta
)
spec, err = s.Namespace.SetWorkSpec(map[string]interface{}{
"name": "spec",
"min_gb": 1,
"continuous": true,
})
c.Assert(err, check.IsNil)
meta, err = spec.Meta(false)
c.Assert(err, check.IsNil)
c.Check(meta.Priority, check.Equals, 0)
c.Check(meta.Weight, check.Equals, 20)
c.Check(meta.Paused, check.Equals, false)
c.Check(meta.Continuous, check.Equals, true)
c.Check(meta.CanBeContinuous, check.Equals, true)
c.Check(meta.Interval, check.Equals, time.Duration(0))
c.Check(meta.NextContinuous, check.Equals, time.Time{})
c.Check(meta.MaxRunning, check.Equals, 0)
c.Check(meta.MaxAttemptsReturned, check.Equals, 0)
c.Check(meta.NextWorkSpecName, check.Equals, "")
c.Check(meta.AvailableCount, check.Equals, 0)
c.Check(meta.PendingCount, check.Equals, 0)
err = spec.SetMeta(coordinate.WorkSpecMeta{
Priority: 10,
Weight: 100,
Paused: true,
Continuous: false,
CanBeContinuous: false,
Interval: time.Duration(60) * time.Second,
MaxRunning: 10,
MaxAttemptsReturned: 1,
NextWorkSpecName: "then",
AvailableCount: 100,
PendingCount: 50,
})
c.Assert(err, check.IsNil)
meta, err = spec.Meta(false)
c.Assert(err, check.IsNil)
c.Check(meta.Priority, check.Equals, 10)
c.Check(meta.Weight, check.Equals, 100)
c.Check(meta.Paused, check.Equals, true)
c.Check(meta.Continuous, check.Equals, false)
// Cannot clear "can be continuous" flag
c.Check(meta.CanBeContinuous, check.Equals, true)
c.Check(meta.Interval, check.Equals, time.Duration(60)*time.Second)
c.Check(meta.NextContinuous, check.Equals, time.Time{})
c.Check(meta.MaxRunning, check.Equals, 10)
c.Check(meta.MaxAttemptsReturned, check.Equals, 1)
// Cannot change following work spec
c.Check(meta.NextWorkSpecName, check.Equals, "")
// Cannot set the counts
c.Check(meta.AvailableCount, check.Equals, 0)
c.Check(meta.PendingCount, check.Equals, 0)
}