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 }