本文整理汇总了Golang中github.com/juju/juju/cmd/jujud/agent/engine.Housing类的典型用法代码示例。如果您正苦于以下问题:Golang Housing类的具体用法?Golang Housing怎么用?Golang Housing使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Housing类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestOccupyLocked
func (*HousingSuite) TestOccupyLocked(c *gc.C) {
manifold := engine.Housing{
Occupy: "fortress",
}.Decorate(dependency.Manifold{})
abort := make(chan struct{})
context := dt.StubContext(abort, map[string]interface{}{
"fortress": newGuest(false),
})
// start the start func
started := make(chan struct{})
go func() {
defer close(started)
worker, err := manifold.Start(context)
c.Check(worker, gc.IsNil)
c.Check(errors.Cause(err), gc.Equals, fortress.ErrAborted)
}()
// check it's blocked...
select {
case <-time.After(coretesting.ShortWait):
case <-started:
c.Errorf("Start finished early")
}
// ...until the context is aborted.
close(abort)
select {
case <-started:
case <-time.After(coretesting.LongWait):
c.Fatalf("timed out")
}
}
示例2: TestOccupyBadType
func (*HousingSuite) TestOccupyBadType(c *gc.C) {
manifold := engine.Housing{
Occupy: "fortress",
}.Decorate(dependency.Manifold{})
context := dt.StubContext(nil, map[string]interface{}{
"fortress": false,
})
worker, err := manifold.Start(context)
c.Check(worker, gc.IsNil)
c.Check(err, gc.ErrorMatches, "cannot set false into .*")
}
示例3: TestOccupyMissing
func (*HousingSuite) TestOccupyMissing(c *gc.C) {
manifold := engine.Housing{
Occupy: "fortress",
}.Decorate(dependency.Manifold{})
context := dt.StubContext(nil, map[string]interface{}{
"fortress": dependency.ErrMissing,
})
worker, err := manifold.Start(context)
c.Check(worker, gc.IsNil)
c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing)
}
示例4: TestFlagBadValue
func (*HousingSuite) TestFlagBadValue(c *gc.C) {
manifold := engine.Housing{
Flags: []string{"flag"},
}.Decorate(dependency.Manifold{})
context := dt.StubContext(nil, map[string]interface{}{
"flag": flag{false},
})
worker, err := manifold.Start(context)
c.Check(worker, gc.IsNil)
c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing)
}
示例5: TestFlagBlocksOccupy
func (*HousingSuite) TestFlagBlocksOccupy(c *gc.C) {
manifold := engine.Housing{
Flags: []string{"flag"},
Occupy: "fortress",
}.Decorate(dependency.Manifold{})
context := dt.StubContext(nil, map[string]interface{}{
"flag": dependency.ErrMissing,
"fortress": errors.New("never happen"),
})
worker, err := manifold.Start(context)
c.Check(worker, gc.IsNil)
c.Check(errors.Cause(err), gc.Equals, dependency.ErrMissing)
}
示例6: TestReplacesFilter
func (*HousingSuite) TestReplacesFilter(c *gc.C) {
expectIn := errors.New("tweedledum")
expectOut := errors.New("tweedledee")
manifold := engine.Housing{
Filter: func(in error) error {
c.Check(in, gc.Equals, expectIn)
return expectOut
},
}.Decorate(dependency.Manifold{
Filter: panicFilter,
})
out := manifold.Filter(expectIn)
c.Check(out, gc.Equals, expectOut)
}
示例7: TestOccupySuccess
func (*HousingSuite) TestOccupySuccess(c *gc.C) {
expectWorker := workertest.NewErrorWorker(errors.New("ignored"))
defer workertest.DirtyKill(c, expectWorker)
manifold := engine.Housing{
Occupy: "fortress",
}.Decorate(dependency.Manifold{
Start: func(dependency.Context) (worker.Worker, error) {
return expectWorker, nil
},
})
guest := newGuest(true)
context := dt.StubContext(nil, map[string]interface{}{
"fortress": guest,
})
// wait for the start func to complete
started := make(chan struct{})
go func() {
defer close(started)
worker, err := manifold.Start(context)
c.Check(worker, gc.Equals, expectWorker)
c.Check(err, jc.ErrorIsNil)
}()
select {
case <-started:
case <-time.After(coretesting.LongWait):
c.Fatalf("timed out")
}
// check the worker's alive
workertest.CheckAlive(c, expectWorker)
// check the visit keeps running...
select {
case <-time.After(coretesting.ShortWait):
case <-guest.done:
c.Fatalf("visit finished early")
}
// ...until the worker stops
expectWorker.Kill()
select {
case <-guest.done:
case <-time.After(coretesting.LongWait):
c.Fatalf("timed out")
}
}
示例8: TestFlagSuccess
func (*HousingSuite) TestFlagSuccess(c *gc.C) {
expectWorker := &struct{ worker.Worker }{}
manifold := engine.Housing{
Flags: []string{"flag"},
}.Decorate(dependency.Manifold{
Start: func(dependency.Context) (worker.Worker, error) {
return expectWorker, nil
},
})
context := dt.StubContext(nil, map[string]interface{}{
"flag": flag{true},
})
worker, err := manifold.Start(context)
c.Check(worker, gc.Equals, expectWorker)
c.Check(err, jc.ErrorIsNil)
}
示例9: TestEmptyHousingPopulatedManifold
func (*HousingSuite) TestEmptyHousingPopulatedManifold(c *gc.C) {
manifold := engine.Housing{}.Decorate(dependency.Manifold{
Inputs: []string{"x", "y", "z"},
Start: panicStart,
Output: panicOutput,
Filter: panicFilter,
})
c.Check(manifold.Inputs, jc.DeepEquals, []string{"x", "y", "z"})
c.Check(func() {
manifold.Start(nil)
}, gc.PanicMatches, "panicStart")
c.Check(func() {
manifold.Output(nil, nil)
}, gc.PanicMatches, "panicOutput")
c.Check(func() {
manifold.Filter(nil)
}, gc.PanicMatches, "panicFilter")
}