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  }