1
// Copyright 2014 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
4
package diskmanager_test
10
jc "github.com/juju/testing/checkers"
11
gc "gopkg.in/check.v1"
12
"gopkg.in/juju/names.v2"
14
"github.com/juju/juju/api/base/testing"
15
"github.com/juju/juju/api/diskmanager"
16
"github.com/juju/juju/apiserver/params"
17
"github.com/juju/juju/storage"
18
coretesting "github.com/juju/juju/testing"
21
var _ = gc.Suite(&DiskManagerSuite{})
23
type DiskManagerSuite struct {
27
func (s *DiskManagerSuite) TestSetMachineBlockDevices(c *gc.C) {
28
devices := []storage.BlockDevice{{
33
UUID: "asdadasdasdas",
37
apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
38
c.Check(objType, gc.Equals, "DiskManager")
39
c.Check(version, gc.Equals, 0)
40
c.Check(id, gc.Equals, "")
41
c.Check(request, gc.Equals, "SetMachineBlockDevices")
42
c.Check(arg, gc.DeepEquals, params.SetMachineBlockDevices{
43
MachineBlockDevices: []params.MachineBlockDevices{{
44
Machine: "machine-123",
45
BlockDevices: devices,
48
c.Assert(result, gc.FitsTypeOf, ¶ms.ErrorResults{})
49
*(result.(*params.ErrorResults)) = params.ErrorResults{
50
Results: []params.ErrorResult{{
58
st := diskmanager.NewState(apiCaller, names.NewMachineTag("123"))
59
err := st.SetMachineBlockDevices(devices)
60
c.Check(err, jc.ErrorIsNil)
61
c.Check(callCount, gc.Equals, 1)
64
func (s *DiskManagerSuite) TestSetMachineBlockDevicesNil(c *gc.C) {
66
apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
67
c.Check(arg, gc.DeepEquals, params.SetMachineBlockDevices{
68
MachineBlockDevices: []params.MachineBlockDevices{{
69
Machine: "machine-123",
72
c.Assert(result, gc.FitsTypeOf, ¶ms.ErrorResults{})
73
*(result.(*params.ErrorResults)) = params.ErrorResults{
74
Results: []params.ErrorResult{{
81
st := diskmanager.NewState(apiCaller, names.NewMachineTag("123"))
82
err := st.SetMachineBlockDevices(nil)
83
c.Check(err, jc.ErrorIsNil)
84
c.Check(callCount, gc.Equals, 1)
87
func (s *DiskManagerSuite) TestSetMachineBlockDevicesClientError(c *gc.C) {
88
apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
89
return errors.New("blargh")
91
st := diskmanager.NewState(apiCaller, names.NewMachineTag("123"))
92
err := st.SetMachineBlockDevices(nil)
93
c.Check(err, gc.ErrorMatches, "blargh")
96
func (s *DiskManagerSuite) TestSetMachineBlockDevicesServerError(c *gc.C) {
97
apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
98
*(result.(*params.ErrorResults)) = params.ErrorResults{
99
Results: []params.ErrorResult{{
100
Error: ¶ms.Error{Message: "MSG", Code: "621"},
105
st := diskmanager.NewState(apiCaller, names.NewMachineTag("123"))
106
err := st.SetMachineBlockDevices(nil)
107
c.Check(err, gc.ErrorMatches, "MSG")
110
func (s *DiskManagerSuite) TestSetMachineBlockDevicesResultCountInvalid(c *gc.C) {
111
for _, n := range []int{0, 2} {
112
apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, result interface{}) error {
113
var results []params.ErrorResult
114
for i := 0; i < n; i++ {
115
results = append(results, params.ErrorResult{
116
Error: ¶ms.Error{Message: "MSG", Code: "621"},
119
*(result.(*params.ErrorResults)) = params.ErrorResults{Results: results}
122
st := diskmanager.NewState(apiCaller, names.NewMachineTag("123"))
123
err := st.SetMachineBlockDevices(nil)
124
c.Check(err, gc.ErrorMatches, fmt.Sprintf("expected 1 result, got %d", n))