github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/provider/common/mock_test.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package common_test
     5  
     6  import (
     7  	"io"
     8  
     9  	"launchpad.net/juju-core/constraints"
    10  	"launchpad.net/juju-core/environs"
    11  	"launchpad.net/juju-core/environs/cloudinit"
    12  	"launchpad.net/juju-core/environs/config"
    13  	"launchpad.net/juju-core/environs/simplestreams"
    14  	"launchpad.net/juju-core/environs/storage"
    15  	"launchpad.net/juju-core/instance"
    16  	"launchpad.net/juju-core/tools"
    17  )
    18  
    19  type allInstancesFunc func() ([]instance.Instance, error)
    20  type startInstanceFunc func(constraints.Value, tools.List, *cloudinit.MachineConfig) (instance.Instance, *instance.HardwareCharacteristics, error)
    21  type stopInstancesFunc func([]instance.Instance) error
    22  type getToolsSourcesFunc func() ([]simplestreams.DataSource, error)
    23  type configFunc func() *config.Config
    24  type setConfigFunc func(*config.Config) error
    25  
    26  type mockEnviron struct {
    27  	storage          storage.Storage
    28  	allInstances     allInstancesFunc
    29  	startInstance    startInstanceFunc
    30  	stopInstances    stopInstancesFunc
    31  	getToolsSources  getToolsSourcesFunc
    32  	config           configFunc
    33  	setConfig        setConfigFunc
    34  	environs.Environ // stub out other methods with panics
    35  }
    36  
    37  func (*mockEnviron) Name() string {
    38  	return "mock environment"
    39  }
    40  
    41  func (env *mockEnviron) Storage() storage.Storage {
    42  	return env.storage
    43  }
    44  
    45  func (env *mockEnviron) AllInstances() ([]instance.Instance, error) {
    46  	return env.allInstances()
    47  }
    48  func (env *mockEnviron) StartInstance(
    49  	cons constraints.Value, possibleTools tools.List, mcfg *cloudinit.MachineConfig,
    50  ) (
    51  	instance.Instance, *instance.HardwareCharacteristics, error,
    52  ) {
    53  	return env.startInstance(cons, possibleTools, mcfg)
    54  }
    55  
    56  func (env *mockEnviron) StopInstances(instances []instance.Instance) error {
    57  	return env.stopInstances(instances)
    58  }
    59  
    60  func (env *mockEnviron) Config() *config.Config {
    61  	return env.config()
    62  }
    63  
    64  func (env *mockEnviron) SetConfig(cfg *config.Config) error {
    65  	if env.setConfig != nil {
    66  		return env.setConfig(cfg)
    67  	}
    68  	return nil
    69  }
    70  
    71  func (env *mockEnviron) GetToolsSources() ([]simplestreams.DataSource, error) {
    72  	if env.getToolsSources != nil {
    73  		return env.getToolsSources()
    74  	}
    75  	datasource := storage.NewStorageSimpleStreamsDataSource("test cloud storage", env.Storage(), storage.BaseToolsPath)
    76  	return []simplestreams.DataSource{datasource}, nil
    77  }
    78  
    79  type mockInstance struct {
    80  	id                string
    81  	instance.Instance // stub out other methods with panics
    82  }
    83  
    84  func (inst *mockInstance) Id() instance.Id {
    85  	return instance.Id(inst.id)
    86  }
    87  
    88  type mockStorage struct {
    89  	storage.Storage
    90  	putErr       error
    91  	removeAllErr error
    92  }
    93  
    94  func (stor *mockStorage) Put(name string, reader io.Reader, size int64) error {
    95  	if stor.putErr != nil {
    96  		return stor.putErr
    97  	}
    98  	return stor.Storage.Put(name, reader, size)
    99  }
   100  
   101  func (stor *mockStorage) RemoveAll() error {
   102  	if stor.removeAllErr != nil {
   103  		return stor.removeAllErr
   104  	}
   105  	return stor.Storage.RemoveAll()
   106  }