github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/cmd/jujud/agent/imagemetadataworker_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package agent 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/api/imagemetadata" 11 "github.com/juju/juju/environs" 12 "github.com/juju/juju/environs/simplestreams" 13 "github.com/juju/juju/state" 14 "github.com/juju/juju/worker" 15 ) 16 17 // MachineMockProviderSuite runs worker tests that depend 18 // on provider that has cloud region support. 19 type MachineMockProviderSuite struct { 20 commonMachineSuite 21 } 22 23 var _ = gc.Suite(&MachineMockProviderSuite{}) 24 25 func (s *MachineMockProviderSuite) TestMachineAgentRunsMetadataWorker(c *gc.C) { 26 // Patch out the worker func before starting the agent. 27 started := make(chan struct{}) 28 newWorker := func(cl *imagemetadata.Client) worker.Worker { 29 close(started) 30 return worker.NewNoOpWorker() 31 } 32 s.PatchValue(&newMetadataUpdater, newWorker) 33 s.PatchValue(&newEnvirons, func(environs.OpenParams) (environs.Environ, error) { 34 return &dummyEnviron{}, nil 35 }) 36 37 // Start the machine agent. 38 m, _, _ := s.primeAgent(c, state.JobManageModel) 39 a := s.newAgent(c, m) 40 go func() { c.Check(a.Run(nil), jc.ErrorIsNil) }() 41 defer func() { c.Check(a.Stop(), jc.ErrorIsNil) }() 42 43 s.assertChannelActive(c, started, "metadata update worker to start") 44 } 45 46 // dummyEnviron is an environment with region support. 47 type dummyEnviron struct { 48 environs.Environ 49 } 50 51 // Region is specified in the HasRegion interface. 52 func (e *dummyEnviron) Region() (simplestreams.CloudSpec, error) { 53 return simplestreams.CloudSpec{ 54 Region: "dummy_region", 55 Endpoint: "https://anywhere", 56 }, nil 57 }