~rogpeppe/juju-core/438-local-instance-Addresses

« back to all changes in this revision

Viewing changes to provider/common/mock_test.go

  • Committer: Tarmac
  • Author(s): William Reade
  • Date: 2013-10-02 10:38:04 UTC
  • mfrom: (1915.1.3 juju-core)
  • Revision ID: tarmac-20131002103804-zxlnv7ik17unxc3p
[r=fwereade] provider/common: Destroy, and tests

Added a common implementation of Destroy, and tests for Bootstrap which had
somehow never been written. Also drive-by removed the machineId arg from
consideration when bootstrapping, because, WTF... a non-0 bootstrap machine
would break *everything*.

https://codereview.appspot.com/14254043/

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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/storage"
 
13
        "launchpad.net/juju-core/instance"
 
14
        "launchpad.net/juju-core/tools"
 
15
)
 
16
 
 
17
type allInstancesFunc func() ([]instance.Instance, error)
 
18
type startInstanceFunc func(constraints.Value, tools.List, *cloudinit.MachineConfig) (instance.Instance, *instance.HardwareCharacteristics, error)
 
19
type stopInstancesFunc func([]instance.Instance) error
 
20
 
 
21
type mockEnviron struct {
 
22
        storage          storage.Storage
 
23
        allInstances     allInstancesFunc
 
24
        startInstance    startInstanceFunc
 
25
        stopInstances    stopInstancesFunc
 
26
        environs.Environ // stub out other methods with panics
 
27
}
 
28
 
 
29
func (*mockEnviron) Name() string {
 
30
        return "mock environment"
 
31
}
 
32
 
 
33
func (env *mockEnviron) Storage() storage.Storage {
 
34
        return env.storage
 
35
}
 
36
 
 
37
func (env *mockEnviron) AllInstances() ([]instance.Instance, error) {
 
38
        return env.allInstances()
 
39
}
 
40
func (env *mockEnviron) StartInstance(
 
41
        cons constraints.Value, possibleTools tools.List, mcfg *cloudinit.MachineConfig,
 
42
) (
 
43
        instance.Instance, *instance.HardwareCharacteristics, error,
 
44
) {
 
45
        return env.startInstance(cons, possibleTools, mcfg)
 
46
}
 
47
 
 
48
func (env *mockEnviron) StopInstances(instances []instance.Instance) error {
 
49
        return env.stopInstances(instances)
 
50
}
 
51
 
 
52
type mockInstance struct {
 
53
        id                string
 
54
        instance.Instance // stub out other methods with panics
 
55
}
 
56
 
 
57
func (inst *mockInstance) Id() instance.Id {
 
58
        return instance.Id(inst.id)
 
59
}
 
60
 
 
61
type mockStorage struct {
 
62
        storage.Storage
 
63
        putErr       error
 
64
        removeAllErr error
 
65
}
 
66
 
 
67
func (stor *mockStorage) Put(name string, reader io.Reader, size int64) error {
 
68
        if stor.putErr != nil {
 
69
                return stor.putErr
 
70
        }
 
71
        return stor.Storage.Put(name, reader, size)
 
72
}
 
73
 
 
74
func (stor *mockStorage) RemoveAll() error {
 
75
        if stor.removeAllErr != nil {
 
76
                return stor.removeAllErr
 
77
        }
 
78
        return stor.Storage.RemoveAll()
 
79
}