本文整理匯總了Golang中github.com/juju/juju/worker/retrystrategy.Manifold函數的典型用法代碼示例。如果您正苦於以下問題:Golang Manifold函數的具體用法?Golang Manifold怎麽用?Golang Manifold使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了Manifold函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: TestInputs
func (s *ManifoldSuite) TestInputs(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentName: "wut",
APICallerName: "exactly",
})
c.Check(manifold.Inputs, jc.DeepEquals, []string{"wut", "exactly"})
}
示例2: TestStartFacadeValueError
func (s *ManifoldSuite) TestStartFacadeValueError(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentApiManifoldConfig: s.stubAgentApiManifoldConfig,
NewFacade: s.newFacade(&fakeFacadeErr{err: errors.New("blop")}),
})
w, err := manifold.Start(s.getResource)
c.Assert(errors.Cause(err), gc.ErrorMatches, "blop")
c.Assert(w, gc.IsNil)
}
示例3: TestStartFacadeValueError
func (s *ManifoldSuite) TestStartFacadeValueError(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentName: "agent",
APICallerName: "api-caller",
NewFacade: s.newFacade(&fakeFacadeErr{err: errors.New("blop")}),
})
w, err := manifold.Start(s.context)
c.Assert(errors.Cause(err), gc.ErrorMatches, "blop")
c.Assert(w, gc.IsNil)
}
示例4: TestStartWorkerError
func (s *ManifoldSuite) TestStartWorkerError(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentApiManifoldConfig: s.stubAgentApiManifoldConfig,
NewFacade: s.newFacade(&fakeFacade{}),
NewWorker: s.newWorker(nil, errors.New("blam")),
})
w, err := manifold.Start(s.getResource)
c.Assert(err, gc.ErrorMatches, "blam")
c.Assert(w, gc.IsNil)
}
示例5: TestStartWorkerError
func (s *ManifoldSuite) TestStartWorkerError(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentName: "agent",
APICallerName: "api-caller",
NewFacade: s.newFacade(&fakeFacade{}),
NewWorker: s.newWorker(nil, errors.New("blam")),
})
w, err := manifold.Start(s.context)
c.Assert(err, gc.ErrorMatches, "blam")
c.Assert(w, gc.IsNil)
}
示例6: TestStartMissingAgent
func (s *ManifoldSuite) TestStartMissingAgent(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentApiManifoldConfig: s.stubAgentApiManifoldConfig,
})
getResource := dt.StubGetResource(dt.StubResources{
"wut": dt.StubResource{Error: dependency.ErrMissing},
})
w, err := manifold.Start(getResource)
c.Assert(errors.Cause(err), gc.Equals, dependency.ErrMissing)
c.Assert(w, gc.IsNil)
}
示例7: TestStartSuccess
func (s *ManifoldSuite) TestStartSuccess(c *gc.C) {
fakeWorker := &fakeWorker{}
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentApiManifoldConfig: s.stubAgentApiManifoldConfig,
NewFacade: s.newFacade(&fakeFacade{}),
NewWorker: s.newWorker(fakeWorker, nil),
})
w, err := manifold.Start(s.getResource)
c.Assert(err, jc.ErrorIsNil)
c.Assert(w, gc.Equals, fakeWorker)
}
示例8: TestStartSuccess
func (s *ManifoldSuite) TestStartSuccess(c *gc.C) {
fakeWorker := &fakeWorker{}
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentName: "agent",
APICallerName: "api-caller",
NewFacade: s.newFacade(&fakeFacade{}),
NewWorker: s.newWorker(fakeWorker, nil),
})
w, err := manifold.Start(s.context)
c.Assert(err, jc.ErrorIsNil)
c.Assert(w, gc.Equals, fakeWorker)
}
示例9: TestStartMissingAPI
func (s *ManifoldSuite) TestStartMissingAPI(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentName: "agent",
APICallerName: "api-caller",
})
context := dt.StubContext(nil, map[string]interface{}{
"agent": s.fakeAgent,
"api-caller": dependency.ErrMissing,
})
w, err := manifold.Start(context)
c.Assert(errors.Cause(err), gc.Equals, dependency.ErrMissing)
c.Assert(w, gc.IsNil)
}
示例10: TestOutputBadTarget
func (s *ManifoldSuite) TestOutputBadTarget(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentApiManifoldConfig: s.stubAgentApiManifoldConfig,
NewFacade: s.newFacade(&fakeFacade{}),
NewWorker: retrystrategy.NewRetryStrategyWorker,
})
w, err := manifold.Start(s.getResource)
s.AddCleanup(func(c *gc.C) { w.Kill() })
c.Assert(err, jc.ErrorIsNil)
var out interface{}
err = manifold.Output(w, &out)
c.Assert(err.Error(), gc.Equals, "out should be a *params.RetryStrategy; is *interface {}")
}
示例11: TestOutputBadInput
func (s *ManifoldSuite) TestOutputBadInput(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentApiManifoldConfig: s.stubAgentApiManifoldConfig,
NewFacade: s.newFacade(&fakeFacade{}),
NewWorker: s.newWorker(&fakeWorker{}, nil),
})
w, err := manifold.Start(s.getResource)
c.Assert(err, jc.ErrorIsNil)
var out params.RetryStrategy
err = manifold.Output(w, &out)
c.Assert(out, gc.Equals, params.RetryStrategy{})
c.Assert(err.Error(), gc.Equals, "in should be a *retryStrategyWorker; is *retrystrategy_test.fakeWorker")
}
示例12: TestOutputBadInput
func (s *ManifoldSuite) TestOutputBadInput(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentName: "agent",
APICallerName: "api-caller",
NewFacade: s.newFacade(&fakeFacade{}),
NewWorker: s.newWorker(&fakeWorker{}, nil),
})
w, err := manifold.Start(s.context)
c.Assert(err, jc.ErrorIsNil)
var out params.RetryStrategy
err = manifold.Output(w, &out)
c.Assert(out, gc.Equals, params.RetryStrategy{})
c.Assert(err.Error(), gc.Equals, "in should be a *retryStrategyWorker; is *retrystrategy_test.fakeWorker")
}
示例13: TestOutputSuccess
func (s *ManifoldSuite) TestOutputSuccess(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentApiManifoldConfig: s.stubAgentApiManifoldConfig,
NewFacade: s.newFacade(&fakeFacade{}),
NewWorker: retrystrategy.NewRetryStrategyWorker,
})
w, err := manifold.Start(s.getResource)
s.AddCleanup(func(c *gc.C) { w.Kill() })
c.Assert(err, jc.ErrorIsNil)
var out params.RetryStrategy
err = manifold.Output(w, &out)
c.Assert(err, jc.ErrorIsNil)
c.Assert(out, gc.Equals, fakeStrategy)
}
示例14: TestOutputSuccess
func (s *ManifoldSuite) TestOutputSuccess(c *gc.C) {
manifold := retrystrategy.Manifold(retrystrategy.ManifoldConfig{
AgentName: "agent",
APICallerName: "api-caller",
NewFacade: s.newFacade(&fakeFacade{}),
NewWorker: retrystrategy.NewRetryStrategyWorker,
})
w, err := manifold.Start(s.context)
s.AddCleanup(func(c *gc.C) { w.Kill() })
c.Assert(err, jc.ErrorIsNil)
var out params.RetryStrategy
err = manifold.Output(w, &out)
c.Assert(err, jc.ErrorIsNil)
c.Assert(out, gc.Equals, fakeStrategy)
}
示例15: Manifolds
// Manifolds returns a set of co-configured manifolds covering the various
// responsibilities of a standalone unit agent. It also accepts the logSource
// argument because we haven't figured out how to thread all the logging bits
// through a dependency engine yet.
//
// Thou Shalt Not Use String Literals In This Function. Or Else.
func Manifolds(config ManifoldsConfig) dependency.Manifolds {
// connectFilter exists to let us retry api connections immediately
// on password change, rather than causing the dependency engine to
// wait for a while.
connectFilter := func(err error) error {
cause := errors.Cause(err)
if cause == apicaller.ErrChangedPassword {
return dependency.ErrBounce
} else if cause == apicaller.ErrConnectImpossible {
return worker.ErrTerminateAgent
}
return err
}
return dependency.Manifolds{
// The agent manifold references the enclosing agent, and is the
// foundation stone on which most other manifolds ultimately depend.
// (Currently, that is "all manifolds", but consider a shared clock.)
agentName: agent.Manifold(config.Agent),
// The machine lock manifold is a thin concurrent wrapper around an
// FSLock in an agreed location. We expect it to be replaced with an
// in-memory lock when the unit agent moves into the machine agent.
machineLockName: machinelock.Manifold(machinelock.ManifoldConfig{
AgentName: agentName,
}),
// The api-config-watcher manifold monitors the API server
// addresses in the agent config and bounces when they
// change. It's required as part of model migrations.
apiConfigWatcherName: apiconfigwatcher.Manifold(apiconfigwatcher.ManifoldConfig{
AgentName: agentName,
AgentConfigChanged: config.AgentConfigChanged,
}),
// The api caller is a thin concurrent wrapper around a connection
// to some API server. It's used by many other manifolds, which all
// select their own desired facades. It will be interesting to see
// how this works when we consolidate the agents; might be best to
// handle the auth changes server-side..?
apiCallerName: apicaller.Manifold(apicaller.ManifoldConfig{
AgentName: agentName,
APIConfigWatcherName: apiConfigWatcherName,
APIOpen: apicaller.APIOpen,
NewConnection: apicaller.ScaryConnect,
Filter: connectFilter,
}),
// The log sender is a leaf worker that sends log messages to some
// API server, when configured so to do. We should only need one of
// these in a consolidated agent.
logSenderName: logsender.Manifold(logsender.ManifoldConfig{
APICallerName: apiCallerName,
LogSource: config.LogSource,
}),
// The upgrader is a leaf worker that returns a specific error type
// recognised by the unit agent, causing other workers to be stopped
// and the agent to be restarted running the new tools. We should only
// need one of these in a consolidated agent, but we'll need to be
// careful about behavioural differences, and interactions with the
// upgradesteps worker.
upgraderName: upgrader.Manifold(upgrader.ManifoldConfig{
AgentName: agentName,
APICallerName: apiCallerName,
}),
migrationFortressName: fortress.Manifold(),
// The migration minion handles the agent side aspects of model migrations.
migrationMinionName: migrationminion.Manifold(migrationminion.ManifoldConfig{
AgentName: agentName,
APICallerName: apiCallerName,
FortressName: migrationFortressName,
NewFacade: migrationminion.NewFacade,
NewWorker: migrationminion.NewWorker,
}),
// The logging config updater is a leaf worker that indirectly
// controls the messages sent via the log sender according to
// changes in environment config. We should only need one of
// these in a consolidated agent.
loggingConfigUpdaterName: logger.Manifold(logger.ManifoldConfig{
AgentName: agentName,
APICallerName: apiCallerName,
}),
// The api address updater is a leaf worker that rewrites agent config
// as the controller addresses change. We should only need one of
// these in a consolidated agent.
apiAddressUpdaterName: apiaddressupdater.Manifold(apiaddressupdater.ManifoldConfig{
//.........這裏部分代碼省略.........