github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/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  	"github.com/juju/juju/cloudconfig/instancecfg"
    10  	"github.com/juju/juju/constraints"
    11  	"github.com/juju/juju/environs"
    12  	"github.com/juju/juju/environs/config"
    13  	"github.com/juju/juju/environs/simplestreams"
    14  	"github.com/juju/juju/environs/storage"
    15  	"github.com/juju/juju/instance"
    16  	"github.com/juju/juju/network"
    17  	"github.com/juju/juju/provider/common"
    18  	jujustorage "github.com/juju/juju/storage"
    19  	"github.com/juju/juju/tools"
    20  )
    21  
    22  type allInstancesFunc func() ([]instance.Instance, error)
    23  type startInstanceFunc func(string, constraints.Value, []string, tools.List, *instancecfg.InstanceConfig) (instance.Instance, *instance.HardwareCharacteristics, []network.InterfaceInfo, error)
    24  type stopInstancesFunc func([]instance.Id) error
    25  type getToolsSourcesFunc func() ([]simplestreams.DataSource, error)
    26  type configFunc func() *config.Config
    27  type setConfigFunc func(*config.Config) error
    28  
    29  type mockEnviron struct {
    30  	storage          storage.Storage
    31  	allInstances     allInstancesFunc
    32  	startInstance    startInstanceFunc
    33  	stopInstances    stopInstancesFunc
    34  	getToolsSources  getToolsSourcesFunc
    35  	config           configFunc
    36  	setConfig        setConfigFunc
    37  	storageProviders jujustorage.StaticProviderRegistry
    38  	environs.Environ // stub out other methods with panics
    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  
    49  func (env *mockEnviron) BootstrapMessage() string {
    50  	return "Some message"
    51  }
    52  
    53  func (env *mockEnviron) StartInstance(args environs.StartInstanceParams) (*environs.StartInstanceResult, error) {
    54  	inst, hw, networkInfo, err := env.startInstance(
    55  		args.Placement,
    56  		args.Constraints,
    57  		nil,
    58  		args.Tools,
    59  		args.InstanceConfig,
    60  	)
    61  	if err != nil {
    62  		return nil, err
    63  	}
    64  	return &environs.StartInstanceResult{
    65  		Instance:    inst,
    66  		Hardware:    hw,
    67  		NetworkInfo: networkInfo,
    68  	}, nil
    69  }
    70  
    71  func (env *mockEnviron) StopInstances(ids ...instance.Id) error {
    72  	return env.stopInstances(ids)
    73  }
    74  
    75  func (env *mockEnviron) Config() *config.Config {
    76  	return env.config()
    77  }
    78  
    79  func (env *mockEnviron) SetConfig(cfg *config.Config) error {
    80  	if env.setConfig != nil {
    81  		return env.setConfig(cfg)
    82  	}
    83  	return nil
    84  }
    85  
    86  func (env *mockEnviron) GetToolsSources() ([]simplestreams.DataSource, error) {
    87  	if env.getToolsSources != nil {
    88  		return env.getToolsSources()
    89  	}
    90  	datasource := storage.NewStorageSimpleStreamsDataSource("test cloud storage", env.Storage(), storage.BaseToolsPath, simplestreams.SPECIFIC_CLOUD_DATA, false)
    91  	return []simplestreams.DataSource{datasource}, nil
    92  }
    93  
    94  func (env *mockEnviron) StorageProviderTypes() ([]jujustorage.ProviderType, error) {
    95  	return env.storageProviders.StorageProviderTypes()
    96  }
    97  
    98  func (env *mockEnviron) StorageProvider(t jujustorage.ProviderType) (jujustorage.Provider, error) {
    99  	return env.storageProviders.StorageProvider(t)
   100  }
   101  
   102  type availabilityZonesFunc func() ([]common.AvailabilityZone, error)
   103  type instanceAvailabilityZoneNamesFunc func([]instance.Id) ([]string, error)
   104  
   105  type mockZonedEnviron struct {
   106  	mockEnviron
   107  	availabilityZones             availabilityZonesFunc
   108  	instanceAvailabilityZoneNames instanceAvailabilityZoneNamesFunc
   109  }
   110  
   111  func (env *mockZonedEnviron) AvailabilityZones() ([]common.AvailabilityZone, error) {
   112  	return env.availabilityZones()
   113  }
   114  
   115  func (env *mockZonedEnviron) InstanceAvailabilityZoneNames(ids []instance.Id) ([]string, error) {
   116  	return env.instanceAvailabilityZoneNames(ids)
   117  }
   118  
   119  type mockInstance struct {
   120  	id                string
   121  	addresses         []network.Address
   122  	addressesErr      error
   123  	dnsName           string
   124  	dnsNameErr        error
   125  	instance.Instance // stub out other methods with panics
   126  }
   127  
   128  func (inst *mockInstance) Id() instance.Id {
   129  	return instance.Id(inst.id)
   130  }
   131  
   132  func (inst *mockInstance) Addresses() ([]network.Address, error) {
   133  	return inst.addresses, inst.addressesErr
   134  }
   135  
   136  type mockStorage struct {
   137  	storage.Storage
   138  	putErr       error
   139  	removeAllErr error
   140  }
   141  
   142  func (stor *mockStorage) Put(name string, reader io.Reader, size int64) error {
   143  	if stor.putErr != nil {
   144  		return stor.putErr
   145  	}
   146  	return stor.Storage.Put(name, reader, size)
   147  }
   148  
   149  func (stor *mockStorage) RemoveAll() error {
   150  	if stor.removeAllErr != nil {
   151  		return stor.removeAllErr
   152  	}
   153  	return stor.Storage.RemoveAll()
   154  }
   155  
   156  type mockAvailabilityZone struct {
   157  	name      string
   158  	available bool
   159  }
   160  
   161  func (z *mockAvailabilityZone) Name() string {
   162  	return z.name
   163  }
   164  
   165  func (z *mockAvailabilityZone) Available() bool {
   166  	return z.available
   167  }